Initial public release of WII5 Buoy firmware
Firmware for an autonomous wave-measurement buoy (ATmega2560-based WII5 v2 board). Reads wave motion from a Sparton AHRS-M1/M2 IMU, samples GPS and battery state, and reports back over Iridium SBD satellite telemetry. Originally developed 2012-2024. This is the first public release. Code, documentation, and field-tested operating modes (Capture, Sleep, Position, ManualTest, SelfTest, LowBattery) are licensed under Apache 2.0 — see LICENSE and NOTICE. See README.md for an overview and build instructions, CONTRIBUTING.md for how to contribute, and DEPLOYMENTS.md for the field-deployment log.
This commit is contained in:
+506
@@ -0,0 +1,506 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
// Copyright (c) 2012-2024 Scott Penrose <scottp@dd.com.au> and WII5 Buoy contributors
|
||||
//
|
||||
// This file is part of WII5 Buoy firmware.
|
||||
// See LICENSE for full terms.
|
||||
|
||||
/**
|
||||
* @file WII5Data.h
|
||||
* @brief Shared data type definitions: enums, status codes, error codes.
|
||||
*/
|
||||
|
||||
#ifndef WII5Data_h
|
||||
#define WII5Data_h
|
||||
/*
|
||||
|
||||
WII5 - Data Structures
|
||||
|
||||
*/
|
||||
|
||||
#if !defined(__time_t_defined) // avoid conflict with newlib or other posix libc
|
||||
typedef unsigned long time_t;
|
||||
#endif
|
||||
|
||||
// Manual from Sh3d
|
||||
#define SH3D_TYPE_COUNTER uint32_t
|
||||
#define SH3D_TYPE_UNIQUEID uint64_t
|
||||
#define SH3D_TYPE_PACKET_TYPE uint8_t
|
||||
#define SH3D_TYPE_PACKET_VERSION uint8_t
|
||||
|
||||
|
||||
// Number of seconds in...
|
||||
#define WII5TIME_1WEEK (uint32_t)7*(uint32_t)24*(uint32_t)3600
|
||||
#define WII5TIME_1DAY (uint32_t)24*(uint32_t)3600
|
||||
#define WII5TIME_12HOUR (uint32_t)12*(uint32_t)3600
|
||||
#define WII5TIME_1HOUR (uint32_t)3600
|
||||
|
||||
/*
|
||||
|
||||
Basic: Max 50 bytes
|
||||
* Buoy ID (16 or 32 bit LSB of 64 bit NodeID)
|
||||
* Date time
|
||||
* Location Lat, Lon, Age (in minutes, 1 byte)
|
||||
* Battery Voltage, Age (in miutes)
|
||||
* Temperature Internal, Age (in minutes)
|
||||
* Sleep information - ?
|
||||
Full: Max 100 bytes
|
||||
* More data?
|
||||
Error:
|
||||
* Basic + Error Number and String
|
||||
|
||||
NOTE: Other types, such as Binary processed Maths come from the Maths CPU
|
||||
|
||||
*/
|
||||
|
||||
enum WII5SELFTEST_DEVICES {
|
||||
WII5STD_BOARD = 0,
|
||||
WII5STD_GPS,
|
||||
WII5STD_EEPROM,
|
||||
WII5STD_SD1,
|
||||
WII5STD_SD2,
|
||||
WII5STD_IRIDIUM,
|
||||
WII5STD_BATTERY,
|
||||
WII5STD_MATHS,
|
||||
WII5STD_RTC,
|
||||
WII5STD_SPARTON,
|
||||
WII5STD_18B20,
|
||||
WII5STD_BUTTON,
|
||||
WII5STD_LED,
|
||||
WII5STD_BUZZER,
|
||||
WII5STD_5VOLT,
|
||||
WII5STD_DEVICES
|
||||
};
|
||||
|
||||
enum WII5SELFTEST_STATUS {
|
||||
WII5STS_NONE, // Never run
|
||||
WII5STS_NC, // Not connected, not enabled, or not applicable
|
||||
WII5STS_SUCCESS, // SUCCCESS - literally nothing to report
|
||||
WII5STS_HUMAN, // HUMAN - we assume success, but need a human to confirm
|
||||
WII5STS_SLOW, // SLOW - SUCCESS in all ways, but slower than expected. Good for SD, Maths boot, GPS lock etc
|
||||
WII5STS_POWER, // Works, but power management may have failed (e.g. serial data still coming in when power off)
|
||||
WII5STS_TIMEOUT, // Literally timed out. No failure we can actually understand.
|
||||
WII5STS_OUTOFRANGE, // Out of range - voltage, or GPS or something out of range
|
||||
WII5STS_UNKNOWN, // Some sort of bad, unknown error
|
||||
};
|
||||
|
||||
enum WII5_DEVICES {
|
||||
WII5DEVICE_UNKNOWN,
|
||||
WII5DEVICE_WAVEBUOY, // This AVR - myself
|
||||
WII5DEVICE_MATHS, // Maths CPU on the Console
|
||||
WII5DEVICE_CONTROLLER, // Dedicated controller - e.g. handheld Wifi Accessed device
|
||||
WII5DEVICE_CLI, // Simple CLI Serial port controller
|
||||
WII5DEVICE_SERVER // Via the Server - e.g. remote command sent from Web Server
|
||||
};
|
||||
enum WII5_CONTROLLERS {
|
||||
WII5CONTROLLER_UNKNOWN,
|
||||
WII5CONTROLLER_DRIVER, // ie. See Driver below
|
||||
WII5CONTROLLER_CONFIG,
|
||||
WII5CONTROLLER_CONTROLLER,
|
||||
WII5CONTROLLER_COMMANDS,
|
||||
WII5CONTROLLER_DISPLAY,
|
||||
WII5CONTROLLER_HELP,
|
||||
WII5CONTROLLER_SETUP,
|
||||
WII5CONTROLLER_STRINGS,
|
||||
WII5CONTROLLER_METADATA,
|
||||
};
|
||||
|
||||
enum WII5_DRIVERS {
|
||||
WII5DRIVER_UNKNOWN,
|
||||
WII5DRIVER_GPS,
|
||||
WII5DRIVER_MATHS,
|
||||
WII5DRIVER_COMMS,
|
||||
WII5DRIVER_COMMS_IRIDIUM,
|
||||
WII5DRIVER_MPU9250,
|
||||
WII5DRIVER_POWER,
|
||||
WII5DRIVER_SPARTON,
|
||||
WII5DRIVER_STORAGE,
|
||||
WII5DRIVER_WEATHER_18B20,
|
||||
WII5DRIVER_BATTERY,
|
||||
WII5DRIVER_RADIO,
|
||||
WII5DRIVER_RTC,
|
||||
WII5DRIVER_WDT,
|
||||
};
|
||||
enum WII5_PORTS {
|
||||
WII5PORT_UNKNOWN,
|
||||
WII5PORT_RADIO, // Came from the radio, probably LoRa
|
||||
WII5PORT_COMMS, // Came from main comms, e.g. Iridium or similar
|
||||
WII5PORT_CONSOLE, // Via the console, probably an end user (or Maths)
|
||||
WII5PORT_MATHS // From the maths CPU - probably a processed command via web interface
|
||||
};
|
||||
|
||||
enum WII5_MATHSMODE {
|
||||
WII5MATHSMODE_UNKNOWN,
|
||||
WII5MATHSMODE_AUTO, // Run in auto mode, start and stop as normal
|
||||
WII5MATHSMODE_BUTTON, // Button was pressed, internally uses setHold
|
||||
WII5MATHSMODE_COMMS, // Communication data came in
|
||||
};
|
||||
|
||||
enum WII5_AREAS {
|
||||
WII5AREA_UNKNOWN,
|
||||
WII5AREA_WII5,
|
||||
WII5AREA_HELP,
|
||||
WII5AREA_SH3D
|
||||
};
|
||||
|
||||
enum WII5_COMMANDS {
|
||||
WII5COMMAND_NONE = 0, // Not yet parsed
|
||||
WII5COMMAND_NA = 1, // Parsed but no good
|
||||
WII5COMMAND_HELP = 10, // @WII5,help - see @Help
|
||||
|
||||
WII5COMMAND_LOG_DEBUG = 11, // Show debugging
|
||||
WII5COMMAND_LOG_DEFAULT = 12,// Normal level of logging
|
||||
WII5COMMAND_LOG_FATAL = 13, // Fatals only
|
||||
WII5COMMAND_LOG_ERROR = 14, // Error only
|
||||
WII5COMMAND_LOG_TEST = 19, // Test out the log
|
||||
|
||||
// Hello and ACK - mostly about chatting to Maths
|
||||
WII5COMMAND_HELLO = 100,
|
||||
WII5COMMAND_HELLOACK = 101,
|
||||
|
||||
// Do it !
|
||||
WII5COMMAND_RESET = 102, // Reset the AVR now
|
||||
WII5COMMAND_STORAGE_FORMAT = 103, // Format 1 or more storage devices, all data lost from there
|
||||
|
||||
WII5COMMAND_ECHO = 110,
|
||||
WII5COMMAND_PEOPLE = 111,
|
||||
|
||||
WII5COMMAND_BATTERY_START = 112,
|
||||
WII5COMMAND_WEATHER_READ = 113,
|
||||
WII5COMMAND_SET = 114,
|
||||
WII5COMMAND_SEND = 115,
|
||||
WII5COMMAND_WEATHER_TEST = 116,
|
||||
|
||||
// Set modes now - temporary until reboot etc
|
||||
WII5COMMAND_MODE_SELFTEST = 200,
|
||||
WII5COMMAND_MODE_MANUALTEST = 201,
|
||||
WII5COMMAND_MODE_SLEEP = 202,
|
||||
WII5COMMAND_MODE_DEFAULT = 203,
|
||||
WII5COMMAND_MODE_POSITION = 204,
|
||||
WII5COMMAND_MODE_CAPTURE = 205,
|
||||
|
||||
// Status and Dumps
|
||||
WII5COMMAND_STATUS = 300, // Optional Device Name
|
||||
WII5COMMAND_DUMP = 301,
|
||||
WII5COMMAND_WAITX = 302,
|
||||
WII5COMMAND_WAITY = 303,
|
||||
WII5COMMAND_WAITZ = 304,
|
||||
WII5COMMAND_WAITQ = 305,
|
||||
WII5COMMAND_WAITS = 306,
|
||||
|
||||
// Settings - stored
|
||||
WII5COMMAND_SETTING_LIST = 400, // List current settings
|
||||
WII5COMMAND_SETTING_DEVICEID = 401, // Include Device ID to change
|
||||
WII5COMMAND_SETTING_GPSTIMEOUT = 402, // GPSTimeout
|
||||
WII5COMMAND_SETTING_DEFAULTS = 403, // optionally add DeviceId
|
||||
WII5COMMAND_SETTING_RESET = 404, // Reset counters..... Danger
|
||||
WII5COMMAND_SETTING_MODE = 405, // Saved Mode
|
||||
WII5COMMAND_SETTING_TIME = 406,
|
||||
WII5COMMAND_SETTING_DISABLELOWBATTERY = 407,
|
||||
WII5COMMAND_SETTING_FLAGS = 408,
|
||||
WII5COMMAND_SETTING_CAPTUREOPTIONS = 409,
|
||||
WII5COMMAND_SETTING_POSITIONOPTIONS = 410,
|
||||
WII5COMMAND_SETTING_SLEEPOPTIONS = 411,
|
||||
WII5COMMAND_SETTING_BATTERYOPTIONS = 412,
|
||||
|
||||
// Device - MIsc
|
||||
WII5COMMAND_GPS_MODE = 500,
|
||||
WII5COMMAND_GPS_DUMP = 501,
|
||||
WII5COMMAND_GPS_PASSTHROUGH = 502,
|
||||
WII5COMMAND_GPS_DEBUG = 503,
|
||||
WII5COMMAND_GPS_START = 504,
|
||||
WII5COMMAND_GPS_STOP = 505,
|
||||
WII5COMMAND_GPS_TIME = 506,
|
||||
WII5COMMAND_GPS_POS = 507,
|
||||
WII5COMMAND_GPS_ACCURATE = 508,
|
||||
WII5COMMAND_SPARTON_MODE = 510,
|
||||
WII5COMMAND_SPARTON_DUMP = 511,
|
||||
WII5COMMAND_SPARTON_DEBUG = 513,
|
||||
WII5COMMAND_SPARTON_PASSTHROUGH = 514,
|
||||
WII5COMMAND_SPARTON_INFO = 515,
|
||||
|
||||
// Device - Maths
|
||||
WII5COMMAND_MATHS_START = 550, // Turn On maths
|
||||
WII5COMMAND_MATHS_STOP = 551, // Stop maths
|
||||
WII5COMMAND_MATHS_BEEP = 552, // Beep !
|
||||
WII5COMMAND_MATHS_RESTART = 553, // Maths informing that it is restarting
|
||||
WII5COMMAND_MATHS_SHUTDOWN = 554, // Maths being requested to shutdown
|
||||
WII5COMMAND_MATHS_HALT = 555, // Maths informing that it is now halting
|
||||
WII5COMMAND_MATHS_BOOTED = 556, // Maths tells us it is bootet d
|
||||
WII5COMMAND_MATHS_KEEPALIVE = 557, // Maths informing "keep alive" (aka not shut shutdown)
|
||||
WII5COMMAND_MATHS_WIFI_LOCAL = 558, // Tell Maths to try Local WIFI
|
||||
WII5COMMAND_MATHS_WIFI_WAP = 559, // Tell Maths to create a WAP
|
||||
WII5COMMAND_MATHS_SHELL = 560, // Send a direct shell command (can do anything).
|
||||
WII5COMMAND_MATHS_HOLD = 561, // Hold vs Keep Alive.... hmmmm
|
||||
WII5COMMAND_MATHS_FLIP = 562, // We are running all the time. Request a flip of the AVR
|
||||
|
||||
// TODO Create new file, append, run - so we can send multiple packets, to create arbitrary long file
|
||||
// WII5COMMAND_MATHS_S, // Send a direct shell command (can do anything).
|
||||
|
||||
WII5COMMAND_MATHS_REPROCESS = 563, // Send maths request to reprocess a file
|
||||
WII5COMMAND_MATHS_BUILD = 564, // Rebuild the maths code with some optional make directives
|
||||
WII5COMMAND_MATHS_FIRMWARE = 565, // Update the firmware, inputs will be 'dev', 'local', 'latest, 'vn.n' (version)
|
||||
WII5COMMAND_MATHS_PATCHLOCAL = 566, // Patch the local Firmware code and rebuild
|
||||
WII5COMMAND_MATHS_UNTIL = 567, // Set the UNTIL - forced power switch on control
|
||||
WII5COMMAND_MATHS_INFO = 568, // Show some info - what is the Maths CPU doing
|
||||
WII5COMMAND_MATHS_DO = 569,
|
||||
WII5COMMAND_MATHS_MAKE = 570,
|
||||
WII5COMMAND_MATHS_SCRIPT = 571, // Actually - use this to add to QUEUE
|
||||
WII5COMMAND_MATHS_DONE = 572, // Actually - use this to add to QUEUE
|
||||
WII5COMMAND_MATHS_RETURN = 573, // RETURN line Turn on or off
|
||||
|
||||
// Device - Storage cards
|
||||
WII5COMMAND_STORAGE_START = 580, // Mode 1,2,3,4
|
||||
WII5COMMAND_STORAGE_STOP = 581,
|
||||
WII5COMMAND_STORAGE_TESTFILE = 582, // TODO ls, chdir, get (filename) etc
|
||||
WII5COMMAND_STORAGE_CONSOLEFILE = 583,
|
||||
WII5COMMAND_STORAGE_SERIALFILE = 584,
|
||||
|
||||
WII5COMMAND_STORAGE_SETSTATUS = 589,
|
||||
WII5COMMAND_STORAGE_OFF = 590,
|
||||
WII5COMMAND_STORAGE_SD1 = 591,
|
||||
WII5COMMAND_STORAGE_SD2 = 592,
|
||||
WII5COMMAND_STORAGE_LIST = 593,
|
||||
WII5COMMAND_STORAGE_VIEW = 594,
|
||||
WII5COMMAND_STORAGE_RESULTS = 595,
|
||||
WII5COMMAND_STORAGE_DEBUG = 596,
|
||||
WII5COMMAND_STORAGE_STATUS = 597,
|
||||
WII5COMMAND_STORAGE_RAW = 598,
|
||||
WII5COMMAND_STORAGE_METADATA = 599,
|
||||
|
||||
// Device - Network / Radio
|
||||
WII5COMMAND_NETWORK_ECHO = 600,
|
||||
WII5COMMAND_NETWORK_ECHOACK = 601,
|
||||
WII5COMMAND_NETWORK_FAKEECHO = 602,
|
||||
WII5COMMAND_NETWORK_FAKEECHOACK = 603,
|
||||
|
||||
// Instant commands for modes
|
||||
WII5COMMAND_CAPTURE_START = 700,
|
||||
WII5COMMAND_CAPTURE_STOP = 701,
|
||||
WII5COMMAND_POSITION_START = 702,
|
||||
WII5COMMAND_POSITION_STOP = 703,
|
||||
WII5COMMAND_POSITION_PASSTHROUGH = 704,
|
||||
|
||||
WII5COMMAND_BINDATA_LIST = 800,
|
||||
WII5COMMAND_BINDATA_SPLIT = 801,
|
||||
|
||||
// Iridium (90x) & Communications (91x)
|
||||
WII5COMMAND_IRIDIUM_SEND = 901,
|
||||
WII5COMMAND_COMMUNICATIONS_DISABLED = 911,
|
||||
WII5COMMAND_COMMUNICATIONS_TEST = 912,
|
||||
WII5COMMAND_COMMUNICATIONS_START = 913,
|
||||
WII5COMMAND_COMMUNICATIONS_STOP = 914,
|
||||
WII5COMMAND_COMMUNICATIONS_SIGNAL = 915,
|
||||
};
|
||||
|
||||
// Results of a command request
|
||||
#define WII5_RESULT_MESSAGE 250
|
||||
enum WII5_RESULTS {
|
||||
WII5RESULTS_UNKNOWN = 0, // Not great, no idea what happened
|
||||
WII5RESULTS_SUCCESS = 1, // Success - everything worked as you expected
|
||||
WII5RESULTS_INVALID = 2, // Invalid - probably paramers, see message
|
||||
WII5RESULTS_RETRY = 3, // Retry later
|
||||
WII5RESULTS_ERROR = 4, // Error, see message
|
||||
WII5RESULTS_NOREPLY = 5, // This command can't get a reply - e.g. Help
|
||||
};
|
||||
|
||||
// Status of a Driver / Device
|
||||
enum WII5_STATUS {
|
||||
WII5STATUS_UNKNOWN,
|
||||
WII5STATUS_OFF,
|
||||
WII5STATUS_ON,
|
||||
WII5STATUS_ON_VALID,
|
||||
WII5STATUS_BUSY,
|
||||
WII5STATUS_WAITING,
|
||||
WII5STATUS_ERROR
|
||||
};
|
||||
|
||||
// Error for device
|
||||
// 50 = about 1K
|
||||
// 10 = about 190 bytes
|
||||
#define WII5_ERROR_STRING_MAX 5
|
||||
enum WII5_ERRORS {
|
||||
WII5ERROR_UNKNOWN,
|
||||
WII5ERROR_NONE,
|
||||
WII5ERROR_RETRY,
|
||||
WII5ERROR_INIT,
|
||||
WII5ERROR_MEMORY,
|
||||
WII5ERROR_TIMEOUT,
|
||||
WII5ERROR_FATAL
|
||||
};
|
||||
enum WII5_SERIALCMDS {
|
||||
WII5SERIALCMD_NONE,
|
||||
WII5SERIALCMD_OK,
|
||||
WII5SERIALCMD_WAITING,
|
||||
WII5SERIALCMD_TIMEOUT,
|
||||
WII5SERIALCMD_ERROR
|
||||
};
|
||||
|
||||
enum WII5_MODES {
|
||||
WII5MODE_NONE, /// Invalid !
|
||||
|
||||
// Boot up
|
||||
WII5MODE_BOOT, // First time only - after boot
|
||||
WII5MODE_START, // First time only - after boot
|
||||
|
||||
WII5MODE_DEMO, // Special mode which kind of does nothing
|
||||
|
||||
// Normal modes
|
||||
WII5MODE_SLEEP, // Sleeping (long term mode).
|
||||
WII5MODE_LOWBATTERY, // Super low power mode
|
||||
WII5MODE_POSITION, // Send Position Mode
|
||||
WII5MODE_CAPTURE, // Capture - the main mode WII5MODE_MANUAL_TEST, // Special mode where we can turn things on and off.
|
||||
|
||||
// Testing
|
||||
WII5MODE_MANUALTEST,
|
||||
WII5MODE_SELFTEST
|
||||
};
|
||||
|
||||
// Other Config - keep order, and add to end, and check values in read
|
||||
#define WII5_DATA_CONFIG_TYPE 5
|
||||
#define WII5_DATA_CONFIG_VERSION 2
|
||||
typedef struct {
|
||||
uint8_t type;
|
||||
uint8_t version;
|
||||
|
||||
// Useful generic options
|
||||
time_t disableLowBattery; // Disable until?
|
||||
uint32_t flags;
|
||||
uint32_t gpsTimeout;
|
||||
|
||||
// TODO Battery calibration and modes?
|
||||
// TODO Temperature sensor mapping?
|
||||
|
||||
// MODE Capture options
|
||||
// Periods:
|
||||
// Minutes
|
||||
// - 15 (0, 15, 30, 45 ...)
|
||||
// - 30 (0, 30)
|
||||
// - 60 (every hour)
|
||||
// - 120 (once per hour)
|
||||
// NOTE: Auto sleep when over 30 minutes? (or configurable)
|
||||
// Number of Records ?
|
||||
// What to process - ? Can we make this automatic
|
||||
// What to return
|
||||
// Could we "return data" only in certain circumstances
|
||||
uint32_t capturePeriod;
|
||||
uint32_t captureBinaryType;
|
||||
uint32_t captureRecords;
|
||||
|
||||
// MODE LowBattery
|
||||
// None - see disableLowBattery above
|
||||
|
||||
// MODE Position
|
||||
uint32_t positionPeriod;
|
||||
uint32_t positionBinaryType;
|
||||
|
||||
// MODE Sleep
|
||||
uint32_t sleepPeriod; // 0 or Invalid = 12 hours
|
||||
uint32_t sleepBinaryType;
|
||||
uint32_t sleepMaths; // Flags and Times for Maths CPU when waking from sleep
|
||||
|
||||
// So... what mode and for how long
|
||||
WII5_MODES defaultMode;
|
||||
WII5_MODES temporaryMode;
|
||||
WII5_MODES temporaryModeExpires;
|
||||
|
||||
uint16_t batteryLow;
|
||||
uint16_t batteryMid;
|
||||
uint32_t sleepUntil; // When to auto go back to capture
|
||||
} WII5_Data_Config;
|
||||
|
||||
// Other Config - keep order, and add to end, and check values in read
|
||||
#define WII5_DATA_STATUS_TYPE 6
|
||||
#define WII5_DATA_STATUS_VERSION 1
|
||||
|
||||
/*
|
||||
typedef struct {
|
||||
uint8_t type;
|
||||
uint8_t version;
|
||||
|
||||
// Sleep information
|
||||
uint16_t sleepCountTotal;
|
||||
uint16_t sleepCountThis;
|
||||
time_t sleepLast;
|
||||
|
||||
// Capture information
|
||||
uint32_t captureCountTotal;
|
||||
uint16_t captureCountThis;
|
||||
|
||||
// Keep error counts and times to allow for temporary disabe etc
|
||||
uint16_t buttonErrorCountTotal;
|
||||
uint8_t buttonErrorCountThis;
|
||||
time_t buttonErrorCountLast;
|
||||
|
||||
uint16_t gpsErrorCountTotal;
|
||||
uint8_t gpsErrorCountThis;
|
||||
time_t gpsErrorCountLast;
|
||||
|
||||
uint32_t rtcErrorCountTotal;
|
||||
uint16_t rtcErrorCountThis;
|
||||
time_t rtcErrorCountLast;
|
||||
|
||||
uint32_t commsErrorCountTotal;
|
||||
uint16_t commsErrorCountThis;
|
||||
time_t commsErrorCountLast;
|
||||
|
||||
uint32_t captureErrorCountTotal;
|
||||
uint16_t captureErrorCountThis;
|
||||
time_t captureErrorCountLast;
|
||||
|
||||
uint32_t commsSendTries;
|
||||
uint32_t commsSendSuccess;
|
||||
|
||||
} WII5_Data_Status;
|
||||
*/
|
||||
|
||||
enum WII5_FLAGS {
|
||||
WII5FLAGS_GPSDISABLE, // GPS causing problems, turn it OFF
|
||||
WII5FLAGS_RTCDISABLE, // RTC issues, turn it off
|
||||
WII5FLAGS_RADIOOFF, // Radio issues, turn it off
|
||||
WII5FLAGS_ENABLELOGS, // Store logs at record Id
|
||||
WII5FLAGS_DEBUGLOGS, // Higher information
|
||||
WII5FLAGS_DISABLEBEEP, // Hide them beeps away
|
||||
};
|
||||
|
||||
enum WII5GPS_MODES {
|
||||
WII5GPS_UNKNOWN, // aka Invalid
|
||||
WII5GPS_OFF, // Turn it off - power and all
|
||||
WII5GPS_ON, // On, but just collecting data - no serial out except errors
|
||||
WII5GPS_TIME, // Wait just for first valid time stamp, set, keep, and send special NMEA and set to OFF
|
||||
WII5GPS_POS, // Wait for position then off
|
||||
WII5GPS_ACCURATE, // Like POS Once but more accurate data - ie. wait longer etc
|
||||
WII5GPS_REPEAT // Send position evern "n" minutes (see setTime) (note, self manage on, off, power modes etc)
|
||||
};
|
||||
|
||||
enum WII5_SWITCH {
|
||||
WII5SWITCH_NONE,
|
||||
WII5SWITCH_ON,
|
||||
WII5SWITCH_OFF,
|
||||
WII5SWITCH_TOGGLE
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
uint32_t deviceId;
|
||||
uint32_t recordCount;
|
||||
|
||||
// 12. Date, Time etc
|
||||
time_t last;
|
||||
uint32_t age; // Update as written to disk - (now() - last)
|
||||
uint32_t uptime; // Uptime in minutes (not sure how this goes wih sleep)
|
||||
} WII5Command;
|
||||
|
||||
enum WII5IRIDIUM_SEND_RESULT {
|
||||
WII5IRIDIUMSENDRESULT_NONE,
|
||||
WII5IRIDIUMSENDRESULT_OK,
|
||||
WII5IRIDIUMSENDRESULT_FAILED_TIMEOUT,
|
||||
WII5IRIDIUMSENDRESULT_FAILED_OTHER,
|
||||
};
|
||||
|
||||
enum WII5IRIDIUM_RECEIVE_RESULT {
|
||||
WII5IRIDIUMRECEIVERESULT_NONE,
|
||||
WII5IRIDIUMRECEIVERESULT_OK,
|
||||
};
|
||||
|
||||
|
||||
#define DdW time_t
|
||||
#endif
|
||||
Reference in New Issue
Block a user