NOTE: Now that Wifi works (as of RC6), this is much less important.
NOTE: Now that Wifi Passthrough Programming works (although currently risky), it would be possible to program this entirely within the Wf121 and then reflash the Wf121 on the Moon to add this feature. This should only be done if it's determined to be CRITICAL for mission success since the Passthrough Programming maneuver is very risky and can easily brick the Radio with the PIC ICSP interface not accessible.
(If this doesn't make it into any future WD release, consider moving this to RadioNext milestone).
In Radio's Persistent Store, keep commands to be sent in the event of no wifi connection. Make this
Key[OFFSET + 0]: Metadata
Bit 0: Should the auto-sequencing run
Bit 1: Should the auto-sequencing stop when it runs out of commands or repeat
Key[OFFSET + 1]: Time interval.
Key[OFFSET + 2]: Total time with Radio on since boot without wifi.
Key[OFFSET + 3]: Index of the next command to be sent.
Key[OFFSET + 4]: Total number of commands in the list.
Key[OFFSET + 5 + i]: Command bytes.
Steps
[ ] Add storage.
[ ] Create core behavior.
[ ] Make all of this settable via GSW command.
[ ] Make all of this able to be echoed to ground.
Process this in GroundInterface (another way to dispatch to its CommandDispatcher connection).
NOTE: Radio has 4kB of Persistent Storage Space.
NOTE: PS Keys 0x8000 to 0x807F are used for user data (128 keys, each of 255 bytes).
NOTE: Due to flash endurance limitations, no more than 4MB can be written into the Radio's Persistent Store (over the lifetime of the device?)
Actually... use MSP430 Flash
... actually, as a safe-guard against no-wifi because the radio can't be programmed or becomes corrupted, we should make this all happen inside the WD. Most of the above applies, just with a different data storage method (MSP430 persistent memory). Tbd. Check into:
[x] Write endurance
According to TI slaa628b, "Similar to SRAM, FRAM has virtually unlimited write endurance with no signs of degradation".
[x] Max storage size
#pragma PERSISTENT goes into FRAM which is 0xBF80 bytes (49kB) long. See MEMORY.FRAM in Apps/FlightSoftware/Watchdog/lnk_msp430fr5994.cmd.
[ ] Space remaining
[x] Ability to store arrays of data.
According to TI slaa628b, you can treat it just like RAM and store arrays and structs there.
NOTE: Now that Wifi works (as of RC6), this is much less important.
NOTE: Now that Wifi Passthrough Programming works (although currently risky), it would be possible to program this entirely within the Wf121 and then reflash the Wf121 on the Moon to add this feature. This should only be done if it's determined to be CRITICAL for mission success since the Passthrough Programming maneuver is very risky and can easily brick the Radio with the PIC ICSP interface not accessible. (If this doesn't make it into any future WD release, consider moving this to
RadioNext
milestone).In Radio's Persistent Store, keep commands to be sent in the event of no wifi connection. Make this
Key[OFFSET + 0]
: MetadataKey[OFFSET + 1]
: Time interval.Key[OFFSET + 2]
: Total time with Radio on since boot without wifi.Key[OFFSET + 3]
: Index of the next command to be sent.Key[OFFSET + 4]
: Total number of commands in the list.Key[OFFSET + 5 + i]
: Command bytes.Steps
[ ] Add storage.
[ ] Create core behavior.
[ ] Make all of this settable via GSW command.
[ ] Make all of this able to be echoed to ground.
Process this in GroundInterface (another way to dispatch to its CommandDispatcher connection).
NOTE: Radio has 4kB of Persistent Storage Space. NOTE: PS Keys
0x8000
to0x807F
are used for user data (128 keys, each of 255 bytes). NOTE: Due to flash endurance limitations, no more than 4MB can be written into the Radio's Persistent Store (over the lifetime of the device?)Actually... use MSP430 Flash
... actually, as a safe-guard against no-wifi because the radio can't be programmed or becomes corrupted, we should make this all happen inside the WD. Most of the above applies, just with a different data storage method (MSP430 persistent memory). Tbd. Check into:
#pragma PERSISTENT
goes intoFRAM
which is0xBF80
bytes (49kB) long. SeeMEMORY.FRAM
inApps/FlightSoftware/Watchdog/lnk_msp430fr5994.cmd
.