diff --git a/Apps/FlightSoftware/Watchdog/include/comms/ground_msgs.h b/Apps/FlightSoftware/Watchdog/include/comms/ground_msgs.h index 9924b8cb7..dc7a49146 100644 --- a/Apps/FlightSoftware/Watchdog/include/comms/ground_msgs.h +++ b/Apps/FlightSoftware/Watchdog/include/comms/ground_msgs.h @@ -15,159 +15,159 @@ extern "C" #define MANUALLY_CONSTRUCT_REPORT -typedef enum GroundMsgs__Status -{ - GND_MSGS__STATUS__SUCCESS = 0, /* Operation succeeded. */ - GND_MSGS__STATUS__ERROR_NULL = -1, /* A required argument or a member of an argument was NULL */ - GND_MSGS__STATUS__ERROR_BUFFER_TOO_SMALL = -2, - GND_MSGS__STATUS__ERROR_SERIALIZATION_ERROR = -3, - GND_MSGS__STATUS__ERROR_UNKNOWN_MESSAGE_ID = -4, - GND_MSGS__STATUS__ERROR_UNKNOWN_MAGIC_NUMBER = -5, - GND_MSGS__STATUS__ERROR_WRONG_STATE = -6, - GND_MSGS__STATUS__ERROR_UNKNOWN_RESET_VALUE = -7, - - GND_MSGS__STATUS__ERROR__INTERNAL = -255 /* An unexpected internal error occurred. */ -} GroundMsgs__Status; - -typedef struct __attribute__((packed)) FlightEarthHeartbeat -{ - uint8_t magicNumber; - uint8_t batt_charge_telem : 7; - uint8_t heating : 1; - uint8_t batt_curr_telem : 7; - uint8_t battery_voltage_good : 1; - uint8_t battTemp; -} FlightEarthHeartbeat; - -typedef struct __attribute__((packed)) FullEarthHeartbeat -{ - uint8_t magicNumber; // always equal to 0xFF - uint16_t battTemp; - uint8_t raw_battery_charge[2]; - uint8_t raw_battery_voltage[2]; - uint8_t raw_battery_current[2]; - uint8_t raw_fuel_gauge_temp[2]; - uint16_t kpHeater; - uint16_t heaterSetpoint; - uint16_t heaterWindow; - uint16_t pwmLimit; - uint8_t stateAsUint; - uint8_t heating; - uint8_t heatingControlEnabled; -uint16_t pwmValue; -} FullEarthHeartbeat; - -typedef struct __attribute__((packed)) DetailedReport -{ - uint8_t magic; // Should always be 0xD5 - - uint8_t chargeStat1 : 1; - uint8_t chargeStat2 : 1; - uint8_t battStat : 1; - uint8_t latchStat : 1; - uint8_t pg12 : 1; - uint8_t pg18 : 1; - uint8_t pg33 : 1; - uint8_t pg50 : 1; - - uint8_t state; - - uint16_t deploymentStatus : 2; // 00 = not deployed, 01 = deploying, 10 = deployed - uint16_t uart0Initialized : 1; - uint16_t uart1Initialized : 1; - uint16_t adcBattRT : 12; - - uint8_t sequenceNumber; - - uint32_t outputPinStateBits; - - uint32_t lowerResetActionBits; - uint8_t upperResetActionBits; - - uint16_t vLanderSense : 7; // upper 7 bits (from 12-bit resolution data) - uint16_t battTemp : 9; // upper 9 bits (from 12-bit resolution data) - - uint32_t vSysAllSens : 5; // upper 5 bits (from 12-bit resolution data) - uint32_t iSysAllSense : 9; // LOWER 9 bits (from 12-bit resolution data) - uint32_t vBattSense : 9; // upper 9 bits (from 12-bit resolution data) - uint32_t vcc24 : 7; // upper 7 bits (from 12-bit resolution data) - uint32_t heatingControlEnabled : 1; - uint32_t heating : 1; - - uint16_t vcc2Point5 : 5; // upper 5 bits (from 12-bit resolution data) - uint16_t vcc2Point8 : 5; // upper 5 bits (from 12-bit resolution data) - uint16_t vcc28 : 6; // upper 6 bits (from 12-bit resolution data) - - uint16_t kpHeater; - - uint16_t heaterPwmLimit; - - uint16_t heaterSetpoint; - - uint16_t heaterOnValue; - - uint16_t heaterOffValue; - - uint16_t heaterDutyCyclePeriod; - - uint16_t heaterPwmValue; - - uint8_t rawBatteryCharge[2]; - - uint8_t rawBatteryVoltage[2]; - - uint8_t rawBatteryCurrent[2]; - - uint8_t rawFuelGaugeTemp[2]; - - uint8_t battChargeTelem; - - uint8_t battCurrTelem; -} DetailedReport; - -/** - * @brief Generates a transit heartbeat message for transmission to ground. - * - * Since the struct is packed, we want to serialize with little endianness, and the MSP430 has little endianness, - * serializing this message it is as simple as casting the struct to uint8_t*. - * - * @param i2cReadings - * @param adcValues - * @param hParams - * @param hb - * @return - */ -GroundMsgs__Status GroundMsgs__generateFlightEarthHeartbeat(I2C_Sensors__Readings* i2cReadings, - AdcValues* adcValues, - HeaterParams* hParams, - FlightEarthHeartbeat* hb); - -/** - * @brief Generates a serialized full heartbeat message for transmission to ground. - * - * Since the struct is packed, we want to serialize with little endianness, and the MSP430 has little endianness, - * serializing this message it is as simple as casting the struct to uint8_t*. - * - * Note that all uint16_t values are serialized with little endianness. - * - * @param i2cReadings - * @param adcValues - * @param hParams - * @param stateAsUint - * @param hb - * @return - */ -GroundMsgs__Status GroundMsgs__generateFullEarthHeartbeat(I2C_Sensors__Readings* i2cReadings, - AdcValues* adcValues, - HeaterParams* hParams, - uint8_t stateAsUint, - FullEarthHeartbeat* hb); - -GroundMsgs__Status GroundMsgs__generateDetailedReport(I2C_Sensors__Readings* i2cReadings, - AdcValues* adcValues, - WatchdogStateDetails* details, - DetailedReport* hb, - uint8_t* reportBuffer); + typedef enum GroundMsgs__Status + { + GND_MSGS__STATUS__SUCCESS = 0, /* Operation succeeded. */ + GND_MSGS__STATUS__ERROR_NULL = -1, /* A required argument or a member of an argument was NULL */ + GND_MSGS__STATUS__ERROR_BUFFER_TOO_SMALL = -2, + GND_MSGS__STATUS__ERROR_SERIALIZATION_ERROR = -3, + GND_MSGS__STATUS__ERROR_UNKNOWN_MESSAGE_ID = -4, + GND_MSGS__STATUS__ERROR_UNKNOWN_MAGIC_NUMBER = -5, + GND_MSGS__STATUS__ERROR_WRONG_STATE = -6, + GND_MSGS__STATUS__ERROR_UNKNOWN_RESET_VALUE = -7, + + GND_MSGS__STATUS__ERROR__INTERNAL = -255 /* An unexpected internal error occurred. */ + } GroundMsgs__Status; + + typedef struct __attribute__((packed)) FlightEarthHeartbeat + { + uint8_t magicNumber; + uint8_t batt_charge_telem : 7; + uint8_t heating : 1; + uint8_t batt_curr_telem : 7; + uint8_t battery_voltage_good : 1; + uint8_t battTemp; + } FlightEarthHeartbeat; + + typedef struct __attribute__((packed)) FullEarthHeartbeat + { + uint8_t magicNumber; // always equal to 0xFF + uint16_t battTemp; + uint8_t raw_battery_charge[2]; + uint8_t raw_battery_voltage[2]; + uint8_t raw_battery_current[2]; + uint8_t raw_fuel_gauge_temp[2]; + uint16_t kpHeater; + uint16_t heaterSetpoint; + uint16_t heaterWindow; + uint16_t pwmLimit; + uint8_t stateAsUint; + uint8_t heating; + uint8_t heatingControlEnabled; + uint16_t pwmValue; + } FullEarthHeartbeat; + + typedef struct __attribute__((packed)) DetailedReport + { + uint8_t magic; // Should always be 0xD5 + + uint8_t chargeStat1 : 1; + uint8_t chargeStat2 : 1; + uint8_t battStat : 1; + uint8_t latchStat : 1; + uint8_t pg12 : 1; + uint8_t pg18 : 1; + uint8_t pg33 : 1; + uint8_t pg50 : 1; + + uint8_t state; + + uint16_t deploymentStatus : 2; // 00 = not deployed, 01 = deploying, 10 = deployed + uint16_t uart0Initialized : 1; + uint16_t uart1Initialized : 1; + uint16_t adcBattRT : 12; // main heater thermistor + + uint8_t sequenceNumber; + + uint32_t outputPinStateBits; + + uint32_t lowerResetActionBits; + uint8_t upperResetActionBits; + + uint16_t vLanderSense : 7; // upper 7 bits (from 12-bit resolution data) + uint16_t battTemp : 9; // upper 9 bits (from 12-bit resolution data) - charging thermistor + + uint32_t vSysAllSens : 5; // upper 5 bits (from 12-bit resolution data) + uint32_t iSysAllSense : 9; // LOWER 9 bits (from 12-bit resolution data) + uint32_t vBattSense : 9; // upper 9 bits (from 12-bit resolution data) + uint32_t vcc24 : 7; // upper 7 bits (from 12-bit resolution data) + uint32_t heatingControlEnabled : 1; + uint32_t heating : 1; + + uint16_t vcc2Point5 : 5; // upper 5 bits (from 12-bit resolution data) + uint16_t vcc2Point8 : 5; // upper 5 bits (from 12-bit resolution data) + uint16_t vcc28 : 6; // upper 6 bits (from 12-bit resolution data) + + uint16_t kpHeater; + + uint16_t heaterPwmLimit; + + uint16_t heaterSetpoint; + + uint16_t heaterOnValue; + + uint16_t heaterOffValue; + + uint16_t heaterDutyCyclePeriod; + + uint16_t heaterPwmValue; + + uint8_t rawBatteryCharge[2]; + + uint8_t rawBatteryVoltage[2]; + + uint8_t rawBatteryCurrent[2]; + + uint8_t rawFuelGaugeTemp[2]; + + uint8_t battChargeTelem; + + uint8_t battCurrTelem; + } DetailedReport; + + /** + * @brief Generates a transit heartbeat message for transmission to ground. + * + * Since the struct is packed, we want to serialize with little endianness, and the MSP430 has little endianness, + * serializing this message it is as simple as casting the struct to uint8_t*. + * + * @param i2cReadings + * @param adcValues + * @param hParams + * @param hb + * @return + */ + GroundMsgs__Status GroundMsgs__generateFlightEarthHeartbeat(I2C_Sensors__Readings *i2cReadings, + AdcValues *adcValues, + HeaterParams *hParams, + FlightEarthHeartbeat *hb); + + /** + * @brief Generates a serialized full heartbeat message for transmission to ground. + * + * Since the struct is packed, we want to serialize with little endianness, and the MSP430 has little endianness, + * serializing this message it is as simple as casting the struct to uint8_t*. + * + * Note that all uint16_t values are serialized with little endianness. + * + * @param i2cReadings + * @param adcValues + * @param hParams + * @param stateAsUint + * @param hb + * @return + */ + GroundMsgs__Status GroundMsgs__generateFullEarthHeartbeat(I2C_Sensors__Readings *i2cReadings, + AdcValues *adcValues, + HeaterParams *hParams, + uint8_t stateAsUint, + FullEarthHeartbeat *hb); + + GroundMsgs__Status GroundMsgs__generateDetailedReport(I2C_Sensors__Readings *i2cReadings, + AdcValues *adcValues, + WatchdogStateDetails *details, + DetailedReport *hb, + uint8_t *reportBuffer); #ifdef __cplusplus } /* close extern "C" */ diff --git a/Apps/FlightSoftware/Watchdog/include/comms/watchdog_cmd_msgs.h b/Apps/FlightSoftware/Watchdog/include/comms/watchdog_cmd_msgs.h index 9633efc9e..9c9b7c83f 100644 --- a/Apps/FlightSoftware/Watchdog/include/comms/watchdog_cmd_msgs.h +++ b/Apps/FlightSoftware/Watchdog/include/comms/watchdog_cmd_msgs.h @@ -9,714 +9,720 @@ extern "C" { #endif -/** - * @defgroup watchdogWatchdogCmdMsgs Watchdog Command Messages - * @addtogroup watchdogWatchdogCmdMsgs - * @{ - */ - -/** - * @brief Possible return statuses of CmdMsgs functions. - */ -typedef enum WdCmdMsgs__Status -{ - WD_CMD_MSGS__STATUS__SUCCESS = CMD_MSGS__STATUS__SUCCESS, //!< Operation succeeded. - /** - * @brief A required argument or a member of an argument was NULL + * @defgroup watchdogWatchdogCmdMsgs Watchdog Command Messages + * @addtogroup watchdogWatchdogCmdMsgs + * @{ */ - WD_CMD_MSGS__STATUS__ERROR_NULL = CMD_MSGS__STATUS__ERROR_NULL, /** - * @brief A given buffer was too small. + * @brief Possible return statuses of CmdMsgs functions. */ - WD_CMD_MSGS__STATUS__ERROR_BUFFER_TOO_SMALL = CMD_MSGS__STATUS__ERROR_BUFFER_TOO_SMALL, + typedef enum WdCmdMsgs__Status + { + WD_CMD_MSGS__STATUS__SUCCESS = CMD_MSGS__STATUS__SUCCESS, //!< Operation succeeded. + + /** + * @brief A required argument or a member of an argument was NULL + */ + WD_CMD_MSGS__STATUS__ERROR_NULL = CMD_MSGS__STATUS__ERROR_NULL, + + /** + * @brief A given buffer was too small. + */ + WD_CMD_MSGS__STATUS__ERROR_BUFFER_TOO_SMALL = CMD_MSGS__STATUS__ERROR_BUFFER_TOO_SMALL, + + /** + * @brief A serialization error occurred. + */ + WD_CMD_MSGS__STATUS__ERROR_SERIALIZATION_ERROR = CMD_MSGS__STATUS__ERROR_SERIALIZATION_ERROR, + WD_CMD_MSGS__STATUS__ERROR_UNKNOWN_MESSAGE_ID = -4, //!< Encountered an unknown command ID. + + /** + * An unexpected error occurred. + */ + WD_CMD_MSGS__STATUS__ERROR__INTERNAL = CMD_MSGS__STATUS__ERROR__INTERNAL + } WdCmdMsgs__Status; + + // ###################################################################################################################### + // Message Field Types + // ###################################################################################################################### /** - * @brief A serialization error occurred. + * @brief Possible response status codes. */ - WD_CMD_MSGS__STATUS__ERROR_SERIALIZATION_ERROR = CMD_MSGS__STATUS__ERROR_SERIALIZATION_ERROR, - WD_CMD_MSGS__STATUS__ERROR_UNKNOWN_MESSAGE_ID = -4, //!< Encountered an unknown command ID. + typedef enum WdCmdMsgs__ResponseStatusCode + { + WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS = 0, //!< Command performed successfully. + WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_PACKET_LENGTH = 1, //!< Wrong packet length for this command. + WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_CHECKSUM = 2, //!< Checksum validation failed. + WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_MODULE_ID = 3, //!< Unexpected module ID. + WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_ID = 4, //!< Unexpected command ID. + WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER = 5, //!< Unexpected parameter value. + WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE = 6, //!< Unexpected sequence of commands. + + WD_CMD_MSGS__RESPONSE_STATUS__DEPLOY = 96, //!< The watchdog just enabled its HDRM. + } WdCmdMsgs__ResponseStatusCode; /** - * An unexpected error occurred. + * @brief Possible watchdog command IDs */ - WD_CMD_MSGS__STATUS__ERROR__INTERNAL = CMD_MSGS__STATUS__ERROR__INTERNAL -} WdCmdMsgs__Status; + typedef enum WdCmdMsgs__CommandId + { + WD_CMD_MSGS__CMD_ID__RESET_SPECIFIC = 0x1000, //!< Reset Specific. + WD_CMD_MSGS__CMD_ID__PREP_FOR_DEPLOY = 0x1001, //!< Prepare to Deploy. + WD_CMD_MSGS__CMD_ID__DEPLOY = 0x1002, //!< Deploy. + WD_CMD_MSGS__CMD_ID__SWITCH_CONN_MODE = 0x1004, //!< Switch Connection Mode. + WD_CMD_MSGS__CMD_ID__SET_DEBUG_COMMS_STATE = 0x10AA, //!< Sets debug comms on or off. + WD_CMD_MSGS__CMD_ID__SET_AUTO_HEATER_ON_VALUE = 0x10AB, //!< Set heater "ON" value used with auto heater controller. + WD_CMD_MSGS__CMD_ID__SET_AUTO_HEATER_OFF_VALUE = 0x10AC, //!< Set heater "OFF" value used with auto heater controller. + WD_CMD_MSGS__CMD_ID__SET_HEATER_DUTY_CYCLE = 0x10AD, //!< Set duty cycle of heater PWM. + WD_CMD_MSGS__CMD_ID__SET_HEATER_DUTY_CYCLE_PERIOD = 0x10AE, //!< Set period of heater PWM. + WD_CMD_MSGS__CMD_ID__SET_VSAE_STATE = 0x10DA, //!< Set VSAE on or off. + WD_CMD_MSGS__CMD_ID__ENTER_SLEEP_MODE = 0x10EA, //!< Enter "Sleep" mode. + WD_CMD_MSGS__CMD_ID__ENTER_KEEPALIVE_MODE = 0x10EB, //!< Enter "Keep Alive" mode. + WD_CMD_MSGS__CMD_ID__ENTER_SERVICE_MODE = 0x10EC, //!< Enter "Service" mode. + WD_CMD_MSGS__CMD_ID__CLEAR_RESET_MEMORY = 0x10F4, //!< Clear the reset memory used in the detailed report. + WD_CMD_MSGS__CMD_ID__DANGEROUS_FORCE_BATT_STATE = 0x10F5, //!< Dangerous: Force battery state. + WD_CMD_MSGS__CMD_ID__REQUEST_DETAILED_REPORT = 0x10F6, //!< Request a detailed report + WD_CMD_MSGS__CMD_ID__SET_CHARGE_EN_STATE = 0x10F7, //!< Set charging IC enable state. + WD_CMD_MSGS__CMD_ID__SET_CHARGE_REG_EN_STATE = 0x10F8, //!< Set charging power 28V regulator enable state. + WD_CMD_MSGS__CMD_ID__SET_BATT_EN_STATE = 0x10F9, //!< Set battery connection state. + WD_CMD_MSGS__CMD_ID__SET_BATT_CTRL_EN_STATE = 0x10FA, //!< Set battery management control state. + WD_CMD_MSGS__CMD_ID__SET_LATCH_BATT_STATE = 0x10FB, //!< Set battery latch state. + WD_CMD_MSGS__CMD_ID__LATCH_SET_PULSE_LOW = 0x10FC, //!< Pulse battery latch "SET" override low. + WD_CMD_MSGS__CMD_ID__LATCH_RESET_PULSE_LOW = 0x10FD, //!< Pulse battery latch "RESET" override low. + WD_CMD_MSGS__CMD_ID__ECHO = 0x10FF, //!< Diagnostic request to echo the given bytes back (with a header attached marking it as an echo) + } WdCmdMsgs__CommandId; -//###################################################################################################################### -// Message Field Types -//###################################################################################################################### - -/** - * @brief Possible response status codes. - */ -typedef enum WdCmdMsgs__ResponseStatusCode -{ - WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS = 0, //!< Command performed successfully. - WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_PACKET_LENGTH = 1, //!< Wrong packet length for this command. - WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_CHECKSUM = 2, //!< Checksum validation failed. - WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_MODULE_ID = 3, //!< Unexpected module ID. - WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_ID = 4, //!< Unexpected command ID. - WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER = 5, //!< Unexpected parameter value. - WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE = 6, //!< Unexpected sequence of commands. - - WD_CMD_MSGS__RESPONSE_STATUS__DEPLOY = 96, //!< The watchdog just enabled its HDRM. -} WdCmdMsgs__ResponseStatusCode; - -/** - * @brief Possible watchdog command IDs - */ -typedef enum WdCmdMsgs__CommandId -{ - WD_CMD_MSGS__CMD_ID__RESET_SPECIFIC = 0x1000, //!< Reset Specific. - WD_CMD_MSGS__CMD_ID__PREP_FOR_DEPLOY = 0x1001, //!< Prepare to Deploy. - WD_CMD_MSGS__CMD_ID__DEPLOY = 0x1002, //!< Deploy. - WD_CMD_MSGS__CMD_ID__SWITCH_CONN_MODE = 0x1004, //!< Switch Connection Mode. - WD_CMD_MSGS__CMD_ID__SET_DEBUG_COMMS_STATE = 0x10AA, //!< Sets debug comms on or off. - WD_CMD_MSGS__CMD_ID__SET_AUTO_HEATER_ON_VALUE = 0x10AB, //!< Set heater "ON" value used with auto heater controller. - WD_CMD_MSGS__CMD_ID__SET_AUTO_HEATER_OFF_VALUE = 0x10AC, //!< Set heater "OFF" value used with auto heater controller. - WD_CMD_MSGS__CMD_ID__SET_HEATER_DUTY_CYCLE = 0x10AD, //!< Set duty cycle of heater PWM. - WD_CMD_MSGS__CMD_ID__SET_HEATER_DUTY_CYCLE_PERIOD = 0x10AE, //!< Set period of heater PWM. - WD_CMD_MSGS__CMD_ID__SET_VSAE_STATE = 0x10DA, //!< Set VSAE on or off. - WD_CMD_MSGS__CMD_ID__ENTER_SLEEP_MODE = 0x10EA, //!< Enter "Sleep" mode. - WD_CMD_MSGS__CMD_ID__ENTER_KEEPALIVE_MODE = 0x10EB, //!< Enter "Keep Alive" mode. - WD_CMD_MSGS__CMD_ID__ENTER_SERVICE_MODE = 0x10EC, //!< Enter "Service" mode. - WD_CMD_MSGS__CMD_ID__CLEAR_RESET_MEMORY = 0x10F4, //!< Clear the reset memory used in the detailed report. - WD_CMD_MSGS__CMD_ID__DANGEROUS_FORCE_BATT_STATE = 0x10F5, //!< Dangerous: Force battery state. - WD_CMD_MSGS__CMD_ID__REQUEST_DETAILED_REPORT = 0x10F6, //!< Request a detailed report - WD_CMD_MSGS__CMD_ID__SET_CHARGE_EN_STATE = 0x10F7, //!< Set charging IC enable state. - WD_CMD_MSGS__CMD_ID__SET_CHARGE_REG_EN_STATE = 0x10F8, //!< Set charging power 28V regulator enable state. - WD_CMD_MSGS__CMD_ID__SET_BATT_EN_STATE = 0x10F9, //!< Set battery connection state. - WD_CMD_MSGS__CMD_ID__SET_BATT_CTRL_EN_STATE = 0x10FA, //!< Set battery management control state. - WD_CMD_MSGS__CMD_ID__SET_LATCH_BATT_STATE = 0x10FB, //!< Set battery latch state. - WD_CMD_MSGS__CMD_ID__LATCH_SET_PULSE_LOW = 0x10FC, //!< Pulse battery latch "SET" override low. - WD_CMD_MSGS__CMD_ID__LATCH_RESET_PULSE_LOW = 0x10FD, //!< Pulse battery latch "RESET" override low. - WD_CMD_MSGS__CMD_ID__ECHO = 0x10FF, //!< Diagnostic request to echo the given bytes back (with a header attached marking it as an echo) -} WdCmdMsgs__CommandId; - -/** - * @brief Possible reset values, given for the reset specific command. - */ -typedef enum WdCmdMsgs__ResetSpecificId -{ /** - * @brief Don't reset anything. - * @todo What is the point of this? + * @brief Possible reset values, given for the reset specific command. */ - WD_CMD_MSGS__RESET_ID__NO_RESET = 0x00, + typedef enum WdCmdMsgs__ResetSpecificId + { + /** + * @brief Don't reset anything. + * @todo What is the point of this? + */ + WD_CMD_MSGS__RESET_ID__NO_RESET = 0x00, - WD_CMD_MSGS__RESET_ID__HERCULES_RESET = 0x01, //!< Reset the Hercules. - WD_CMD_MSGS__RESET_ID__HERCULES_POWER_ON = 0x02, //!< Power on the Hercules. - WD_CMD_MSGS__RESET_ID__HERCULES_POWER_OFF = 0x03, //!< Power off the Hercules. + WD_CMD_MSGS__RESET_ID__HERCULES_RESET = 0x01, //!< Reset the Hercules. + WD_CMD_MSGS__RESET_ID__HERCULES_POWER_ON = 0x02, //!< Power on the Hercules. + WD_CMD_MSGS__RESET_ID__HERCULES_POWER_OFF = 0x03, //!< Power off the Hercules. - WD_CMD_MSGS__RESET_ID__RADIO_RESET = 0x04, //!< Reset the radio (the WiFi). - WD_CMD_MSGS__RESET_ID__RADIO_POWER_ON = 0x05, //!< Power on the radio (the WiFi). - WD_CMD_MSGS__RESET_ID__RADIO_POWER_OFF = 0x06, //!< Power off the radio (the WiFi). + WD_CMD_MSGS__RESET_ID__RADIO_RESET = 0x04, //!< Reset the radio (the WiFi). + WD_CMD_MSGS__RESET_ID__RADIO_POWER_ON = 0x05, //!< Power on the radio (the WiFi). + WD_CMD_MSGS__RESET_ID__RADIO_POWER_OFF = 0x06, //!< Power off the radio (the WiFi). - WD_CMD_MSGS__RESET_ID__CAM_FPGA_RESET = 0x07, //!< Reset the camera FPGA. - WD_CMD_MSGS__RESET_ID__CAM_FPGA_POWER_ON = 0x08, //!< Power on the camera FPGA. - WD_CMD_MSGS__RESET_ID__CAM_FPGA_POWER_OFF = 0x09, //!< Power off the camera FPGA. + WD_CMD_MSGS__RESET_ID__CAM_FPGA_RESET = 0x07, //!< Reset the camera FPGA. + WD_CMD_MSGS__RESET_ID__CAM_FPGA_POWER_ON = 0x08, //!< Power on the camera FPGA. + WD_CMD_MSGS__RESET_ID__CAM_FPGA_POWER_OFF = 0x09, //!< Power off the camera FPGA. - WD_CMD_MSGS__RESET_ID__MOTOR_1_RESET = 0x0A, //!< Reset motor 1. - WD_CMD_MSGS__RESET_ID__MOTOR_2_RESET = 0x0B, //!< Reset motor 2. - WD_CMD_MSGS__RESET_ID__MOTOR_3_RESET = 0x0C, //!< Reset motor 3. - WD_CMD_MSGS__RESET_ID__MOTOR_4_RESET = 0x0D, //!< Reset motor 4. + WD_CMD_MSGS__RESET_ID__MOTOR_1_RESET = 0x0A, //!< Reset motor 1. + WD_CMD_MSGS__RESET_ID__MOTOR_2_RESET = 0x0B, //!< Reset motor 2. + WD_CMD_MSGS__RESET_ID__MOTOR_3_RESET = 0x0C, //!< Reset motor 3. + WD_CMD_MSGS__RESET_ID__MOTOR_4_RESET = 0x0D, //!< Reset motor 4. - WD_CMD_MSGS__RESET_ID__ALL_MOTORS_RESET = 0x0E, //!< Reset all motors. - WD_CMD_MSGS__RESET_ID__ALL_MOTORS_POWER_ON = 0x0F, //!< Power on all motors. - WD_CMD_MSGS__RESET_ID__ALL_MOTORS_POWER_OFF = 0x10, //!< Power off all motors. + WD_CMD_MSGS__RESET_ID__ALL_MOTORS_RESET = 0x0E, //!< Reset all motors. + WD_CMD_MSGS__RESET_ID__ALL_MOTORS_POWER_ON = 0x0F, //!< Power on all motors. + WD_CMD_MSGS__RESET_ID__ALL_MOTORS_POWER_OFF = 0x10, //!< Power off all motors. - WD_CMD_MSGS__RESET_ID__3_3V_EN_RESET = 0x11, //!< Reset the 3.3V line enable. - WD_CMD_MSGS__RESET_ID__3_3V_EN_POWER_ON = 0x12, //!< Power on the 3.3V line enable. - WD_CMD_MSGS__RESET_ID__3_3V_EN_POWER_OFF = 0x13, //!< Power off the 3.3V line enable. + WD_CMD_MSGS__RESET_ID__3_3V_EN_RESET = 0x11, //!< Reset the 3.3V line enable. + WD_CMD_MSGS__RESET_ID__3_3V_EN_POWER_ON = 0x12, //!< Power on the 3.3V line enable. + WD_CMD_MSGS__RESET_ID__3_3V_EN_POWER_OFF = 0x13, //!< Power off the 3.3V line enable. - WD_CMD_MSGS__RESET_ID__V_SYS_ALL_POWER_CYCLE = 0x14, //!< Reset the 24V line enable. - WD_CMD_MSGS__RESET_ID__V_SYS_ALL_ON = 0x15, //!< Power on the 24V line enable. - WD_CMD_MSGS__RESET_ID__V_SYS_ALL_OFF = 0x16, //!< Power off the 24V line enable. + WD_CMD_MSGS__RESET_ID__V_SYS_ALL_POWER_CYCLE = 0x14, //!< Reset the 24V line enable. + WD_CMD_MSGS__RESET_ID__V_SYS_ALL_ON = 0x15, //!< Power on the 24V line enable. + WD_CMD_MSGS__RESET_ID__V_SYS_ALL_OFF = 0x16, //!< Power off the 24V line enable. - WD_CMD_MSGS__RESET_ID__HDRM_DEPLOY_SIGNAL_POWER_OFF = 0x18, //!< Power off the HDRM. + WD_CMD_MSGS__RESET_ID__HDRM_DEPLOY_SIGNAL_POWER_OFF = 0x18, //!< Power off the HDRM. - WD_CMD_MSGS__RESET_ID__FPGA_CAM_0_SELECT = 0x19, //!< Select camera 0. - WD_CMD_MSGS__RESET_ID__FPGA_CAM_1_SELECT = 0x1A, //!< Select camera 1. + WD_CMD_MSGS__RESET_ID__FPGA_CAM_0_SELECT = 0x19, //!< Select camera 0. + WD_CMD_MSGS__RESET_ID__FPGA_CAM_1_SELECT = 0x1A, //!< Select camera 1. - WD_CMD_MSGS__RESET_ID__BATTERY_CHARGE_START = 0x1B, //!< Start charging the batteries. - WD_CMD_MSGS__RESET_ID__BATTERY_CHARGE_STOP = 0x1C, //!< Stop charging the batteries. + WD_CMD_MSGS__RESET_ID__BATTERY_CHARGE_START = 0x1B, //!< Start charging the batteries. + WD_CMD_MSGS__RESET_ID__BATTERY_CHARGE_STOP = 0x1C, //!< Stop charging the batteries. - WD_CMD_MSGS__RESET_ID__RS422_UART_ENABLE = 0x1D, //!< Enable the RS422 UART. - WD_CMD_MSGS__RESET_ID__RS422_UART_DISABLE = 0x1E, //!< Disable the RS422 UART. + WD_CMD_MSGS__RESET_ID__RS422_UART_ENABLE = 0x1D, //!< Enable the RS422 UART. + WD_CMD_MSGS__RESET_ID__RS422_UART_DISABLE = 0x1E, //!< Disable the RS422 UART. - WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_ENABLE = 0x1F, //!< Enable the automatic heater controller. - WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_DISABLE = 0x20, //!< Disable the automatic heater controller. + WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_ENABLE = 0x1F, //!< Enable the automatic heater controller. + WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_DISABLE = 0x20, //!< Disable the automatic heater controller. - WD_CMD_MSGS__RESET_ID__HERCULES_WATCHDOG_ENABLE = 0x21, //!< Enable the Hercules watchdog. - WD_CMD_MSGS__RESET_ID__HERCULES_WATCHDOG_DISABLE = 0x22, //!< Disable the Hercules watchdog. + WD_CMD_MSGS__RESET_ID__HEATER_FORCE_OFF = 0xC0, //!< Force the heater to always be OFF (at whatever duty cycle) + WD_CMD_MSGS__RESET_ID__HEATER_FORCE_ON = 0xC1, //!< Force the heater to always be ON (at whatever duty cycle) + WD_CMD_MSGS__RESET_ID__HEATER_FORCE_NOTHING = 0xC2, //!< Don't force the heater to do anything (let the controller work its magic) + WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_USE_RT_INPUT = 0xCF, //!< Auto Heater Controller should use BattRT as the temperature input + WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_USE_CHARGER_INPUT_DEACTIVATE = 0xCE, //!< Deactivate charging circuitry used to allow Auto Heater Controller to use Charger Thermistor as the temperature input (for use if returning to BATT_RT from CHRG) + WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_USE_CHARGER_INPUT_ACTIVATE = 0xCD, //!< Activate charging circuitry but disable charging so the Auto Heater Controller can use Charger Thermistor as the temperature input (needed for `WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_USE_CHARGER_INPUT` to work) + WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_USE_CHARGER_INPUT = 0xCC, //!< Auto Heater Controller should use Charger Thermistor as the temperature input - WD_CMD_MSGS__RESET_ID__BATTERIES_ENABLE = 0x23, //!< Enable the batteries. - WD_CMD_MSGS__RESET_ID__BATTERIES_DISABLE = 0x24, //!< Disable the batteries. + WD_CMD_MSGS__RESET_ID__HERCULES_WATCHDOG_ENABLE = 0x21, //!< Enable the Hercules watchdog. + WD_CMD_MSGS__RESET_ID__HERCULES_WATCHDOG_DISABLE = 0x22, //!< Disable the Hercules watchdog. - WD_CMD_MSGS__RESET_ID__CLEAR_PERSISTENT_DEPLOY = 0xDD, //!< Clear the persistent "deployed" status. - WD_CMD_MSGS__RESET_ID__HDRM_DEPLOY_SIGNAL_POWER_ON = 0xEE //!< Power on the HDRM. + WD_CMD_MSGS__RESET_ID__BATTERIES_ENABLE = 0x23, //!< Enable the batteries. + WD_CMD_MSGS__RESET_ID__BATTERIES_DISABLE = 0x24, //!< Disable the batteries. -} WdCmdMsgs__ResetSpecificId; + WD_CMD_MSGS__RESET_ID__CLEAR_PERSISTENT_DEPLOY = 0xDD, //!< Clear the persistent "deployed" status. + WD_CMD_MSGS__RESET_ID__HDRM_DEPLOY_SIGNAL_POWER_ON = 0xEE //!< Power on the HDRM. -/** - * @brief Possible values of the parameter of the Switch Connection Mode command. - */ -typedef enum WdCmdMsgs__SwitchConnModeSelection -{ - WD_CMD_MSGS__CONN_MODE__WIRED = 0x01, //!< Wired (RS-422): Watchdog gets data, forwards to Hercules - WD_CMD_MSGS__CONN_MODE__WIRELESS = 0x02 //!< Wireless: Hercules gets data, forwards to watchdog -} WdCmdMsgs__SwitchConnModeSelection; + } WdCmdMsgs__ResetSpecificId; -/** - * @brief Possible values of the parameter of the Dangerous Force Battery State command. - */ -typedef enum WdCmdMsgs__DangForceBattStateSelection -{ - WD_CMD_MSGS__DANG_FORCE_BATT_STATE__LOW = 0x00, //!< Force battery state low - WD_CMD_MSGS__DANG_FORCE_BATT_STATE__HIGH = 0xFF, //!< Force battery state high - WD_CMD_MSGS__DANG_FORCE_BATT_STATE__RESTORE = 0xAA //!< Restore battery state to an input -} WdCmdMsgs__DangForceBattStateSelection; + /** + * @brief Possible values of the parameter of the Switch Connection Mode command. + */ + typedef enum WdCmdMsgs__SwitchConnModeSelection + { + WD_CMD_MSGS__CONN_MODE__WIRED = 0x01, //!< Wired (RS-422): Watchdog gets data, forwards to Hercules + WD_CMD_MSGS__CONN_MODE__WIRELESS = 0x02 //!< Wireless: Hercules gets data, forwards to watchdog + } WdCmdMsgs__SwitchConnModeSelection; -/** - * @brief Possible values of the parameter of the Set Charge EN State command. - */ -typedef enum WdCmdMsgs__SetChargeEnSelection -{ - WD_CMD_MSGS__CHARGE_EN__ON = 0xFF, //!< Enable charging - WD_CMD_MSGS__CHARGE_EN__OFF = 0x00, //!< Disable charging - WD_CMD_MSGS__CHARGE_EN__FORCE_HIGH = 0x99 //!< Force high output on CHRG_EN pin -} WdCmdMsgs__SetChargeEnSelection; + /** + * @brief Possible values of the parameter of the Dangerous Force Battery State command. + */ + typedef enum WdCmdMsgs__DangForceBattStateSelection + { + WD_CMD_MSGS__DANG_FORCE_BATT_STATE__LOW = 0x00, //!< Force battery state low + WD_CMD_MSGS__DANG_FORCE_BATT_STATE__HIGH = 0xFF, //!< Force battery state high + WD_CMD_MSGS__DANG_FORCE_BATT_STATE__RESTORE = 0xAA //!< Restore battery state to an input + } WdCmdMsgs__DangForceBattStateSelection; -/** - * @brief Possible values of the parameter of the Set Charge EN State command. - */ -typedef enum WdCmdMsgs__SetChargeRegEnSelection -{ - WD_CMD_MSGS__CHARGE_REG_EN__ON = 0xFF, //!< Enable charging regulator - WD_CMD_MSGS__CHARGE_REG_EN__OFF = 0x00 //!< Disable charging regulator -} WdCmdMsgs__SetChargeRegEnSelection; + /** + * @brief Possible values of the parameter of the Set Charge EN State command. + */ + typedef enum WdCmdMsgs__SetChargeEnSelection + { + WD_CMD_MSGS__CHARGE_EN__ON = 0xFF, //!< Enable charging + WD_CMD_MSGS__CHARGE_EN__OFF = 0x00, //!< Disable charging + WD_CMD_MSGS__CHARGE_EN__FORCE_HIGH = 0x99 //!< Force high output on CHRG_EN pin + } WdCmdMsgs__SetChargeEnSelection; -/** - * @brief Possible values of the parameter of the Set Battery EN State command. - */ -typedef enum WdCmdMsgs__SetBattEnSelection -{ - WD_CMD_MSGS__BATT_EN__ON = 0xFF, //!< Enable battery connection - WD_CMD_MSGS__BATT_EN__OFF = 0x00 //!< Disable battery connection -} WdCmdMsgs__SetBattEnSelection; + /** + * @brief Possible values of the parameter of the Set Charge EN State command. + */ + typedef enum WdCmdMsgs__SetChargeRegEnSelection + { + WD_CMD_MSGS__CHARGE_REG_EN__ON = 0xFF, //!< Enable charging regulator + WD_CMD_MSGS__CHARGE_REG_EN__OFF = 0x00 //!< Disable charging regulator + } WdCmdMsgs__SetChargeRegEnSelection; -/** - * @brief Possible values of the parameter of the Set Battery Control EN State command. - */ -typedef enum WdCmdMsgs__SetBattCtrlEnSelection -{ - WD_CMD_MSGS__BATT_CTRL_EN__ON = 0xFF, //!< Enable battery connection - WD_CMD_MSGS__BATT_CTRL_EN__OFF = 0x00, //!< Disable battery connection - WD_CMD_MSGS__BATT_CTRL_EN__FORCE_HIGH = 0x99 //!< Force high output on BCTRLE pin -} WdCmdMsgs__SetBattCtrlEnSelection; + /** + * @brief Possible values of the parameter of the Set Battery EN State command. + */ + typedef enum WdCmdMsgs__SetBattEnSelection + { + WD_CMD_MSGS__BATT_EN__ON = 0xFF, //!< Enable battery connection + WD_CMD_MSGS__BATT_EN__OFF = 0x00 //!< Disable battery connection + } WdCmdMsgs__SetBattEnSelection; -/** - * @brief Possible values of the parameter of the Set Battery Control EN State command. - */ -typedef enum WdCmdMsgs__SetLatchBattSelection -{ - WD_CMD_MSGS__LATCH_BATT__ON = 0xFF, //!< Enable battery connection - WD_CMD_MSGS__LATCH_BATT__OFF = 0x00, //!< Disable battery connection - WD_CMD_MSGS__LATCH_BATT__UPDATE = 0xAA//!< Pulse latch low-high-low -} WdCmdMsgs__SetLatchBattSelection; + /** + * @brief Possible values of the parameter of the Set Battery Control EN State command. + */ + typedef enum WdCmdMsgs__SetBattCtrlEnSelection + { + WD_CMD_MSGS__BATT_CTRL_EN__ON = 0xFF, //!< Enable battery connection + WD_CMD_MSGS__BATT_CTRL_EN__OFF = 0x00, //!< Disable battery connection + WD_CMD_MSGS__BATT_CTRL_EN__FORCE_HIGH = 0x99 //!< Force high output on BCTRLE pin + } WdCmdMsgs__SetBattCtrlEnSelection; -/** - * @brief Possible values of the parameter of the Set Battery Control EN State command. - */ -typedef enum WdCmdMsgs__LatchSetResetSelection -{ - WD_CMD_MSGS__LATCH_SET_RESET__OFF = 0x00, //!< - WD_CMD_MSGS__LATCH_SET_RESET__PULSE = 0x15, //!< Pulse high-low-high as an output - WD_CMD_MSGS__LATCH_SET_RESET__FORCE_HIGH = 0xBB, //!< Make an output and drive high - WD_CMD_MSGS__LATCH_SET_RESET__FORCE_LOW = 0xFF //!< Make an output and drive low -} WdCmdMsgs__LatchSetResetSelection; + /** + * @brief Possible values of the parameter of the Set Battery Control EN State command. + */ + typedef enum WdCmdMsgs__SetLatchBattSelection + { + WD_CMD_MSGS__LATCH_BATT__ON = 0xFF, //!< Enable battery connection + WD_CMD_MSGS__LATCH_BATT__OFF = 0x00, //!< Disable battery connection + WD_CMD_MSGS__LATCH_BATT__UPDATE = 0xAA //!< Pulse latch low-high-low + } WdCmdMsgs__SetLatchBattSelection; -/** - * @brief Possible values of the parameter of the Set Debug Comms State command. - */ -typedef enum WdCmdMsgs__SetDebugCommsSelection -{ - WD_CMD_MSGS__DEBUG_COMMS__ON = 0xFF, //!< Enable Debug Comms - WD_CMD_MSGS__DEBUG_COMMS__OFF = 0x00 //!< Disable Debug Comms -} WdCmdMsgs__SetDebugCommsSelection; + /** + * @brief Possible values of the parameter of the Set Battery Control EN State command. + */ + typedef enum WdCmdMsgs__LatchSetResetSelection + { + WD_CMD_MSGS__LATCH_SET_RESET__OFF = 0x00, //!< + WD_CMD_MSGS__LATCH_SET_RESET__PULSE = 0x15, //!< Pulse high-low-high as an output + WD_CMD_MSGS__LATCH_SET_RESET__FORCE_HIGH = 0xBB, //!< Make an output and drive high + WD_CMD_MSGS__LATCH_SET_RESET__FORCE_LOW = 0xFF //!< Make an output and drive low + } WdCmdMsgs__LatchSetResetSelection; -/** - * @brief Possible values of the parameter of the Set VSAE State command. - */ -typedef enum WdCmdMsgs__SetVSAESelection -{ - WD_CMD_MSGS__VSAE__ON = 0xFF, //!< Enable VSAE - WD_CMD_MSGS__VSAE__OFF = 0x00, //!< Disable VSAE - WD_CMD_MSGS__VSAE__FORCE_LOW = 0x66 //!< Force VSAE low -} WdCmdMsgs__SetVSAESelection; + /** + * @brief Possible values of the parameter of the Set Debug Comms State command. + */ + typedef enum WdCmdMsgs__SetDebugCommsSelection + { + WD_CMD_MSGS__DEBUG_COMMS__ON = 0xFF, //!< Enable Debug Comms + WD_CMD_MSGS__DEBUG_COMMS__OFF = 0x00 //!< Disable Debug Comms + } WdCmdMsgs__SetDebugCommsSelection; -/** - * @brief The magic number that is expected as the parameter of all of the commands that change the mode. - */ -static const uint8_t WD_CMD_MSGS__CONFIRM_MODE_CHANGE_MAGIC_NUMBER = 0x77u; + /** + * @brief Possible values of the parameter of the Set VSAE State command. + */ + typedef enum WdCmdMsgs__SetVSAESelection + { + WD_CMD_MSGS__VSAE__ON = 0xFF, //!< Enable VSAE + WD_CMD_MSGS__VSAE__OFF = 0x00, //!< Disable VSAE + WD_CMD_MSGS__VSAE__FORCE_LOW = 0x66 //!< Force VSAE low + } WdCmdMsgs__SetVSAESelection; -/** - * @brief The magic number that is expected as the parameter of the "Prepare to Deploy" and "Deploy" commands. - */ -static const uint8_t WD_CMD_MSGS__CONFIRM_DEPLOYMENT_MAGIC_NUMBER = 0x60u; + /** + * @brief The magic number that is expected as the parameter of all of the commands that change the mode. + */ + static const uint8_t WD_CMD_MSGS__CONFIRM_MODE_CHANGE_MAGIC_NUMBER = 0x77u; -/** - * @brief The first magic number expected as a parameter of the "Dangerous Force Battery State" command. - */ -static const uint8_t WD_CMD_MSGS__CONFIRM_DANG_FORCE_BATT_STATE_MAGIC_NUMBER_ONE = 0xF0u; + /** + * @brief The magic number that is expected as the parameter of the "Prepare to Deploy" and "Deploy" commands. + */ + static const uint8_t WD_CMD_MSGS__CONFIRM_DEPLOYMENT_MAGIC_NUMBER = 0x60u; -/** - * @brief The second magic number expected as a parameter of the "Dangerous Force Battery State" command. - */ -static const uint8_t WD_CMD_MSGS__CONFIRM_DANG_FORCE_BATT_STATE_MAGIC_NUMBER_TWO = 0x01u; + /** + * @brief The first magic number expected as a parameter of the "Dangerous Force Battery State" command. + */ + static const uint8_t WD_CMD_MSGS__CONFIRM_DANG_FORCE_BATT_STATE_MAGIC_NUMBER_ONE = 0xF0u; -/** - * @brief The first magic number expected as a parameter of the "Clear Reset Memory" command. - */ -static const uint8_t WD_CMD_MSGS__CONFIRM_CLR_RST_MEM_MAGIC_NUMBER_ONE = 0xC7u; + /** + * @brief The second magic number expected as a parameter of the "Dangerous Force Battery State" command. + */ + static const uint8_t WD_CMD_MSGS__CONFIRM_DANG_FORCE_BATT_STATE_MAGIC_NUMBER_TWO = 0x01u; -/** - * @brief The second magic number expected as a parameter of the "Clear Reset Memory" command. - */ -static const uint8_t WD_CMD_MSGS__CONFIRM_CLR_RST_MEM_MAGIC_NUMBER_TWO = 0x19u; + /** + * @brief The first magic number expected as a parameter of the "Clear Reset Memory" command. + */ + static const uint8_t WD_CMD_MSGS__CONFIRM_CLR_RST_MEM_MAGIC_NUMBER_ONE = 0xC7u; -/** - * @brief The magic number that is expected as the parameter of the "Request Detailed Report" command. - */ -static const uint8_t WD_CMD_MSGS__CONFIRM_REQ_DET_REPORT_MAGIC_NUMBER = 0x57u; + /** + * @brief The second magic number expected as a parameter of the "Clear Reset Memory" command. + */ + static const uint8_t WD_CMD_MSGS__CONFIRM_CLR_RST_MEM_MAGIC_NUMBER_TWO = 0x19u; -/** - * @brief The magic number that is expected as the parameter of the "Set Debug Comms State" command. - */ -static const uint8_t WD_CMD_MSGS__SET_DEBUG_COMMS_STATE_MAGIC_NUMBER = 0xCCu; + /** + * @brief The magic number that is expected as the parameter of the "Request Detailed Report" command. + */ + static const uint8_t WD_CMD_MSGS__CONFIRM_REQ_DET_REPORT_MAGIC_NUMBER = 0x57u; -/** - * @brief The magic number that is expected as the parameter of the "Set VSAE State" command. - */ -static const uint8_t WD_CMD_MSGS__SET_VSAE_STATE_MAGIC_NUMBER = 0xBBu; + /** + * @brief The magic number that is expected as the parameter of the "Set Debug Comms State" command. + */ + static const uint8_t WD_CMD_MSGS__SET_DEBUG_COMMS_STATE_MAGIC_NUMBER = 0xCCu; -/** - * @brief The magic number expected as the first byte of the response message. - */ -static const uint8_t WD_CMD_MSGS__RESPONSE_MAGIC_NUMBER = 0x0Au; + /** + * @brief The magic number that is expected as the parameter of the "Set VSAE State" command. + */ + static const uint8_t WD_CMD_MSGS__SET_VSAE_STATE_MAGIC_NUMBER = 0xBBu; -//###################################################################################################################### -// Message Bodies -//###################################################################################################################### + /** + * @brief The magic number expected as the first byte of the response message. + */ + static const uint8_t WD_CMD_MSGS__RESPONSE_MAGIC_NUMBER = 0x0Au; -/** - * @brief The body of a "Reset Specific" command. - */ -typedef struct WdCmdMsgs__MsgBody__ResetSpecific -{ - WdCmdMsgs__ResetSpecificId resetId; //!< The reset value. -} WdCmdMsgs__MsgBody__ResetSpecific; + // ###################################################################################################################### + // Message Bodies + // ###################################################################################################################### -/** - * @brief The body of a "Prepare for Deploy" command. - */ -typedef struct WdCmdMsgs__MsgBody__PrepForDeploy -{ - uint8_t confirmationMagicNumber; //!< Must be the expected magic number for this command to be performed. -} WdCmdMsgs__MsgBody__PrepForDeploy; + /** + * @brief The body of a "Reset Specific" command. + */ + typedef struct WdCmdMsgs__MsgBody__ResetSpecific + { + WdCmdMsgs__ResetSpecificId resetId; //!< The reset value. + } WdCmdMsgs__MsgBody__ResetSpecific; -/** - * @brief The body of a "Deploy" command. - */ -typedef struct WdCmdMsgs__MsgBody__Deploy -{ - uint8_t confirmationMagicNumber; //!< Must be the expected magic number for this command to be performed. -} WdCmdMsgs__MsgBody__Deploy; + /** + * @brief The body of a "Prepare for Deploy" command. + */ + typedef struct WdCmdMsgs__MsgBody__PrepForDeploy + { + uint8_t confirmationMagicNumber; //!< Must be the expected magic number for this command to be performed. + } WdCmdMsgs__MsgBody__PrepForDeploy; -/** - * @brief The body of a "Switch Connection Mode" command. - */ -typedef struct WdCmdMsgs__MsgBody__SwitchConnMode -{ - WdCmdMsgs__SwitchConnModeSelection connMode; //!< The connection mode to switch to. -} WdCmdMsgs__MsgBody__SwitchConnMode; + /** + * @brief The body of a "Deploy" command. + */ + typedef struct WdCmdMsgs__MsgBody__Deploy + { + uint8_t confirmationMagicNumber; //!< Must be the expected magic number for this command to be performed. + } WdCmdMsgs__MsgBody__Deploy; -/** - * @brief The body of a "Set Debug Comms State" command. - */ -typedef struct WdCmdMsgs__MsgBody__SetDebugCommsState -{ - uint8_t magic; //!< Must be the expected number to perform this command. - WdCmdMsgs__SetDebugCommsSelection selection; -} WdCmdMsgs__MsgBody__SetDebugCommsState; + /** + * @brief The body of a "Switch Connection Mode" command. + */ + typedef struct WdCmdMsgs__MsgBody__SwitchConnMode + { + WdCmdMsgs__SwitchConnModeSelection connMode; //!< The connection mode to switch to. + } WdCmdMsgs__MsgBody__SwitchConnMode; -/** - * @brief The body of a "Set Auto Heater On Value" command. - */ -typedef struct WdCmdMsgs__MsgBody__SetAutoHeaterOnValue -{ - uint16_t heaterOnValue; //!< The value to use as the automatic heater "on" value. -} WdCmdMsgs__MsgBody__SetAutoHeaterOnValue; + /** + * @brief The body of a "Set Debug Comms State" command. + */ + typedef struct WdCmdMsgs__MsgBody__SetDebugCommsState + { + uint8_t magic; //!< Must be the expected number to perform this command. + WdCmdMsgs__SetDebugCommsSelection selection; + } WdCmdMsgs__MsgBody__SetDebugCommsState; -/** - * @brief The body of a "Set Auto Heater Off Value" command. - */ -typedef struct WdCmdMsgs__MsgBody__SetAutoHeaterOffValue -{ - uint16_t heaterOffValue; //!< The value to use as the automatic heater "off" value. -} WdCmdMsgs__MsgBody__SetAutoHeaterOffValue; + /** + * @brief The body of a "Set Auto Heater On Value" command. + */ + typedef struct WdCmdMsgs__MsgBody__SetAutoHeaterOnValue + { + uint16_t heaterOnValue; //!< The value to use as the automatic heater "on" value. + } WdCmdMsgs__MsgBody__SetAutoHeaterOnValue; -/** - * @brief The body of a "Set Heater Duty Cycle Maximum" command. - */ -typedef struct WdCmdMsgs__MsgBody__SetHeaterDutyCycle -{ - uint16_t dutyCycle; //!< The duty cycle value. -} WdCmdMsgs__MsgBody__SetHeaterDutyCycle; + /** + * @brief The body of a "Set Auto Heater Off Value" command. + */ + typedef struct WdCmdMsgs__MsgBody__SetAutoHeaterOffValue + { + uint16_t heaterOffValue; //!< The value to use as the automatic heater "off" value. + } WdCmdMsgs__MsgBody__SetAutoHeaterOffValue; -/** - * @brief The body of a "Set Heater Duty Cycle Period" command. - */ -typedef struct WdCmdMsgs__MsgBody__SetHeaterDutyCyclePeriod -{ - uint16_t dutyCyclePeriod; //!< The duty cycle period value. -} WdCmdMsgs__MsgBody__SetHeaterDutyCyclePeriod; + /** + * @brief The body of a "Set Heater Duty Cycle Maximum" command. + */ + typedef struct WdCmdMsgs__MsgBody__SetHeaterDutyCycle + { + uint16_t dutyCycle; //!< The duty cycle value. + } WdCmdMsgs__MsgBody__SetHeaterDutyCycle; -/** - * @brief The body of a "Set Thermister V Setpoint" command. - */ -typedef struct WdCmdMsgs__MsgBody__SetVSAEState -{ - uint8_t magic; //!< Must be the expected number to perform this command. - WdCmdMsgs__SetVSAESelection selection; -} WdCmdMsgs__MsgBody__SetVSAEState; + /** + * @brief The body of a "Set Heater Duty Cycle Period" command. + */ + typedef struct WdCmdMsgs__MsgBody__SetHeaterDutyCyclePeriod + { + uint16_t dutyCyclePeriod; //!< The duty cycle period value. + } WdCmdMsgs__MsgBody__SetHeaterDutyCyclePeriod; -/** - * @brief The body of an "Enter Sleep Mode" command. - */ -typedef struct WdCmdMsgs__MsgBody__EnterSleepMode -{ - uint8_t confirmationMagicNumber; //!< Must be the expected magic number for this command to be performed. -} WdCmdMsgs__MsgBody__EnterSleepMode; + /** + * @brief The body of a "Set Thermister V Setpoint" command. + */ + typedef struct WdCmdMsgs__MsgBody__SetVSAEState + { + uint8_t magic; //!< Must be the expected number to perform this command. + WdCmdMsgs__SetVSAESelection selection; + } WdCmdMsgs__MsgBody__SetVSAEState; -/** - * @brief The body of an "Enter Keep Alive Mode" command. - */ -typedef struct WdCmdMsgs__MsgBody__EnterKeepAliveMode -{ - uint8_t confirmationMagicNumber; //!< Must be the expected magic number for this command to be performed. -} WdCmdMsgs__MsgBody__EnterKeepAliveMode; + /** + * @brief The body of an "Enter Sleep Mode" command. + */ + typedef struct WdCmdMsgs__MsgBody__EnterSleepMode + { + uint8_t confirmationMagicNumber; //!< Must be the expected magic number for this command to be performed. + } WdCmdMsgs__MsgBody__EnterSleepMode; -/** - * @brief The body of an "Enter Service Mode" command. - */ -typedef struct WdCmdMsgs__MsgBody__EnterServiceMode -{ - uint8_t confirmationMagicNumber; //!< Must be the expected magic number for this command to be performed. -} WdCmdMsgs__MsgBody__EnterServiceMode; + /** + * @brief The body of an "Enter Keep Alive Mode" command. + */ + typedef struct WdCmdMsgs__MsgBody__EnterKeepAliveMode + { + uint8_t confirmationMagicNumber; //!< Must be the expected magic number for this command to be performed. + } WdCmdMsgs__MsgBody__EnterKeepAliveMode; -/** - * @brief The body of an "Dangerous Force Battery State" command. - */ -typedef struct WdCmdMsgs__MsgBody__DangForceBattState -{ - uint8_t confirmationMagicNumberOne; //!< Must be the first expected magic number for this command to be performed. - uint8_t confirmationMagicNumberTwo; //!< Must be the second expected magic number for this command to be performed. - WdCmdMsgs__DangForceBattStateSelection state; //!< The state to force. -} WdCmdMsgs__MsgBody__DangForceBattState; + /** + * @brief The body of an "Enter Service Mode" command. + */ + typedef struct WdCmdMsgs__MsgBody__EnterServiceMode + { + uint8_t confirmationMagicNumber; //!< Must be the expected magic number for this command to be performed. + } WdCmdMsgs__MsgBody__EnterServiceMode; -/** - * @brief The body of an "Set Charge En State" command. - */ -typedef struct WdCmdMsgs__MsgBody__SetChargeEnState -{ - WdCmdMsgs__SetChargeEnSelection selection; //!< The charge enable state to be set. -} WdCmdMsgs__MsgBody__SetChargeEnState; + /** + * @brief The body of an "Dangerous Force Battery State" command. + */ + typedef struct WdCmdMsgs__MsgBody__DangForceBattState + { + uint8_t confirmationMagicNumberOne; //!< Must be the first expected magic number for this command to be performed. + uint8_t confirmationMagicNumberTwo; //!< Must be the second expected magic number for this command to be performed. + WdCmdMsgs__DangForceBattStateSelection state; //!< The state to force. + } WdCmdMsgs__MsgBody__DangForceBattState; -/** - * @brief The body of an "Set Charge Reg En State" command. - */ -typedef struct WdCmdMsgs__MsgBody__SetChargeRegEnState -{ - WdCmdMsgs__SetChargeRegEnSelection selection; //!< The charge regulator enable state to be set. -} WdCmdMsgs__MsgBody__SetChargeRegEnState; + /** + * @brief The body of an "Set Charge En State" command. + */ + typedef struct WdCmdMsgs__MsgBody__SetChargeEnState + { + WdCmdMsgs__SetChargeEnSelection selection; //!< The charge enable state to be set. + } WdCmdMsgs__MsgBody__SetChargeEnState; -/** - * @brief The body of an "Set Batt En State" command. - */ -typedef struct WdCmdMsgs__MsgBody__SetBattEnState -{ - WdCmdMsgs__SetBattEnSelection selection; //!< The battery enable state to be set. -} WdCmdMsgs__MsgBody__SetBattEnState; + /** + * @brief The body of an "Set Charge Reg En State" command. + */ + typedef struct WdCmdMsgs__MsgBody__SetChargeRegEnState + { + WdCmdMsgs__SetChargeRegEnSelection selection; //!< The charge regulator enable state to be set. + } WdCmdMsgs__MsgBody__SetChargeRegEnState; -/** - * @brief The body of an "Set Batt Ctrl En State" command. - */ -typedef struct WdCmdMsgs__MsgBody__SetBattCtrlEnState -{ - WdCmdMsgs__SetBattCtrlEnSelection selection; //!< The battery control enable state to be set. -} WdCmdMsgs__MsgBody__SetBattCtrlEnState; + /** + * @brief The body of an "Set Batt En State" command. + */ + typedef struct WdCmdMsgs__MsgBody__SetBattEnState + { + WdCmdMsgs__SetBattEnSelection selection; //!< The battery enable state to be set. + } WdCmdMsgs__MsgBody__SetBattEnState; -/** - * @brief The body of an "Set Latch Batt State" command. - */ -typedef struct WdCmdMsgs__MsgBody__SetLatchBattState -{ - WdCmdMsgs__SetLatchBattSelection selection; //!< The latch battery state to be set. -} WdCmdMsgs__MsgBody__SetLatchBattState; + /** + * @brief The body of an "Set Batt Ctrl En State" command. + */ + typedef struct WdCmdMsgs__MsgBody__SetBattCtrlEnState + { + WdCmdMsgs__SetBattCtrlEnSelection selection; //!< The battery control enable state to be set. + } WdCmdMsgs__MsgBody__SetBattCtrlEnState; -/** - * @brief The body of an "Latch Set Pulse Low" command. - */ -typedef struct WdCmdMsgs__MsgBody__LatchSetPulseLow -{ + /** + * @brief The body of an "Set Latch Batt State" command. + */ + typedef struct WdCmdMsgs__MsgBody__SetLatchBattState + { + WdCmdMsgs__SetLatchBattSelection selection; //!< The latch battery state to be set. + } WdCmdMsgs__MsgBody__SetLatchBattState; + + /** + * @brief The body of an "Latch Set Pulse Low" command. + */ + typedef struct WdCmdMsgs__MsgBody__LatchSetPulseLow + { WdCmdMsgs__LatchSetResetSelection selection; //!< The latch set state to be set. -} WdCmdMsgs__MsgBody__LatchSetPulseLow; + } WdCmdMsgs__MsgBody__LatchSetPulseLow; -/** - * @brief The body of an "Latch Reset Pulse Low" command. - */ -typedef struct WdCmdMsgs__MsgBody__LatchResetPulseLow -{ + /** + * @brief The body of an "Latch Reset Pulse Low" command. + */ + typedef struct WdCmdMsgs__MsgBody__LatchResetPulseLow + { WdCmdMsgs__LatchSetResetSelection selection; //!< The latch reset state to be set. -} WdCmdMsgs__MsgBody__LatchResetPulseLow; + } WdCmdMsgs__MsgBody__LatchResetPulseLow; -/** - * @brief The body of an "Clear Reset Memory" command. - */ -typedef struct WdCmdMsgs__MsgBody__ClearResetMemory -{ - uint8_t magicOne; - uint8_t magicTwo; -} WdCmdMsgs__MsgBody__ClearResetMemory; + /** + * @brief The body of an "Clear Reset Memory" command. + */ + typedef struct WdCmdMsgs__MsgBody__ClearResetMemory + { + uint8_t magicOne; + uint8_t magicTwo; + } WdCmdMsgs__MsgBody__ClearResetMemory; /** * @brief The body of an "Echo" command. */ #define MAX_ECHO_LENGTH 10 -typedef struct WdCmdMsgs__MsgBody__Echo -{ + typedef struct WdCmdMsgs__MsgBody__Echo + { - uint8_t numBytesToEcho; - uint8_t bytesToEcho[MAX_ECHO_LENGTH]; // allocate max space so we don't have to malloc and free it -} WdCmdMsgs__MsgBody__Echo; - -/** - * @brief The body of an "Request Detailed Report" command. - */ -typedef struct WdCmdMsgs__MsgBody__RequestDetailedReport -{ - uint8_t magic; -} WdCmdMsgs__MsgBody__RequestDetailedReport; + uint8_t numBytesToEcho; + uint8_t bytesToEcho[MAX_ECHO_LENGTH]; // allocate max space so we don't have to malloc and free it + } WdCmdMsgs__MsgBody__Echo; -//###################################################################################################################### -// Overall Message Structure -//###################################################################################################################### + /** + * @brief The body of an "Request Detailed Report" command. + */ + typedef struct WdCmdMsgs__MsgBody__RequestDetailedReport + { + uint8_t magic; + } WdCmdMsgs__MsgBody__RequestDetailedReport; -/** - * @brief A union of all message bodies. - * - * Only the body that corresponds to the command ID of a given command should be accessed. - */ -typedef union -{ - WdCmdMsgs__MsgBody__ResetSpecific resetSpecific; - WdCmdMsgs__MsgBody__PrepForDeploy prepForDeploy; - WdCmdMsgs__MsgBody__Deploy deploy; - WdCmdMsgs__MsgBody__SwitchConnMode switchConnMode; - WdCmdMsgs__MsgBody__SetDebugCommsState setDebugCommsState; - WdCmdMsgs__MsgBody__SetAutoHeaterOnValue setAutoHeaterOnValue; - WdCmdMsgs__MsgBody__SetAutoHeaterOffValue setAutoHeaterOffValue; - WdCmdMsgs__MsgBody__SetHeaterDutyCycle setHeaterDutyCycle; - WdCmdMsgs__MsgBody__SetHeaterDutyCyclePeriod setHeaterDutyCyclePeriod; - WdCmdMsgs__MsgBody__SetVSAEState setVSAEState; - WdCmdMsgs__MsgBody__EnterSleepMode enterSleepMode; - WdCmdMsgs__MsgBody__EnterKeepAliveMode enterKeepAliveMode; - WdCmdMsgs__MsgBody__EnterServiceMode enterServiceMode; - WdCmdMsgs__MsgBody__DangForceBattState dangForceBattState; - WdCmdMsgs__MsgBody__SetChargeEnState setChargeEnState; - WdCmdMsgs__MsgBody__SetChargeRegEnState setChargeRegEnState; - WdCmdMsgs__MsgBody__SetBattEnState setBattEnState; - WdCmdMsgs__MsgBody__SetBattCtrlEnState setBattCtrlEnState; - WdCmdMsgs__MsgBody__SetLatchBattState setLatchBattState; - WdCmdMsgs__MsgBody__LatchSetPulseLow latchSetPulseLow; - WdCmdMsgs__MsgBody__LatchResetPulseLow latchResetPulseLow; - WdCmdMsgs__MsgBody__ClearResetMemory clearResetMem; - WdCmdMsgs__MsgBody__Echo echo; - WdCmdMsgs__MsgBody__RequestDetailedReport reqDetReport; -} WdCmdMsgs__MessageBody; + // ###################################################################################################################### + // Overall Message Structure + // ###################################################################################################################### -/** - * @brief A watchdog command message. - */ -typedef struct WdCmdMsgs__Message -{ - CmdMsgs__CommonHeader commonHeader; //!< The FSW common header. - WdCmdMsgs__CommandId commandId; //!< The command ID. - WdCmdMsgs__MessageBody body; //!< The message body, if `commandId` is a message with a parameter. -} WdCmdMsgs__Message; + /** + * @brief A union of all message bodies. + * + * Only the body that corresponds to the command ID of a given command should be accessed. + */ + typedef union + { + WdCmdMsgs__MsgBody__ResetSpecific resetSpecific; + WdCmdMsgs__MsgBody__PrepForDeploy prepForDeploy; + WdCmdMsgs__MsgBody__Deploy deploy; + WdCmdMsgs__MsgBody__SwitchConnMode switchConnMode; + WdCmdMsgs__MsgBody__SetDebugCommsState setDebugCommsState; + WdCmdMsgs__MsgBody__SetAutoHeaterOnValue setAutoHeaterOnValue; + WdCmdMsgs__MsgBody__SetAutoHeaterOffValue setAutoHeaterOffValue; + WdCmdMsgs__MsgBody__SetHeaterDutyCycle setHeaterDutyCycle; + WdCmdMsgs__MsgBody__SetHeaterDutyCyclePeriod setHeaterDutyCyclePeriod; + WdCmdMsgs__MsgBody__SetVSAEState setVSAEState; + WdCmdMsgs__MsgBody__EnterSleepMode enterSleepMode; + WdCmdMsgs__MsgBody__EnterKeepAliveMode enterKeepAliveMode; + WdCmdMsgs__MsgBody__EnterServiceMode enterServiceMode; + WdCmdMsgs__MsgBody__DangForceBattState dangForceBattState; + WdCmdMsgs__MsgBody__SetChargeEnState setChargeEnState; + WdCmdMsgs__MsgBody__SetChargeRegEnState setChargeRegEnState; + WdCmdMsgs__MsgBody__SetBattEnState setBattEnState; + WdCmdMsgs__MsgBody__SetBattCtrlEnState setBattCtrlEnState; + WdCmdMsgs__MsgBody__SetLatchBattState setLatchBattState; + WdCmdMsgs__MsgBody__LatchSetPulseLow latchSetPulseLow; + WdCmdMsgs__MsgBody__LatchResetPulseLow latchResetPulseLow; + WdCmdMsgs__MsgBody__ClearResetMemory clearResetMem; + WdCmdMsgs__MsgBody__Echo echo; + WdCmdMsgs__MsgBody__RequestDetailedReport reqDetReport; + } WdCmdMsgs__MessageBody; -/** - * @brief A watchdog command response message. - */ -typedef struct WdCmdMsgs__Response -{ - uint8_t magicNumber; //!< Should always be set to `WD_CMD_MSGS__RESPONSE_MAGIC_NUMBER`. - WdCmdMsgs__CommandId commandId; //!< The command ID of the message to which this is a response. - WdCmdMsgs__ResponseStatusCode statusCode; //!< The status of performing the message to which this is a reponse. -} WdCmdMsgs__Response; + /** + * @brief A watchdog command message. + */ + typedef struct WdCmdMsgs__Message + { + CmdMsgs__CommonHeader commonHeader; //!< The FSW common header. + WdCmdMsgs__CommandId commandId; //!< The command ID. + WdCmdMsgs__MessageBody body; //!< The message body, if `commandId` is a message with a parameter. + } WdCmdMsgs__Message; -//###################################################################################################################### -// Packed Sizes -//###################################################################################################################### + /** + * @brief A watchdog command response message. + */ + typedef struct WdCmdMsgs__Response + { + uint8_t magicNumber; //!< Should always be set to `WD_CMD_MSGS__RESPONSE_MAGIC_NUMBER`. + WdCmdMsgs__CommandId commandId; //!< The command ID of the message to which this is a response. + WdCmdMsgs__ResponseStatusCode statusCode; //!< The status of performing the message to which this is a reponse. + } WdCmdMsgs__Response; -/** - * @brief The packed sizes of the body and full message for the various command types as well as the command response. - */ -typedef enum WdCmdMsgs__PackedSize -{ - WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER = CMD_MSGS__PACKED_SIZE__COMMON_HEADER, - - // Bodies - - WD_CMD_MSGS__PACKED_SIZE__RESET_SPECIFIC_BODY = sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__PREP_FOR_DEPLOY_BODY = sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__DEPLOY_BODY = sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__SWITCH_CONN_MODE_BODY = sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__SET_DEBUG_COMMS_STATE_BODY = sizeof(uint16_t), - WD_CMD_MSGS__PACKED_SIZE__SET_AUTO_HEATER_ON_VALUE_BODY = sizeof(uint16_t), - WD_CMD_MSGS__PACKED_SIZE__SET_AUTO_HEATER_OFF_VALUE_BODY = sizeof(uint16_t), - WD_CMD_MSGS__PACKED_SIZE__SET_HEATER_DUTY_CYCLE_BODY = sizeof(uint16_t), - WD_CMD_MSGS__PACKED_SIZE__SET_HEATER_DUTY_CYCLE_PERIOD_BODY = sizeof(uint16_t), - WD_CMD_MSGS__PACKED_SIZE__SET_VSAE_STATE_BODY = sizeof(uint16_t), - WD_CMD_MSGS__PACKED_SIZE__ENTER_SLEEP_MODE_BODY = sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__ENTER_KEEPALIVE_MODE_BODY = sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__ENTER_SERVICE_MODE_BODY = sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__DANG_FORCE_BATT_STATE_BODY = 3 * sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__SET_CHARGE_EN_STATE_BODY = sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__SET_CHARGE_REG_EN_STATE_BODY = sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__SET_BATT_EN_STATE_BODY = sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__SET_BATT_CTRL_EN_STATE_BODY = sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__SET_LATCH_BATT_STATE_BODY = sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__LATCH_SET_PULSE_LOW_BODY = sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__LATCH_RESET_PULSE_LOW_BODY = sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__CLEAR_RESET_MEMORY_BODY = 2 * sizeof(uint8_t), - WD_CMD_MSGS__PACKED_SIZE__ECHO_MAX_BODY = sizeof(uint8_t) + MAX_ECHO_LENGTH, // largest possible size - WD_CMD_MSGS__PACKED_SIZE__REQUEST_DETAILED_REPORT_BODY = sizeof(uint8_t), - - - // Full Messages - - WD_CMD_MSGS__PACKED_SIZE__RESPONSE_MSG = (3 * sizeof(uint8_t)), - - WD_CMD_MSGS__PACKED_SIZE__RESET_SPECIFIC_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__RESET_SPECIFIC_BODY, - WD_CMD_MSGS__PACKED_SIZE__PREP_FOR_DEPLOY_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__PREP_FOR_DEPLOY_BODY, - WD_CMD_MSGS__PACKED_SIZE__DEPLOY_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__DEPLOY_BODY, - WD_CMD_MSGS__PACKED_SIZE__SWITCH_CONN_MODE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SWITCH_CONN_MODE_BODY, - WD_CMD_MSGS__PACKED_SIZE__SET_DEBUG_COMMS_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_DEBUG_COMMS_STATE_BODY, - WD_CMD_MSGS__PACKED_SIZE__SET_AUTO_HEATER_ON_VALUE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_AUTO_HEATER_ON_VALUE_BODY, - WD_CMD_MSGS__PACKED_SIZE__SET_AUTO_HEATER_OFF_VALUE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_AUTO_HEATER_OFF_VALUE_BODY, - WD_CMD_MSGS__PACKED_SIZE__SET_HEATER_DUTY_CYCLE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_HEATER_DUTY_CYCLE_BODY, - WD_CMD_MSGS__PACKED_SIZE__SET_HEATER_DUTY_CYCLE_PERIOD_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_HEATER_DUTY_CYCLE_PERIOD_BODY, - WD_CMD_MSGS__PACKED_SIZE__SET_VSAE_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_VSAE_STATE_BODY, - WD_CMD_MSGS__PACKED_SIZE__ENTER_SLEEP_MODE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__ENTER_SLEEP_MODE_BODY, - WD_CMD_MSGS__PACKED_SIZE__ENTER_KEEPALIVE_MODE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__ENTER_KEEPALIVE_MODE_BODY, - WD_CMD_MSGS__PACKED_SIZE__ENTER_SERVICE_MODE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__ENTER_SERVICE_MODE_BODY, - WD_CMD_MSGS__PACKED_SIZE__DANG_FORCE_BATT_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__DANG_FORCE_BATT_STATE_BODY, - WD_CMD_MSGS__PACKED_SIZE__SET_CHARGE_EN_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_CHARGE_EN_STATE_BODY, - WD_CMD_MSGS__PACKED_SIZE__SET_CHARGE_REG_EN_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_CHARGE_REG_EN_STATE_BODY, - WD_CMD_MSGS__PACKED_SIZE__SET_BATT_EN_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_BATT_EN_STATE_BODY, - WD_CMD_MSGS__PACKED_SIZE__SET_BATT_CTRL_EN_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_BATT_CTRL_EN_STATE_BODY, - WD_CMD_MSGS__PACKED_SIZE__SET_LATCH_BATT_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_LATCH_BATT_STATE_BODY, - WD_CMD_MSGS__PACKED_SIZE__LATCH_SET_PULSE_LOW_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__LATCH_SET_PULSE_LOW_BODY, - WD_CMD_MSGS__PACKED_SIZE__LATCH_RESET_PULSE_LOW_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__LATCH_RESET_PULSE_LOW_BODY, - WD_CMD_MSGS__PACKED_SIZE__CLEAR_RESET_MEMORY_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__CLEAR_RESET_MEMORY_BODY, - WD_CMD_MSGS__PACKED_SIZE__ECHO_MAX_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__ECHO_MAX_BODY, // maximum possible size - WD_CMD_MSGS__PACKED_SIZE__REQUEST_DETAILED_REPORT_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__REQUEST_DETAILED_REPORT_BODY, - - WD_CMD_MSGS__PACKED_SIZE__SMALLEST_MSG = WD_CMD_MSGS__PACKED_SIZE__RESET_SPECIFIC_MSG, - WD_CMD_MSGS__PACKED_SIZE__LARGEST_MSG = (WD_CMD_MSGS__PACKED_SIZE__ECHO_MAX_MSG > WD_CMD_MSGS__PACKED_SIZE__DANG_FORCE_BATT_STATE_MSG) ? WD_CMD_MSGS__PACKED_SIZE__ECHO_MAX_MSG : WD_CMD_MSGS__PACKED_SIZE__DANG_FORCE_BATT_STATE_MSG -} WdCmdMsgs__PackedSize; - -//###################################################################################################################### -// Message Serialization and Deserialization Functions -//###################################################################################################################### + // ###################################################################################################################### + // Packed Sizes + // ###################################################################################################################### + /** + * @brief The packed sizes of the body and full message for the various command types as well as the command response. + */ + typedef enum WdCmdMsgs__PackedSize + { + WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER = CMD_MSGS__PACKED_SIZE__COMMON_HEADER, + + // Bodies + + WD_CMD_MSGS__PACKED_SIZE__RESET_SPECIFIC_BODY = sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__PREP_FOR_DEPLOY_BODY = sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__DEPLOY_BODY = sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__SWITCH_CONN_MODE_BODY = sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__SET_DEBUG_COMMS_STATE_BODY = sizeof(uint16_t), + WD_CMD_MSGS__PACKED_SIZE__SET_AUTO_HEATER_ON_VALUE_BODY = sizeof(uint16_t), + WD_CMD_MSGS__PACKED_SIZE__SET_AUTO_HEATER_OFF_VALUE_BODY = sizeof(uint16_t), + WD_CMD_MSGS__PACKED_SIZE__SET_HEATER_DUTY_CYCLE_BODY = sizeof(uint16_t), + WD_CMD_MSGS__PACKED_SIZE__SET_HEATER_DUTY_CYCLE_PERIOD_BODY = sizeof(uint16_t), + WD_CMD_MSGS__PACKED_SIZE__SET_VSAE_STATE_BODY = sizeof(uint16_t), + WD_CMD_MSGS__PACKED_SIZE__ENTER_SLEEP_MODE_BODY = sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__ENTER_KEEPALIVE_MODE_BODY = sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__ENTER_SERVICE_MODE_BODY = sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__DANG_FORCE_BATT_STATE_BODY = 3 * sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__SET_CHARGE_EN_STATE_BODY = sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__SET_CHARGE_REG_EN_STATE_BODY = sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__SET_BATT_EN_STATE_BODY = sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__SET_BATT_CTRL_EN_STATE_BODY = sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__SET_LATCH_BATT_STATE_BODY = sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__LATCH_SET_PULSE_LOW_BODY = sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__LATCH_RESET_PULSE_LOW_BODY = sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__CLEAR_RESET_MEMORY_BODY = 2 * sizeof(uint8_t), + WD_CMD_MSGS__PACKED_SIZE__ECHO_MAX_BODY = sizeof(uint8_t) + MAX_ECHO_LENGTH, // largest possible size + WD_CMD_MSGS__PACKED_SIZE__REQUEST_DETAILED_REPORT_BODY = sizeof(uint8_t), + + // Full Messages + + WD_CMD_MSGS__PACKED_SIZE__RESPONSE_MSG = (3 * sizeof(uint8_t)), + + WD_CMD_MSGS__PACKED_SIZE__RESET_SPECIFIC_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__RESET_SPECIFIC_BODY, + WD_CMD_MSGS__PACKED_SIZE__PREP_FOR_DEPLOY_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__PREP_FOR_DEPLOY_BODY, + WD_CMD_MSGS__PACKED_SIZE__DEPLOY_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__DEPLOY_BODY, + WD_CMD_MSGS__PACKED_SIZE__SWITCH_CONN_MODE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SWITCH_CONN_MODE_BODY, + WD_CMD_MSGS__PACKED_SIZE__SET_DEBUG_COMMS_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_DEBUG_COMMS_STATE_BODY, + WD_CMD_MSGS__PACKED_SIZE__SET_AUTO_HEATER_ON_VALUE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_AUTO_HEATER_ON_VALUE_BODY, + WD_CMD_MSGS__PACKED_SIZE__SET_AUTO_HEATER_OFF_VALUE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_AUTO_HEATER_OFF_VALUE_BODY, + WD_CMD_MSGS__PACKED_SIZE__SET_HEATER_DUTY_CYCLE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_HEATER_DUTY_CYCLE_BODY, + WD_CMD_MSGS__PACKED_SIZE__SET_HEATER_DUTY_CYCLE_PERIOD_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_HEATER_DUTY_CYCLE_PERIOD_BODY, + WD_CMD_MSGS__PACKED_SIZE__SET_VSAE_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_VSAE_STATE_BODY, + WD_CMD_MSGS__PACKED_SIZE__ENTER_SLEEP_MODE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__ENTER_SLEEP_MODE_BODY, + WD_CMD_MSGS__PACKED_SIZE__ENTER_KEEPALIVE_MODE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__ENTER_KEEPALIVE_MODE_BODY, + WD_CMD_MSGS__PACKED_SIZE__ENTER_SERVICE_MODE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__ENTER_SERVICE_MODE_BODY, + WD_CMD_MSGS__PACKED_SIZE__DANG_FORCE_BATT_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__DANG_FORCE_BATT_STATE_BODY, + WD_CMD_MSGS__PACKED_SIZE__SET_CHARGE_EN_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_CHARGE_EN_STATE_BODY, + WD_CMD_MSGS__PACKED_SIZE__SET_CHARGE_REG_EN_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_CHARGE_REG_EN_STATE_BODY, + WD_CMD_MSGS__PACKED_SIZE__SET_BATT_EN_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_BATT_EN_STATE_BODY, + WD_CMD_MSGS__PACKED_SIZE__SET_BATT_CTRL_EN_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_BATT_CTRL_EN_STATE_BODY, + WD_CMD_MSGS__PACKED_SIZE__SET_LATCH_BATT_STATE_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__SET_LATCH_BATT_STATE_BODY, + WD_CMD_MSGS__PACKED_SIZE__LATCH_SET_PULSE_LOW_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__LATCH_SET_PULSE_LOW_BODY, + WD_CMD_MSGS__PACKED_SIZE__LATCH_RESET_PULSE_LOW_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__LATCH_RESET_PULSE_LOW_BODY, + WD_CMD_MSGS__PACKED_SIZE__CLEAR_RESET_MEMORY_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__CLEAR_RESET_MEMORY_BODY, + WD_CMD_MSGS__PACKED_SIZE__ECHO_MAX_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__ECHO_MAX_BODY, // maximum possible size + WD_CMD_MSGS__PACKED_SIZE__REQUEST_DETAILED_REPORT_MSG = WD_CMD_MSGS__PACKED_SIZE__COMMON_HEADER + sizeof(uint16_t) + WD_CMD_MSGS__PACKED_SIZE__REQUEST_DETAILED_REPORT_BODY, + + WD_CMD_MSGS__PACKED_SIZE__SMALLEST_MSG = WD_CMD_MSGS__PACKED_SIZE__RESET_SPECIFIC_MSG, + WD_CMD_MSGS__PACKED_SIZE__LARGEST_MSG = (WD_CMD_MSGS__PACKED_SIZE__ECHO_MAX_MSG > WD_CMD_MSGS__PACKED_SIZE__DANG_FORCE_BATT_STATE_MSG) ? WD_CMD_MSGS__PACKED_SIZE__ECHO_MAX_MSG : WD_CMD_MSGS__PACKED_SIZE__DANG_FORCE_BATT_STATE_MSG + } WdCmdMsgs__PackedSize; + + // ###################################################################################################################### + // Message Serialization and Deserialization Functions + // ###################################################################################################################### -/** - * @brief Serializes the message in `src` with system endianness into the buffer `dst` with little endianness. - * - * @param src [IN] The response to be serialized. - * @param dst [OUT] The buffer into which the message will be serialized. Must have a large enough size, as determined - * by the value of `dstLen`, of at least WD_CMD_MSGS__PACKED_SIZE__RESPONSE_MSG bytes. - * @param dstLen [IN] The length of the buffer pointed to by `dst`. - * - * @return One of the following: - * - WD_CMD_MSGS__STATUS__SUCCESS: The function was successful. - * - WD_CMD_MSGS__STATUS__ERROR_NULL: `src` or `dst` was NULL. - * - WD_CMD_MSGS__STATUS__ERROR_BUFFER_TOO_SMALL: `dst` was too small to hold the serialized message. - * - WD_CMD_MSGS__STATUS__ERROR_SERIALIZATION_ERROR: A Serialization function call returned an error. - */ -WdCmdMsgs__Status WdCmdMsgs__serializeGroundResponse(const WdCmdMsgs__Response* src, - void* dst, - size_t dstLen); + /** + * @brief Serializes the message in `src` with system endianness into the buffer `dst` with little endianness. + * + * @param src [IN] The response to be serialized. + * @param dst [OUT] The buffer into which the message will be serialized. Must have a large enough size, as determined + * by the value of `dstLen`, of at least WD_CMD_MSGS__PACKED_SIZE__RESPONSE_MSG bytes. + * @param dstLen [IN] The length of the buffer pointed to by `dst`. + * + * @return One of the following: + * - WD_CMD_MSGS__STATUS__SUCCESS: The function was successful. + * - WD_CMD_MSGS__STATUS__ERROR_NULL: `src` or `dst` was NULL. + * - WD_CMD_MSGS__STATUS__ERROR_BUFFER_TOO_SMALL: `dst` was too small to hold the serialized message. + * - WD_CMD_MSGS__STATUS__ERROR_SERIALIZATION_ERROR: A Serialization function call returned an error. + */ + WdCmdMsgs__Status WdCmdMsgs__serializeGroundResponse(const WdCmdMsgs__Response *src, + void *dst, + size_t dstLen); -/** - * @brief Deserializes the message body packed in `src` with little endianness into the struct `dst` with system - * endianness. - * - * The type of body in `src` is determined by `srcMsgId`. - * - * @param srcMsgId [IN] The message ID of the message body type packed in `src`. - * @param src [IN] The buffer containing the packed message body to be deserialized. Must have a size, as determined - * by the value of `srcLen`, that is large enough to fit the message body with the type specified by - * `srcMsgId`. The exact size required varies based on the type of the message body. - * @param srcLen [IN] The length of the buffer pointed to by `src`. - * @param dst [OUT] The struct into which the message body will be deserialized. - * - * @return One of the following: - * - WD_CMD_MSGS__STATUS__SUCCESS: The function was successful. - * - WD_CMD_MSGS__STATUS__ERROR_NULL: `src` or `dst` was NULL. - * - WD_CMD_MSGS__STATUS__ERROR_BUFFER_TOO_SMALL: `srcLen` was too small to hold the message body. - * - WD_CMD_MSGS__STATUS__ERROR_SERIALIZATION_ERROR: A Serialization function call returned an error. - */ -WdCmdMsgs__Status -WdCmdMsgs__deserializeBody(WdCmdMsgs__CommandId srcMsgId, - const void* src, - size_t srcLen, - WdCmdMsgs__MessageBody* dst); + /** + * @brief Deserializes the message body packed in `src` with little endianness into the struct `dst` with system + * endianness. + * + * The type of body in `src` is determined by `srcMsgId`. + * + * @param srcMsgId [IN] The message ID of the message body type packed in `src`. + * @param src [IN] The buffer containing the packed message body to be deserialized. Must have a size, as determined + * by the value of `srcLen`, that is large enough to fit the message body with the type specified by + * `srcMsgId`. The exact size required varies based on the type of the message body. + * @param srcLen [IN] The length of the buffer pointed to by `src`. + * @param dst [OUT] The struct into which the message body will be deserialized. + * + * @return One of the following: + * - WD_CMD_MSGS__STATUS__SUCCESS: The function was successful. + * - WD_CMD_MSGS__STATUS__ERROR_NULL: `src` or `dst` was NULL. + * - WD_CMD_MSGS__STATUS__ERROR_BUFFER_TOO_SMALL: `srcLen` was too small to hold the message body. + * - WD_CMD_MSGS__STATUS__ERROR_SERIALIZATION_ERROR: A Serialization function call returned an error. + */ + WdCmdMsgs__Status + WdCmdMsgs__deserializeBody(WdCmdMsgs__CommandId srcMsgId, + const void *src, + size_t srcLen, + WdCmdMsgs__MessageBody *dst); -/** - * @brief Deserializes the message packed in `src` with little endianness into the struct `dst` with system endianness. - * - * @param src [IN] The buffer containing the packed message to be deserialized. Must have a size, as determined by the - * value of `srcLen`, that is large enough to fit a message header and the message body whose type is - * specified in the message header. The exact size required varies based on the type of the message. At - * a minimum it must be WD_CMD_MSGS__PACKED_SIZE__SMALLEST_MSG, but it may need to be as large as - * WD_CMD_MSGS__PACKED_SIZE__LARGEST_MSG. - * @param srcLen [IN] The length of the buffer pointed to by `src`. - * @param dst [OUT] The struct into which the message will be deserialized. - * @param deserializeHeader [IN] Whether or not to deserialize the header into `dst->commonHeader`. This can be set to - * false if (for instance) the command header has already been deserialized prior to calling - * this function. - * - * @return One of the following: - * - WD_CMD_MSGS__STATUS__SUCCESS: The function was successful. - * - WD_CMD_MSGS__STATUS__ERROR_NULL: `src` or `dst` was NULL. - * - WD_CMD_MSGS__STATUS__ERROR_BUFFER_TOO_SMALL: `srcLen` was too small to hold the message. - * - WD_CMD_MSGS__STATUS__ERROR_SERIALIZATION_ERROR: A Serialization function call returned an error. - */ -WdCmdMsgs__Status -WdCmdMsgs__deserializeMessage(const void* src, - size_t srcLen, - WdCmdMsgs__Message* dst, - BOOL deserializeHeader); + /** + * @brief Deserializes the message packed in `src` with little endianness into the struct `dst` with system endianness. + * + * @param src [IN] The buffer containing the packed message to be deserialized. Must have a size, as determined by the + * value of `srcLen`, that is large enough to fit a message header and the message body whose type is + * specified in the message header. The exact size required varies based on the type of the message. At + * a minimum it must be WD_CMD_MSGS__PACKED_SIZE__SMALLEST_MSG, but it may need to be as large as + * WD_CMD_MSGS__PACKED_SIZE__LARGEST_MSG. + * @param srcLen [IN] The length of the buffer pointed to by `src`. + * @param dst [OUT] The struct into which the message will be deserialized. + * @param deserializeHeader [IN] Whether or not to deserialize the header into `dst->commonHeader`. This can be set to + * false if (for instance) the command header has already been deserialized prior to calling + * this function. + * + * @return One of the following: + * - WD_CMD_MSGS__STATUS__SUCCESS: The function was successful. + * - WD_CMD_MSGS__STATUS__ERROR_NULL: `src` or `dst` was NULL. + * - WD_CMD_MSGS__STATUS__ERROR_BUFFER_TOO_SMALL: `srcLen` was too small to hold the message. + * - WD_CMD_MSGS__STATUS__ERROR_SERIALIZATION_ERROR: A Serialization function call returned an error. + */ + WdCmdMsgs__Status + WdCmdMsgs__deserializeMessage(const void *src, + size_t srcLen, + WdCmdMsgs__Message *dst, + BOOL deserializeHeader); -/** - * @} - */ + /** + * @} + */ #ifdef __cplusplus } /* close extern "C" */ diff --git a/Apps/FlightSoftware/Watchdog/include/drivers/adc.h b/Apps/FlightSoftware/Watchdog/include/drivers/adc.h index 19a71f55e..e3d370d45 100644 --- a/Apps/FlightSoftware/Watchdog/include/drivers/adc.h +++ b/Apps/FlightSoftware/Watchdog/include/drivers/adc.h @@ -16,30 +16,30 @@ extern "C" { #endif -typedef struct AdcValues -{ - volatile uint16_t vLanderSense; - volatile uint16_t battTemp; - volatile uint16_t battRT; - volatile uint16_t vSysAllSense; - volatile uint16_t iSysAllSense; - volatile uint16_t vBattSense; - volatile uint16_t vcc2Point5; - volatile uint16_t vcc2Point8; - volatile uint16_t vcc28; - volatile uint16_t vcc24; - volatile BOOL sampleComplete; -} AdcValues; - -/** - * @brief Initialize ADC hardware. - * Sets up the interrupts and whatnot for ADC. - */ -void adc_init(volatile uint16_t* watchdogFlags); - -BOOL isAdcSampleDone(void); - -BOOL adcCheckVoltageLevels(AdcValues* output); + typedef struct AdcValues + { + volatile uint16_t vLanderSense; + volatile uint16_t battTemp; // charging thermistor + volatile uint16_t battRT; // main heater thermistor + volatile uint16_t vSysAllSense; + volatile uint16_t iSysAllSense; + volatile uint16_t vBattSense; + volatile uint16_t vcc2Point5; + volatile uint16_t vcc2Point8; + volatile uint16_t vcc28; + volatile uint16_t vcc24; + volatile BOOL sampleComplete; + } AdcValues; + + /** + * @brief Initialize ADC hardware. + * Sets up the interrupts and whatnot for ADC. + */ + void adc_init(volatile uint16_t *watchdogFlags); + + BOOL isAdcSampleDone(void); + + BOOL adcCheckVoltageLevels(AdcValues *output); #ifdef __cplusplus } /* close extern "C" */ diff --git a/Apps/FlightSoftware/Watchdog/include/flags.h b/Apps/FlightSoftware/Watchdog/include/flags.h index 2059082c8..6669b76f0 100644 --- a/Apps/FlightSoftware/Watchdog/include/flags.h +++ b/Apps/FlightSoftware/Watchdog/include/flags.h @@ -15,10 +15,10 @@ extern "C" #define FLAG_UART0_RX_PACKET 0x1 #define FLAG_UART1_RX_PACKET 0x2 -#define FLAG_TIMER_TICK 0x8 -#define FLAG_TEMP_LOW 0x10 -#define FLAG_TEMP_HIGH 0x20 -#define FLAG_POWER_ISSUE 0x40 +#define FLAG_TIMER_TICK 0x8 +#define FLAG_TEMP_LOW 0x10 +#define FLAG_TEMP_HIGH 0x20 +#define FLAG_POWER_ISSUE 0x40 #define FLAG_I2C_GAUGE_READING_ACTIVE 0x80 #define WDFLAG_RADIO_KICK 0x0001 @@ -30,102 +30,124 @@ extern "C" #define WDFLAG_UNRESET_MOTOR2 0x0040 #define WDFLAG_UNRESET_MOTOR3 0x0080 #define WDFLAG_UNRESET_MOTOR4 0x0100 -#define WDFLAG_UNRESET_FPGA 0x0200 -#define WDFLAG_UNRESET_3V3 0x0400 -#define WDFLAG_POWER_ON_V_SYS_ALL 0x0800 -#define WDFLAG_HERCULES_KICK 0x1000 -#define WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE 0x2000 +#define WDFLAG_UNRESET_FPGA 0x0200 +#define WDFLAG_UNRESET_3V3 0x0400 +#define WDFLAG_POWER_ON_V_SYS_ALL 0x0800 +#define WDFLAG_HERCULES_KICK 0x1000 +#define WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE 0x2000 -#define WDOPT_MONITOR_HERCULES 0x0001 +#define WDOPT_MONITOR_HERCULES 0x0001 #define ENTER_DEFAULT_LPM LPM1 #define EXIT_DEFAULT_LPM LPM1_EXIT -typedef struct HeaterParams -{ - uint16_t m_kpHeater; - uint16_t m_pwmLimit; - uint16_t m_heaterSetpoint; - uint16_t m_heaterWindow; - uint16_t m_heaterOnVal; - uint16_t m_heaterOffVal; - BOOL m_heating; - BOOL m_heatingControlEnabled; - uint16_t m_heaterDutyCyclePeriod; - uint16_t m_heaterDutyCycle; -} HeaterParams; - -#define DEFAULT_KP_HEATER 500 -#define DEFAULT_PWM_LIMIT 8500 -#define DEFAULT_HEATER_SETPOINT 3325 -#define DEFAULT_HEATER_WINDOW 60 -// 3670 is the -5 deg C thermistor voltage ADC reading -#define DEFAULT_HEATER_ON_VAL 3670 -// 3670 is the 0 deg C thermistor voltage ADC reading -#define DEFAULT_HEATER_OFF_VAL 3352 + typedef enum Heater_ForceState + { + // force the heater to always be on or off (at whatever duty) + // - using specific enums to make it hard to be bitflipped + // into this state. + HEATER_FORCE_ALWAYS_ON = 0xAA, // heater always ON + HEATER_FORCE_ALWAYS_OFF = 0x55, // heater always OFF + HEATER_FORCE_NOTHING = 0xFF // let heater control do its thing + } Heater_ForceState; + + typedef enum HeaterControl_InputSource + { + // force the heater to always be on or off (at whatever duty) + // - using specific enums to make it hard to be bitflipped + // into this state. + HEATER_CONTROL_INPUT_BATT_RT = 0xAA, // Use Normal Battery RT Thermistor (Default) + HEATER_CONTROL_INPUT_CHARGER = 0x55, // Power up the Charging IC, Don't Charge, and use the Charging Thermistor (only as a last ditch effort) + } HeaterControl_InputSource; + + typedef struct HeaterParams + { + uint16_t m_kpHeater; + uint16_t m_pwmLimit; + uint16_t m_heaterSetpoint; + uint16_t m_heaterWindow; + uint16_t m_heaterOnVal; // heater transitions to ON when T ADC < this value + uint16_t m_heaterOffVal; // heater transitions to OFF when T ADC > this value + BOOL m_heating; + BOOL m_heatingControlEnabled; + uint16_t m_heaterDutyCyclePeriod; + uint16_t m_heaterDutyCycle; + BOOL m_thresholdsChanged; // flag that the on or off thresholds have changed since they were last checked + Heater_ForceState m_forceState; // force the heater to always be on or off (at whatever duty) - using specific enums to make it hard to be bitflipped into this state. + HeaterControl_InputSource m_inputSource; // what sensor should drive the heater controller (note, changing this should be accompanied by changing thresholds) + } HeaterParams; + +#define DEFAULT_KP_HEATER 500 // deprecated +#define DEFAULT_PWM_LIMIT 9999 // deprecated +#define DEFAULT_HEATER_SETPOINT 3325 // deprecated +#define DEFAULT_HEATER_WINDOW 60 // deprecated +// 3670 is the -5 deg C thermistor voltage ADC reading - heater transitions to ON when T ADC < this value: +#define DEFAULT_HEATER_ON_VAL 2781 +// 3670 is the 0 deg C thermistor voltage ADC reading - heater transitions to OFF when T ADC > this value: +#define DEFAULT_HEATER_OFF_VAL 2291 #define DEFAULT_HEATING_CONTROL_ENABLED TRUE #define DEFAULT_HEATER_DUTY_CYCLE_PERIOD 10000 -#define DEFAULT_HEATER_DUTY_CYCLE 0 +#define DEFAULT_HEATER_DUTY_CYCLE 8500 -#define GENERIC_BIT_INDEX_TO_TYPE_MASK(type, index) (((type) 1) << ((type) (index))) +#define GENERIC_BIT_INDEX_TO_TYPE_MASK(type, index) (((type)1) << ((type)(index))) #define GENERIC_BIT_INDEX_TO_UINT8_MASK(index) GENERIC_BIT_INDEX_TO_TYPE_MASK(uint8_t, index) #define GENERIC_BIT_INDEX_TO_UINT16_MASK(index) GENERIC_BIT_INDEX_TO_TYPE_MASK(uint16_t, index) #define GENERIC_BIT_INDEX_TO_UINT32_MASK(index) GENERIC_BIT_INDEX_TO_TYPE_MASK(uint32_t, index) #define GENERIC_BIT_INDEX_TO_UINT64_MASK(index) GENERIC_BIT_INDEX_TO_TYPE_MASK(uint64_t, index) #define GENERIC_SET_BIT_IN_UINT8(uintVal, index) \ - uintVal |= ((uint8_t) GENERIC_BIT_INDEX_TO_UINT8_MASK(index)) + uintVal |= ((uint8_t)GENERIC_BIT_INDEX_TO_UINT8_MASK(index)) #define GENERIC_SET_BIT_IN_UINT16(uintVal, index) \ - uintVal |= ((uint16_t) GENERIC_BIT_INDEX_TO_UINT16_MASK(index)) + uintVal |= ((uint16_t)GENERIC_BIT_INDEX_TO_UINT16_MASK(index)) #define GENERIC_SET_BIT_IN_UINT32(uintVal, index) \ - uintVal |= ((uint32_t) GENERIC_BIT_INDEX_TO_UINT32_MASK(index)) + uintVal |= ((uint32_t)GENERIC_BIT_INDEX_TO_UINT32_MASK(index)) #define GENERIC_SET_BIT_IN_UINT64(uintVal, index) \ - uintVal |= ((uint64_t) GENERIC_BIT_INDEX_TO_UINT64_MASK(index)) + uintVal |= ((uint64_t)GENERIC_BIT_INDEX_TO_UINT64_MASK(index)) #define GENERIC_CLEAR_BIT_IN_UINT8(uintVal, index) \ - uintVal &= ~((uint8_t) GENERIC_BIT_INDEX_TO_UINT8_MASK(index)) + uintVal &= ~((uint8_t)GENERIC_BIT_INDEX_TO_UINT8_MASK(index)) #define GENERIC_CLEAR_BIT_IN_UINT16(uintVal, index) \ - uintVal &= ~((uint16_t) GENERIC_BIT_INDEX_TO_UINT16_MASK(index)) + uintVal &= ~((uint16_t)GENERIC_BIT_INDEX_TO_UINT16_MASK(index)) #define GENERIC_CLEAR_BIT_IN_UINT32(uintVal, index) \ - uintVal &= ~((uint32_t) GENERIC_BIT_INDEX_TO_UINT32_MASK(index)) + uintVal &= ~((uint32_t)GENERIC_BIT_INDEX_TO_UINT32_MASK(index)) #define GENERIC_CLEAR_BIT_IN_UINT64(uintVal, index) \ - uintVal &= ~((uint64_t) GENERIC_BIT_INDEX_TO_UINT64_MASK(index)) - -typedef enum OutputPinStatusBitIndices -{ - // These are digital outputs. If the corresponding bit is set, these should be high - OPSBI__V_LANDER_REG_EN = 0, - OPSBI__HEATER, - OPSBI__DEPLOYMENT, - OPSBI__FPGA_KICK_AKA_CAM_SELECT, - OPSBI__LATCH_BATT, - OPSBI__3V3_EN, - OPSBI__HERCULES_ON, - OPSBI__FPGA_ON, - OPSBI__MOTOR_ON, - OPSBI__CHRG_EN, - OPSBI__CHRG_EN_FORCE_HIGH, - OPSBI__BATTERY_EN, - OPSBI__V_SYS_ALL_EN, - OPSBI__V_SYS_ALL_EN_FORCE_LOW, - OPSBI__HERCULES_N_RST, - OPSBI__HERCULES_N_PORRST, - OPSBI__FPGA_N_RST, - OPSBI__RADIO_N_RST, - OPSBI__RADIO_ON, - OPSBI__BMS_BOOT, - OPSBI__LATCH_SET, - OPSBI__LATCH_RESET, - OPSBI__BATT_STAT, - - OPSBI__RADIO_N_RESET_IS_INPUT, - OPSBI__HERCULES_N_RST_IS_INPUT, - OPSBI__HERCULES_N_PORRST_IS_INPUT, - OPSBI__FPGA_N_RST_IS_INPUT, - OPSBI__LATCH_SET_IS_INPUT, - OPSBI__LATCH_RESET_IS_INPUT, - OPSBI__BATT_STAT_IS_INPUT, -} OutputPinStatusBitIndices; + uintVal &= ~((uint64_t)GENERIC_BIT_INDEX_TO_UINT64_MASK(index)) + + typedef enum OutputPinStatusBitIndices + { + // These are digital outputs. If the corresponding bit is set, these should be high + OPSBI__V_LANDER_REG_EN = 0, + OPSBI__HEATER, + OPSBI__DEPLOYMENT, + OPSBI__FPGA_KICK_AKA_CAM_SELECT, + OPSBI__LATCH_BATT, + OPSBI__3V3_EN, + OPSBI__HERCULES_ON, + OPSBI__FPGA_ON, + OPSBI__MOTOR_ON, + OPSBI__CHRG_EN, + OPSBI__CHRG_EN_FORCE_HIGH, + OPSBI__BATTERY_EN, + OPSBI__V_SYS_ALL_EN, + OPSBI__V_SYS_ALL_EN_FORCE_LOW, + OPSBI__HERCULES_N_RST, + OPSBI__HERCULES_N_PORRST, + OPSBI__FPGA_N_RST, + OPSBI__RADIO_N_RST, + OPSBI__RADIO_ON, + OPSBI__BMS_BOOT, + OPSBI__LATCH_SET, + OPSBI__LATCH_RESET, + OPSBI__BATT_STAT, + + OPSBI__RADIO_N_RESET_IS_INPUT, + OPSBI__HERCULES_N_RST_IS_INPUT, + OPSBI__HERCULES_N_PORRST_IS_INPUT, + OPSBI__FPGA_N_RST_IS_INPUT, + OPSBI__LATCH_SET_IS_INPUT, + OPSBI__LATCH_RESET_IS_INPUT, + OPSBI__BATT_STAT_IS_INPUT, + } OutputPinStatusBitIndices; #define OPSBI_MASK(opsbi_index_enum) GENERIC_BIT_INDEX_TO_UINT32_MASK(opsbi_index_enum) #define SET_OPSBI_IN_UINT(opsbiUint, opsbi_index_enum) GENERIC_SET_BIT_IN_UINT32(opsbiUint, opsbi_index_enum) @@ -133,24 +155,24 @@ typedef enum OutputPinStatusBitIndices #define CLEAR_OPSBI_IN_UINT(opsbiUint, opsbi_index_enum) GENERIC_CLEAR_BIT_IN_UINT32(opsbiUint, opsbi_index_enum) #define CLEAR_OPSBI_IN_UINT_PTR(opsbiUintPtr, opsbi_index_enum) CLEAR_OPSBI_IN_UINT(*opsbiUintPtr, opsbi_index_enum) -typedef enum InputPinAndStateBitIndices -{ - // State related things - IPASBI__UART0_INITIALIZED = 0, - IPASBI__UART1_INITIALIZED, - IPASBI__DEPLOYED, - IPASBI__DEPLOYING, - - // These are digital inputs. If the corresponding bit is set, then the input reads high - IPASBI__CHARGE_STAT1, - IPASBI__CHARGE_STAT2, - IPASBI__BATT_STAT, - IPASBI__LATCH_STAT, - IPASBI__PG12, - IPASBI__PG18, - IPASBI__PG33, - IPASBI__PG50, -} InputPinAndStateBitIndices; + typedef enum InputPinAndStateBitIndices + { + // State related things + IPASBI__UART0_INITIALIZED = 0, + IPASBI__UART1_INITIALIZED, + IPASBI__DEPLOYED, + IPASBI__DEPLOYING, + + // These are digital inputs. If the corresponding bit is set, then the input reads high + IPASBI__CHARGE_STAT1, + IPASBI__CHARGE_STAT2, + IPASBI__BATT_STAT, + IPASBI__LATCH_STAT, + IPASBI__PG12, + IPASBI__PG18, + IPASBI__PG33, + IPASBI__PG50, + } InputPinAndStateBitIndices; #define IPASBI_MASK(ipasbi_index_enum) GENERIC_BIT_INDEX_TO_UINT16_MASK(ipasbi_index_enum) #define SET_IPASBI_IN_UINT(ipasbiUint, ipasbi_index_enum) GENERIC_SET_BIT_IN_UINT16(ipasbiUint, ipasbi_index_enum) @@ -158,47 +180,47 @@ typedef enum InputPinAndStateBitIndices #define CLEAR_IPASBI_IN_UINT(ipasbiUint, ipasbi_index_enum) GENERIC_CLEAR_BIT_IN_UINT16(ipasbiUint, ipasbi_index_enum) #define CLEAR_IPASBI_IN_UINT_PTR(ipasbiUintPtr, ipasbi_index_enum) CLEAR_IPASBI_IN_UINT(*ipasbiUintPtr, ipasbi_index_enum) -typedef enum ResetActionBitIndices -{ - RABI__NO_RESET = 0, - RABI__HERCULES_RESET, - RABI__HERCULES_UNRESET, - RABI__HERCULES_POWER_ON, - RABI__HERCULES_POWER_OFF, - RABI__RADIO_RESET, - RABI__RADIO_UNRESET, - RABI__RADIO_POWER_ON, - RABI__RADIO_POWER_OFF, - RABI__CAM_FPGA_RESET, - RABI__CAM_FPGA_UNRESET, - RABI__CAM_FPGA_POWER_ON, - RABI__CAM_FPGA_POWER_OFF, - RABI__ALL_MOTORS_POWER_ON, - RABI__ALL_MOTORS_POWER_OFF, - RABI__3V3_EN_RESET, - RABI__3V3_EN_UNRESET, - RABI__3V3_EN_POWER_ON, - RABI__3V3_EN_POWER_OFF, - RABI__V_SYS_ALL_OFF__RESET, - RABI__V_SYS_ALL_ON__UNRESET, - RABI__V_SYS_ALL_POWER_ON, - RABI__V_SYS_ALL_POWER_OFF, - RABI__HDRM_DEPLOY_SIGNAL_POWER_OFF, - RABI__FPGA_CAM_0_SELECT, - RABI__FPGA_CAM_1_SELECT, - RABI__BATTERY_CHARGE_START, - RABI__BATTERY_CHARGE_STOP, - RABI__RS422_UART_ENABLE, - RABI__RS422_UART_DISABLE, - RABI__AUTO_HEATER_CONTROLLER_ENABLE, - RABI__AUTO_HEATER_CONTROLLER_DISABLE, - RABI__HERCULES_WATCHDOG_ENABLE, - RABI__HERCULES_WATCHDOG_DISABLE, - RABI__BATTERIES_ENABLE, - RABI__BATTERIES_DISABLE, - RABI__HDRM_DEPLOY_SIGNAL_POWER_ON, - RABI__HERCULES_WATCHDOG_RESET -} ResetActionBitIndices; + typedef enum ResetActionBitIndices + { + RABI__NO_RESET = 0, + RABI__HERCULES_RESET, + RABI__HERCULES_UNRESET, + RABI__HERCULES_POWER_ON, + RABI__HERCULES_POWER_OFF, + RABI__RADIO_RESET, + RABI__RADIO_UNRESET, + RABI__RADIO_POWER_ON, + RABI__RADIO_POWER_OFF, + RABI__CAM_FPGA_RESET, + RABI__CAM_FPGA_UNRESET, + RABI__CAM_FPGA_POWER_ON, + RABI__CAM_FPGA_POWER_OFF, + RABI__ALL_MOTORS_POWER_ON, + RABI__ALL_MOTORS_POWER_OFF, + RABI__3V3_EN_RESET, + RABI__3V3_EN_UNRESET, + RABI__3V3_EN_POWER_ON, + RABI__3V3_EN_POWER_OFF, + RABI__V_SYS_ALL_OFF__RESET, + RABI__V_SYS_ALL_ON__UNRESET, + RABI__V_SYS_ALL_POWER_ON, + RABI__V_SYS_ALL_POWER_OFF, + RABI__HDRM_DEPLOY_SIGNAL_POWER_OFF, + RABI__FPGA_CAM_0_SELECT, + RABI__FPGA_CAM_1_SELECT, + RABI__BATTERY_CHARGE_START, + RABI__BATTERY_CHARGE_STOP, + RABI__RS422_UART_ENABLE, + RABI__RS422_UART_DISABLE, + RABI__AUTO_HEATER_CONTROLLER_ENABLE, + RABI__AUTO_HEATER_CONTROLLER_DISABLE, + RABI__HERCULES_WATCHDOG_ENABLE, + RABI__HERCULES_WATCHDOG_DISABLE, + RABI__BATTERIES_ENABLE, + RABI__BATTERIES_DISABLE, + RABI__HDRM_DEPLOY_SIGNAL_POWER_ON, + RABI__HERCULES_WATCHDOG_RESET + } ResetActionBitIndices; #define RABI_MASK(rabi_index_enum) GENERIC_BIT_INDEX_TO_UINT64_MASK(rabi_index_enum) #define SET_RABI_IN_UINT(rabiUint, rabi_index_enum) GENERIC_SET_BIT_IN_UINT64(rabiUint, rabi_index_enum) @@ -206,14 +228,14 @@ typedef enum ResetActionBitIndices #define CLEAR_RABI_IN_UINT(rabiUint, rabi_index_enum) GENERIC_CLEAR_BIT_IN_UINT64(rabiUint, rabi_index_enum) #define CLEAR_RABI_IN_UINT_PTR(rabiUintPtr, rabi_index_enum) CLEAR_RABI_IN_UINT(*rabiUintPtr, rabi_index_enum) -typedef struct WatchdogStateDetails -{ - uint32_t m_outputPinBits; - uint16_t m_inputPinAndStateBits; - uint64_t m_resetActionBits; - uint8_t m_stateAsUint; - HeaterParams m_hParams; -} WatchdogStateDetails; + typedef struct WatchdogStateDetails + { + uint32_t m_outputPinBits; + uint16_t m_inputPinAndStateBits; + uint64_t m_resetActionBits; + uint8_t m_stateAsUint; + HeaterParams m_hParams; + } WatchdogStateDetails; #ifdef __cplusplus } /* close extern "C" */ diff --git a/Apps/FlightSoftware/Watchdog/include/stateMachine/RoverStateBase.hpp b/Apps/FlightSoftware/Watchdog/include/stateMachine/RoverStateBase.hpp index 8083bed00..9e9b1b4f6 100644 --- a/Apps/FlightSoftware/Watchdog/include/stateMachine/RoverStateBase.hpp +++ b/Apps/FlightSoftware/Watchdog/include/stateMachine/RoverStateBase.hpp @@ -11,251 +11,251 @@ namespace iris { class RoverStateBase { - public: - explicit RoverStateBase(RoverState state); + public: + explicit RoverStateBase(RoverState state); - RoverState getState(); + RoverState getState(); - virtual bool canEnterLowPowerMode(RoverContext& theContext); + virtual bool canEnterLowPowerMode(RoverContext &theContext); - // The functions to handle events - virtual RoverState handleLanderData(RoverContext& theContext); - virtual RoverState handleHerculesData(RoverContext& theContext); - virtual RoverState handleHighTemp(RoverContext& theContext); - virtual RoverState handleWdIntRisingEdge(RoverContext& theContext); - virtual RoverState handleWdIntFallingEdge(RoverContext& theContext); + // The functions to handle events + virtual RoverState handleLanderData(RoverContext &theContext); + virtual RoverState handleHerculesData(RoverContext &theContext); + virtual RoverState handleHighTemp(RoverContext &theContext); + virtual RoverState handleWdIntRisingEdge(RoverContext &theContext); + virtual RoverState handleWdIntFallingEdge(RoverContext &theContext); - virtual RoverState handleTimerTick(RoverContext& theContext) = 0; - virtual RoverState handlePowerIssue(RoverContext& theContext) = 0; - virtual RoverState spinOnce(RoverContext& theContext) = 0; + virtual RoverState handleTimerTick(RoverContext &theContext) = 0; + virtual RoverState handlePowerIssue(RoverContext &theContext) = 0; + virtual RoverState spinOnce(RoverContext &theContext) = 0; - virtual RoverState transitionTo(RoverContext& theContext) = 0; + virtual RoverState transitionTo(RoverContext &theContext) = 0; - virtual void enableHerculesComms(RoverContext& theContext); + virtual void enableHerculesComms(RoverContext &theContext); - static void herculesMsgCallback(HercMsgs__Header* header, - uint8_t* payloadBuffer, - size_t payloadSize, - void* userArg); + static void herculesMsgCallback(HercMsgs__Header *header, + uint8_t *payloadBuffer, + size_t payloadSize, + void *userArg); - static void landerMsgCallback(uint8_t* rxDataBuffer, size_t rxDataLen, void* userArg); - - protected: - virtual LanderComms__Status txDownlinkData(RoverContext& theContext, void* data, size_t dataSize, - bool fromHercules=false); - - virtual RoverState handleWdIntEdge(bool rising, RoverContext& theContext); - - virtual void initiateNextI2cAction(RoverContext& theContext); - - virtual void heaterControl(RoverContext& theContext); - - virtual RoverState performWatchdogCommand(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState performResetCommand(RoverContext& theContext, - WdCmdMsgs__ResetSpecificId resetValue, - WdCmdMsgs__Response* response) = 0; - - virtual RoverState handleUplinkFromLander(RoverContext& theContext, - uint8_t* rxDataBuffer, - size_t rxDataLen); - - virtual RoverState handleStrokeFromHercules(RoverContext& theContext, - HercMsgs__Header* header); - - virtual RoverState handleDownlinkFromHercules(RoverContext& theContext, - HercMsgs__Header* header, - uint8_t* payloadBuffer, - size_t payloadSize); - - virtual RoverState handleDebugFromHercules(RoverContext& theContext, - HercMsgs__Header* header, - uint8_t* payloadBuffer, - size_t payloadSize); - - virtual RoverState handleResetFromHercules(RoverContext& theContext, - HercMsgs__Header* header); - - virtual RoverState pumpMsgsFromLander(RoverContext& theContext); - - virtual RoverState pumpMsgsFromHercules(RoverContext& theContext); - - void sendLanderResponse(RoverContext& theContext, WdCmdMsgs__Response& response); - - // Specific watchdog command handling - virtual RoverState doGndCmdResetSpecific(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdPrepForDeploy(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdDeploy(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdSwitchConnMode(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdSetDebugCommsState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdSetAutoHeaterOnValue(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdSetAutoHeaterOffValue(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdSetHeaterDutyCycle(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdSetHeaterDutyCyclePeriod(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdSetVSAEState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdEnterSleepMode(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdEnterKeepAliveMode(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdEnterServiceMode(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdDangForceBattState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdSetChargeEnState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdSetChargeRegEnState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdSetBattEnState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdSetBattCtrlEnState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdSetLatchBattState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdLatchSetPulseLow(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdLatchResetPulseLow(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdClearResetMemory(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdEcho(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual RoverState doGndCmdRequestDetailedReport(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse); - - virtual void echoToLander(RoverContext& theContext, uint8_t numBytesToEcho, const uint8_t* bytesToEcho); - - virtual void sendDetailedReportToLander(RoverContext& theContext); - - // Specific reset command handling - void doConditionalResetSpecific(RoverContext& theContext, - WdCmdMsgs__ResetSpecificId resetValue, - WdCmdMsgs__Response* response, - bool allowPowerOn, - bool allowDisableRs422, - bool allowDeploy, - bool allowUndeploy, - bool& needToWriteIoExpander); - - - virtual RoverState handleRadioPowerCycleRadioCommand(RoverContext& theContext); - virtual RoverState handleRadioPowerCycleHerculesCommand(RoverContext& theContext); - virtual RoverState handleRadioExitStasisCommand(RoverContext& theContext); - virtual RoverState handleRadioEnterStasisCommand(RoverContext& theContext); - virtual RoverState handleRadioGotWifiCommand(RoverContext& theContext); - private: - RoverState m_state; - - RoverState m_pumpMsgsFromLanderReturnState; - RoverState m_pumpMsgsFromHerculesReturnState; + static void landerMsgCallback(uint8_t *rxDataBuffer, size_t rxDataLen, void *userArg); + + protected: + virtual LanderComms__Status txDownlinkData(RoverContext &theContext, void *data, size_t dataSize, + bool fromHercules = false); + + virtual RoverState handleWdIntEdge(bool rising, RoverContext &theContext); + + virtual void initiateNextI2cAction(RoverContext &theContext); + + virtual void heaterControl(RoverContext &theContext); + + virtual RoverState performWatchdogCommand(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState performResetCommand(RoverContext &theContext, + WdCmdMsgs__ResetSpecificId resetValue, + WdCmdMsgs__Response *response) = 0; + + virtual RoverState handleUplinkFromLander(RoverContext &theContext, + uint8_t *rxDataBuffer, + size_t rxDataLen); + + virtual RoverState handleStrokeFromHercules(RoverContext &theContext, + HercMsgs__Header *header); + + virtual RoverState handleDownlinkFromHercules(RoverContext &theContext, + HercMsgs__Header *header, + uint8_t *payloadBuffer, + size_t payloadSize); + + virtual RoverState handleDebugFromHercules(RoverContext &theContext, + HercMsgs__Header *header, + uint8_t *payloadBuffer, + size_t payloadSize); + + virtual RoverState handleResetFromHercules(RoverContext &theContext, + HercMsgs__Header *header); + + virtual RoverState pumpMsgsFromLander(RoverContext &theContext); + + virtual RoverState pumpMsgsFromHercules(RoverContext &theContext); + + void sendLanderResponse(RoverContext &theContext, WdCmdMsgs__Response &response); + + // Specific watchdog command handling + virtual RoverState doGndCmdResetSpecific(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdPrepForDeploy(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdDeploy(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdSwitchConnMode(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdSetDebugCommsState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdSetAutoHeaterOnValue(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdSetAutoHeaterOffValue(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdSetHeaterDutyCycle(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdSetHeaterDutyCyclePeriod(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdSetVSAEState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdEnterSleepMode(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdEnterKeepAliveMode(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdEnterServiceMode(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdDangForceBattState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdSetChargeEnState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdSetChargeRegEnState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdSetBattEnState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdSetBattCtrlEnState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdSetLatchBattState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdLatchSetPulseLow(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdLatchResetPulseLow(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdClearResetMemory(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdEcho(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual RoverState doGndCmdRequestDetailedReport(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse); + + virtual void echoToLander(RoverContext &theContext, uint8_t numBytesToEcho, const uint8_t *bytesToEcho); + + virtual void sendDetailedReportToLander(RoverContext &theContext, bool alsoSendHeartbeats = false); + + // Specific reset command handling + void doConditionalResetSpecific(RoverContext &theContext, + WdCmdMsgs__ResetSpecificId resetValue, + WdCmdMsgs__Response *response, + bool allowPowerOn, + bool allowDisableRs422, + bool allowDeploy, + bool allowUndeploy, + bool &needToWriteIoExpander); + + virtual RoverState handleRadioPowerCycleRadioCommand(RoverContext &theContext); + virtual RoverState handleRadioPowerCycleHerculesCommand(RoverContext &theContext); + virtual RoverState handleRadioExitStasisCommand(RoverContext &theContext); + virtual RoverState handleRadioEnterStasisCommand(RoverContext &theContext); + virtual RoverState handleRadioGotWifiCommand(RoverContext &theContext); + + private: + RoverState m_state; + + RoverState m_pumpMsgsFromLanderReturnState; + RoverState m_pumpMsgsFromHerculesReturnState; }; } diff --git a/Apps/FlightSoftware/Watchdog/src/comms/ground_msgs.c b/Apps/FlightSoftware/Watchdog/src/comms/ground_msgs.c index 0dc915785..4cc798035 100644 --- a/Apps/FlightSoftware/Watchdog/src/comms/ground_msgs.c +++ b/Apps/FlightSoftware/Watchdog/src/comms/ground_msgs.c @@ -15,40 +15,48 @@ #define ENABLE_DEBUGGING_PRINT_OF_FAKE_REPORT 0 #define ENABLE_FORMATTED_DEBUG_PRINT 0 -#define CHECK_SERIALIZATION_RESULT(RESULT_VAR) \ - if (0 > RESULT_VAR) { \ +#define CHECK_SERIALIZATION_RESULT(RESULT_VAR) \ + if (0 > RESULT_VAR) \ + { \ return GND_MSGS__STATUS__ERROR__INTERNAL; \ } -GroundMsgs__Status GroundMsgs__generateFlightEarthHeartbeat(I2C_Sensors__Readings* i2cReadings, - AdcValues* adcValues, - HeaterParams* hParams, - FlightEarthHeartbeat* hb) +GroundMsgs__Status GroundMsgs__generateFlightEarthHeartbeat(I2C_Sensors__Readings *i2cReadings, + AdcValues *adcValues, + HeaterParams *hParams, + FlightEarthHeartbeat *hb) { - if (NULL == i2cReadings || NULL == adcValues || NULL == hb) { + if (NULL == i2cReadings || NULL == adcValues || NULL == hb) + { return GND_MSGS__STATUS__ERROR_NULL; } hb->magicNumber = 0xFF; - hb->batt_charge_telem = (uint8_t) (i2cReadings->batt_charge_telem & 0x7F); + hb->batt_charge_telem = (uint8_t)(i2cReadings->batt_charge_telem & 0x7F); hb->heating = hParams->m_heating ? 1 : 0; - hb->batt_curr_telem = (uint8_t) (i2cReadings->batt_curr_telem & 0x7F); + hb->batt_curr_telem = (uint8_t)(i2cReadings->batt_curr_telem & 0x7F); // send voltage nominal status (1=good, 0=too low) // check if batt voltage is above 16.59 V (~10% above discharge cutoff) - /** @todo Update this threshold **/ - hb->battery_voltage_good = (i2cReadings->raw_battery_voltage[0] > 0x3B) ? 1 : 0; - hb->battTemp = (uint8_t) (adcValues->battTemp >> 4); + // 16.59 * 4095.0 / 3.3 / (274.0+2000.0)*274.0 (NOTE: this thresh is likely + // too high since FM1 RC testing on Earth showed that at 23.80V-VBS, the + // divider was reading low by a factor of 2928/3560, meaning the voltage + // could actually be as high as 20.17V when this alarm sounds). + // Also, note, this is mostly meaningless in KA since the battery is + // disconnected anyway, so we won't be able to read it. + hb->battery_voltage_good = (adcValues->vBattSense > 2480) ? 1 : 0; + hb->battTemp = (uint8_t)(adcValues->battRT >> 4); return GND_MSGS__STATUS__SUCCESS; } -GroundMsgs__Status GroundMsgs__generateFullEarthHeartbeat(I2C_Sensors__Readings* i2cReadings, - AdcValues* adcValues, - HeaterParams* hParams, +GroundMsgs__Status GroundMsgs__generateFullEarthHeartbeat(I2C_Sensors__Readings *i2cReadings, + AdcValues *adcValues, + HeaterParams *hParams, uint8_t stateAsUint, - FullEarthHeartbeat* hb) + FullEarthHeartbeat *hb) { - if (NULL == i2cReadings || NULL == adcValues || NULL == hParams || NULL == hb) { + if (NULL == i2cReadings || NULL == adcValues || NULL == hParams || NULL == hb) + { return GND_MSGS__STATUS__ERROR_NULL; } @@ -56,7 +64,7 @@ GroundMsgs__Status GroundMsgs__generateFullEarthHeartbeat(I2C_Sensors__Readings* hb->magicNumber = 0xFF; // send adc value temperature - hb->battTemp = adcValues->battTemp; + hb->battTemp = adcValues->battRT; // send adc value temperature hb->raw_battery_charge[0] = i2cReadings->raw_battery_charge[0]; @@ -100,32 +108,33 @@ GroundMsgs__Status GroundMsgs__generateFullEarthHeartbeat(I2C_Sensors__Readings* } #define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c" -#define BYTE_TO_BINARY(byte) \ - (byte & 0x80 ? '1' : '0'), \ - (byte & 0x40 ? '1' : '0'), \ - (byte & 0x20 ? '1' : '0'), \ - (byte & 0x10 ? '1' : '0'), \ - (byte & 0x08 ? '1' : '0'), \ - (byte & 0x04 ? '1' : '0'), \ - (byte & 0x02 ? '1' : '0'), \ - (byte & 0x01 ? '1' : '0') - -GroundMsgs__Status GroundMsgs__generateDetailedReport(I2C_Sensors__Readings* i2cReadings, - AdcValues* adcValues, - WatchdogStateDetails* details, - DetailedReport* report, - uint8_t* reportBuffer) +#define BYTE_TO_BINARY(byte) \ + (byte & 0x80 ? '1' : '0'), \ + (byte & 0x40 ? '1' : '0'), \ + (byte & 0x20 ? '1' : '0'), \ + (byte & 0x10 ? '1' : '0'), \ + (byte & 0x08 ? '1' : '0'), \ + (byte & 0x04 ? '1' : '0'), \ + (byte & 0x02 ? '1' : '0'), \ + (byte & 0x01 ? '1' : '0') + +GroundMsgs__Status GroundMsgs__generateDetailedReport(I2C_Sensors__Readings *i2cReadings, + AdcValues *adcValues, + WatchdogStateDetails *details, + DetailedReport *report, + uint8_t *reportBuffer) { static uint8_t sequenceNumber = 0; - if (NULL == i2cReadings || NULL == adcValues || NULL == details || NULL == report) { + if (NULL == i2cReadings || NULL == adcValues || NULL == details || NULL == report) + { return GND_MSGS__STATUS__ERROR_NULL; } // Update values read from digital inputs on WD chip itself (not on I/O expander) readOnChipInputs(); - uint8_t* dstIntPtr = (uint8_t*) reportBuffer; + uint8_t *dstIntPtr = (uint8_t *)reportBuffer; report->magic = 0xD5; @@ -144,14 +153,14 @@ GroundMsgs__Status GroundMsgs__generateDetailedReport(I2C_Sensors__Readings* i2c report->pg50 = (details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__PG50)) ? 1 : 0; uint8_t data = 0; - data |= (uint8_t) ((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__CHARGE_STAT1)) ? 1 : 0) & 0x1) << 7); - data |= (uint8_t) ((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__CHARGE_STAT2)) ? 1 : 0) & 0x1) << 6); - data |= (uint8_t) ((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__BATT_STAT)) ? 1 : 0) & 0x1) << 5); - data |= (uint8_t) ((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__LATCH_STAT)) ? 1 : 0) & 0x1) << 4); - data |= (uint8_t) ((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__PG12)) ? 1 : 0) & 0x1) << 3); - data |= (uint8_t) ((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__PG18)) ? 1 : 0) & 0x1) << 2); - data |= (uint8_t) ((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__PG33)) ? 1 : 0) & 0x1) << 1); - data |= (uint8_t) ((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__PG50)) ? 1 : 0) & 0x1) << 0); + data |= (uint8_t)((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__CHARGE_STAT1)) ? 1 : 0) & 0x1) << 7); + data |= (uint8_t)((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__CHARGE_STAT2)) ? 1 : 0) & 0x1) << 6); + data |= (uint8_t)((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__BATT_STAT)) ? 1 : 0) & 0x1) << 5); + data |= (uint8_t)((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__LATCH_STAT)) ? 1 : 0) & 0x1) << 4); + data |= (uint8_t)((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__PG12)) ? 1 : 0) & 0x1) << 3); + data |= (uint8_t)((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__PG18)) ? 1 : 0) & 0x1) << 2); + data |= (uint8_t)((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__PG33)) ? 1 : 0) & 0x1) << 1); + data |= (uint8_t)((((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__PG50)) ? 1 : 0) & 0x1) << 0); serializationResult = Serialization__serializeAs8Bit(&(data), dstIntPtr, SERIALIZATION__LITTLE_ENDIAN); CHECK_SERIALIZATION_RESULT(serializationResult); @@ -163,28 +172,32 @@ GroundMsgs__Status GroundMsgs__generateDetailedReport(I2C_Sensors__Readings* i2c CHECK_SERIALIZATION_RESULT(serializationResult); dstIntPtr += sizeof(details->m_stateAsUint); - uint8_t deploymentStatus; - if (details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__DEPLOYED)) { + if (details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__DEPLOYED)) + { report->deploymentStatus = 2; deploymentStatus = 2; - } else if (details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__DEPLOYING)) { + } + else if (details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__DEPLOYING)) + { report->deploymentStatus = 1; deploymentStatus = 1; - } else { + } + else + { report->deploymentStatus = 0; deploymentStatus = 0; } report->uart0Initialized = (details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__UART0_INITIALIZED)) ? 1 : 0; report->uart1Initialized = (details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__UART1_INITIALIZED)) ? 1 : 0; - report->adcBattRT = (uint16_t) (adcValues->battRT && 0x0FFF); + report->adcBattRT = (uint16_t)(adcValues->battRT && 0x0FFF); uint16_t data16 = 0; - data16 |= (uint16_t) (((uint16_t) (((uint8_t) deploymentStatus) & 0x3)) << 14); - data16 |= (uint16_t) (((uint16_t) (((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__UART0_INITIALIZED)) ? 1 : 0) & 0x1)) << 13); - data16 |= (uint16_t) (((uint16_t) (((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__UART1_INITIALIZED)) ? 1 : 0) & 0x1)) << 12); - data16 |= (uint16_t) (adcValues->battRT && 0x0FFF); + data16 |= (uint16_t)(((uint16_t)(((uint8_t)deploymentStatus) & 0x3)) << 14); + data16 |= (uint16_t)(((uint16_t)(((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__UART0_INITIALIZED)) ? 1 : 0) & 0x1)) << 13); + data16 |= (uint16_t)(((uint16_t)(((details->m_inputPinAndStateBits & IPASBI_MASK(IPASBI__UART1_INITIALIZED)) ? 1 : 0) & 0x1)) << 12); + data16 |= (uint16_t)(adcValues->battRT && 0x0FFF); serializationResult = Serialization__serializeAs16Bit(&(data16), dstIntPtr, SERIALIZATION__LITTLE_ENDIAN); CHECK_SERIALIZATION_RESULT(serializationResult); @@ -202,56 +215,57 @@ GroundMsgs__Status GroundMsgs__generateDetailedReport(I2C_Sensors__Readings* i2c CHECK_SERIALIZATION_RESULT(serializationResult); dstIntPtr += sizeof(details->m_outputPinBits); - report->lowerResetActionBits = (uint32_t) (0xFFFFFFFF & (details->m_resetActionBits)); - report->upperResetActionBits = (uint8_t) (((details->m_resetActionBits) >> 32) & 0xFF); + report->lowerResetActionBits = (uint32_t)(0xFFFFFFFF & (details->m_resetActionBits)); + report->upperResetActionBits = (uint8_t)(((details->m_resetActionBits) >> 32) & 0xFF); - uint8_t buffer64bit[8] = { 0 }; + uint8_t buffer64bit[8] = {0}; serializationResult = Serialization__serializeAs64Bit(&(details->m_resetActionBits), buffer64bit, SERIALIZATION__LITTLE_ENDIAN); CHECK_SERIALIZATION_RESULT(serializationResult); - for (int i = 5; i >= 0; i--) { + for (int i = 5; i >= 0; i--) + { *dstIntPtr = buffer64bit[i]; dstIntPtr++; } - report->vLanderSense = (uint8_t) (((adcValues->vLanderSense) >> 5) & 0x7F); // Top 7 bits of 12 - report->battTemp = (uint16_t) (((adcValues->battTemp) >> 3) & 0x1FF); // Top 9 bits of 12 + report->vLanderSense = (uint8_t)(((adcValues->vLanderSense) >> 5) & 0x7F); // Top 7 bits of 12 + report->battTemp = (uint16_t)(((adcValues->battTemp) >> 3) & 0x1FF); // Top 9 bits of 12 data16 = 0; - data16 |= (uint16_t) (((uint16_t) (((adcValues->vLanderSense) >> 5) & 0x7F)) << 9); - data16 |= (uint16_t) (((adcValues->battTemp) >> 3) & 0x1FF); + data16 |= (uint16_t)(((uint16_t)(((adcValues->vLanderSense) >> 5) & 0x7F)) << 9); + data16 |= (uint16_t)(((adcValues->battTemp) >> 3) & 0x1FF); serializationResult = Serialization__serializeAs16Bit(&(data16), dstIntPtr, SERIALIZATION__LITTLE_ENDIAN); CHECK_SERIALIZATION_RESULT(serializationResult); dstIntPtr += sizeof(data16); - report->vSysAllSens = (uint8_t) (((adcValues->vSysAllSense) >> 7) & 0x1F); // Top 5 bits of 12 - report->iSysAllSense = (uint16_t) ((adcValues->iSysAllSense) & 0x1FF); // Bottom 9 bits of 12 - report->vBattSense = (uint16_t) (((adcValues->vBattSense) >> 3) & 0x1FF); // Top 9 bits of 12 - report->vcc24 = (uint8_t) (((adcValues->vcc24) >> 5) & 0x7F); // Top 7 bits of 12 + report->vSysAllSens = (uint8_t)(((adcValues->vSysAllSense) >> 7) & 0x1F); // Top 5 bits of 12 + report->iSysAllSense = (uint16_t)((adcValues->iSysAllSense) & 0x1FF); // Bottom 9 bits of 12 + report->vBattSense = (uint16_t)(((adcValues->vBattSense) >> 3) & 0x1FF); // Top 9 bits of 12 + report->vcc24 = (uint8_t)(((adcValues->vcc24) >> 5) & 0x7F); // Top 7 bits of 12 report->heatingControlEnabled = (details->m_hParams.m_heatingControlEnabled) ? 1 : 0; report->heating = (details->m_hParams.m_heating) ? 1 : 0; uint32_t data32 = 0; - data32 |= (uint32_t) (((uint32_t) (((adcValues->vSysAllSense) >> 7) & 0x1F)) << 27); - data32 |= (uint32_t) (((uint32_t) ((adcValues->iSysAllSense) & 0x1FF)) << 18); - data32 |= (uint32_t) (((uint32_t) (((adcValues->vBattSense) >> 3) & 0x1FF)) << 9); - data32 |= (uint32_t) (((uint32_t) (((adcValues->vcc24) >> 5) & 0x7F)) << 2); - data32 |= (uint32_t) (((details->m_hParams.m_heatingControlEnabled) ? 1 : 0) << 1); - data32 |= (uint32_t) ((details->m_hParams.m_heating) ? 1 : 0); + data32 |= (uint32_t)(((uint32_t)(((adcValues->vSysAllSense) >> 7) & 0x1F)) << 27); + data32 |= (uint32_t)(((uint32_t)((adcValues->iSysAllSense) & 0x1FF)) << 18); + data32 |= (uint32_t)(((uint32_t)(((adcValues->vBattSense) >> 3) & 0x1FF)) << 9); + data32 |= (uint32_t)(((uint32_t)(((adcValues->vcc24) >> 5) & 0x7F)) << 2); + data32 |= (uint32_t)(((details->m_hParams.m_heatingControlEnabled) ? 1 : 0) << 1); + data32 |= (uint32_t)((details->m_hParams.m_heating) ? 1 : 0); serializationResult = Serialization__serializeAs32Bit(&(data32), dstIntPtr, SERIALIZATION__LITTLE_ENDIAN); CHECK_SERIALIZATION_RESULT(serializationResult); dstIntPtr += sizeof(data32); - report->vcc2Point5 = (uint8_t) (((adcValues->vcc2Point5) >> 7) & 0x1F); // Top 5 bits of 12 - report->vcc2Point8 = (uint8_t) (((adcValues->vcc2Point8) >> 7) & 0x1F); // Top 5 bits of 12 - report->vcc28 = (uint8_t) (((adcValues->vcc28) >> 6) & 0x3F); // Top 6 bits of 12 + report->vcc2Point5 = (uint8_t)(((adcValues->vcc2Point5) >> 7) & 0x1F); // Top 5 bits of 12 + report->vcc2Point8 = (uint8_t)(((adcValues->vcc2Point8) >> 7) & 0x1F); // Top 5 bits of 12 + report->vcc28 = (uint8_t)(((adcValues->vcc28) >> 6) & 0x3F); // Top 6 bits of 12 data16 = 0; - data16 |= (uint16_t) (((uint16_t) (((adcValues->vcc2Point5) >> 7) & 0x1F)) << 11); - data16 |= (uint16_t) (((uint16_t) (((adcValues->vcc2Point8) >> 7) & 0x1F)) << 6); - data16 |= (uint16_t) (((adcValues->vcc28) >> 6) & 0x3F); + data16 |= (uint16_t)(((uint16_t)(((adcValues->vcc2Point5) >> 7) & 0x1F)) << 11); + data16 |= (uint16_t)(((uint16_t)(((adcValues->vcc2Point8) >> 7) & 0x1F)) << 6); + data16 |= (uint16_t)(((adcValues->vcc28) >> 6) & 0x3F); serializationResult = Serialization__serializeAs16Bit(&(data16), dstIntPtr, SERIALIZATION__LITTLE_ENDIAN); CHECK_SERIALIZATION_RESULT(serializationResult); @@ -319,7 +333,7 @@ GroundMsgs__Status GroundMsgs__generateDetailedReport(I2C_Sensors__Readings* i2c dstIntPtr += sizeof(i2cReadings->batt_curr_telem); #if defined(ENABLE_DEBUG_ONLY_CODE) && ENABLE_DEBUGGING_PRINT_OF_FAKE_REPORT - DetailedReport report2 = { 0 }; + DetailedReport report2 = {0}; report2.magic = 0xD5; report2.chargeStat1 = 1; @@ -345,18 +359,18 @@ GroundMsgs__Status GroundMsgs__generateDetailedReport(I2C_Sensors__Readings* i2c report2.upperResetActionBits = 0; report2.vLanderSense = 0b1111111; // Top 7 bits of 12 - report2.battTemp = 0b110010011; // Top 9 bits of 12 + report2.battTemp = 0b110010011; // Top 9 bits of 12 - report2.vSysAllSens = 0b01110; // Top 5 bits of 12 + report2.vSysAllSens = 0b01110; // Top 5 bits of 12 report2.iSysAllSense = 0b100000111; // Bottom 9 bits of 12 - report2.vBattSense = 0b001100110; // Top 9 bits of 12 - report2.vcc24 = 0b0011100; // Top 7 bits of 12 + report2.vBattSense = 0b001100110; // Top 9 bits of 12 + report2.vcc24 = 0b0011100; // Top 7 bits of 12 report2.heatingControlEnabled = 0; report2.heating = 0; report2.vcc2Point5 = 0b10101; // Top 5 bits of 12 report2.vcc2Point8 = 0b01010; // Top 5 bits of 12 - report2.vcc28 = 0b110011; // Top 6 bits of 12 + report2.vcc28 = 0b110011; // Top 6 bits of 12 report2.kpHeater = 0x0A0B; report2.heaterPwmLimit = 0x0C0D; @@ -381,21 +395,25 @@ GroundMsgs__Status GroundMsgs__generateDetailedReport(I2C_Sensors__Readings* i2c report2.battChargeTelem = 0x5A; report2.battCurrTelem = 0x5B; - uint8_t *reportView = (uint8_t*) &report2; + uint8_t *reportView = (uint8_t *)&report2; size_t rowLen = 4; size_t numRows = sizeof(report2) / rowLen; - if (sizeof(report2) % rowLen > 0) { + if (sizeof(report2) % rowLen > 0) + { numRows++; } - for (size_t r = 0; r < numRows; ++r) { - DPRINTF_ERR("%s%d: ", (((rowLen * r) <= 9) ? "0" : ""), (int) (rowLen * r)); + for (size_t r = 0; r < numRows; ++r) + { + DPRINTF_ERR("%s%d: ", (((rowLen * r) <= 9) ? "0" : ""), (int)(rowLen * r)); - for (size_t c = 0; c < rowLen; ++c) { + for (size_t c = 0; c < rowLen; ++c) + { size_t i = (rowLen * r) + c; - if (i >= sizeof(report2)) { + if (i >= sizeof(report2)) + { break; } @@ -405,13 +423,16 @@ GroundMsgs__Status GroundMsgs__generateDetailedReport(I2C_Sensors__Readings* i2c } DPRINTF_ERR("\n"); - for (size_t r = 0; r < numRows; ++r) { - DPRINTF_ERR("%s%d: ", (((rowLen * r) <= 9) ? "0" : ""), (int) (rowLen * r)); + for (size_t r = 0; r < numRows; ++r) + { + DPRINTF_ERR("%s%d: ", (((rowLen * r) <= 9) ? "0" : ""), (int)(rowLen * r)); - for (size_t c = 0; c < rowLen; ++c) { + for (size_t c = 0; c < rowLen; ++c) + { size_t i = (rowLen * r) + c; - if (i >= sizeof(report2)) { + if (i >= sizeof(report2)) + { break; } @@ -425,4 +446,3 @@ GroundMsgs__Status GroundMsgs__generateDetailedReport(I2C_Sensors__Readings* i2c return GND_MSGS__STATUS__SUCCESS; } - diff --git a/Apps/FlightSoftware/Watchdog/src/drivers/adc.c b/Apps/FlightSoftware/Watchdog/src/drivers/adc.c index deceaa80a..cbaeddb1f 100644 --- a/Apps/FlightSoftware/Watchdog/src/drivers/adc.c +++ b/Apps/FlightSoftware/Watchdog/src/drivers/adc.c @@ -30,10 +30,11 @@ * 12-bit: LSB = 0.0008056640625V */ -static AdcValues* outputValues = NULL; -static volatile uint16_t* watchdogFlagsPtr = NULL; +static AdcValues *outputValues = NULL; +static volatile uint16_t *watchdogFlagsPtr = NULL; -void adc_init(volatile uint16_t* watchdogFlags) { +void adc_init(volatile uint16_t *watchdogFlags) +{ watchdogFlagsPtr = watchdogFlags; // configure the ADC module @@ -59,6 +60,7 @@ void adc_init(volatile uint16_t* watchdogFlags) { ADC12CTL3 = 0; // MEM0: P1.4 == V_LANDER_SENS == A4. Use VR+ = VeRef+ buffered, VR- = VeRef- + // ADC12VRSEL_15 is listed in `adc12_b.h` as `ADC12_B_VREFPOS_EXTBUF_VREFNEG_EXTNEG`, so seems right... ADC12MCTL0 = ADC12INCH_4 | ADC12VRSEL_15; // MEM1: P2.4 == BATT_TEMP == A7. Use VR+ = VeRef+ buffered, VR- = VeRef- @@ -100,14 +102,16 @@ BOOL isAdcSampleDone(void) /** * @brief take one sample of the ADC */ -BOOL adcCheckVoltageLevels(AdcValues* output) +BOOL adcCheckVoltageLevels(AdcValues *output) { - if (NULL == output) { + if (NULL == output) + { return FALSE; } // If existing sample isn't done, then we can't trigger a new sample - if (!isAdcSampleDone()) { + if (!isAdcSampleDone()) + { return FALSE; } @@ -126,37 +130,35 @@ BOOL adcCheckVoltageLevels(AdcValues* output) #pragma vector = ADC12_VECTOR __interrupt void ADC12_ISR(void) #elif defined(__GNUC__) -void __attribute__ ((interrupt(ADC12_VECTOR))) ADC12_ISR (void) +void __attribute__((interrupt(ADC12_VECTOR))) ADC12_ISR(void) #else #error Compiler not supported! #endif { - if (NULL == outputValues) { + if (NULL == outputValues) + { return; } - switch (__even_in_range(ADC12IV, ADC12IV_ADC12RDYIFG)) { - case ADC12IV_ADC12IFG9: // ADC12IE9 interrupt - outputValues->vLanderSense = ADC12MEM0; - outputValues->battTemp = ADC12MEM1; - outputValues->battRT = ADC12MEM2; - outputValues->vSysAllSense = ADC12MEM3; - outputValues->iSysAllSense = ADC12MEM4; - outputValues->vBattSense = ADC12MEM5; - outputValues->vcc2Point5 = ADC12MEM6; - outputValues->vcc2Point8 = ADC12MEM7; - outputValues->vcc28 = ADC12MEM8; - outputValues->vcc24 = ADC12MEM9; - outputValues->sampleComplete = TRUE; // update output struct to signal sample is complete. - - *watchdogFlagsPtr |= WDFLAG_ADC_READY; // signal ready to main loop - __low_power_mode_off_on_exit(); - break; - default: - break; + switch (__even_in_range(ADC12IV, ADC12IV_ADC12RDYIFG)) + { + case ADC12IV_ADC12IFG9: // ADC12IE9 interrupt + outputValues->vLanderSense = ADC12MEM0; + outputValues->battTemp = ADC12MEM1; + outputValues->battRT = ADC12MEM2; + outputValues->vSysAllSense = ADC12MEM3; + outputValues->iSysAllSense = ADC12MEM4; + outputValues->vBattSense = ADC12MEM5; + outputValues->vcc2Point5 = ADC12MEM6; + outputValues->vcc2Point8 = ADC12MEM7; + outputValues->vcc28 = ADC12MEM8; + outputValues->vcc24 = ADC12MEM9; + outputValues->sampleComplete = TRUE; // update output struct to signal sample is complete. + + *watchdogFlagsPtr |= WDFLAG_ADC_READY; // signal ready to main loop + __low_power_mode_off_on_exit(); + break; + default: + break; } } - - - - diff --git a/Apps/FlightSoftware/Watchdog/src/drivers/bsp.c b/Apps/FlightSoftware/Watchdog/src/drivers/bsp.c index 0e442b2c7..02ee63d7b 100644 --- a/Apps/FlightSoftware/Watchdog/src/drivers/bsp.c +++ b/Apps/FlightSoftware/Watchdog/src/drivers/bsp.c @@ -8,7 +8,7 @@ #include // uncomment to program MC -//#define PROGRAM_MOTOR_CONTROLLERS +// #define PROGRAM_MOTOR_CONTROLLERS #define PORT1_ENABLED 1 #define PORT2_ENABLED 1 @@ -16,48 +16,70 @@ #define PORT4_ENABLED 1 #define PORTJ_ENABLED 1 -static WatchdogStateDetails* detailsPtr = NULL; +static WatchdogStateDetails *detailsPtr = NULL; -const char* getResetReasonString(void) +const char *getResetReasonString(void) { switch (__even_in_range(SYSRSTIV, SYSRSTIV_MPUSEG3IFG)) { - case SYSRSTIV_NONE: return "None"; - case SYSRSTIV_BOR: return "Brownout (BOR)"; - case SYSRSTIV_RSTNMI: return "RSTIFG RST/NMI (BOR)"; - case SYSRSTIV_DOBOR: return "PMMSWBOR software BOR (BOR)"; - case SYSRSTIV_LPM5WU: return "LPMx.5 wake up (BOR)"; - case SYSRSTIV_SECYV: return "Security violation (BOR)"; - case SYSRSTIV_SVSHIFG: return "SCSHIFG SVSH event (BOR)"; - case SYSRSTIV_DOPOR: return "PMMSWPOR software POR (POR)"; - case SYSRSTIV_WDTTO: return "WDTIFG watchdog timeout (PUC)"; - case SYSRSTIV_WDTPW: return "WDTPW password violation (PUC)"; - case SYSRSTIV_FRCTLPW: return "FRCTLPW password violation (PUC)"; - case SYSRSTIV_UBDIFG: return "Uncorrectable FRAM bit error detection (PUC)"; - case SYSRSTIV_PERF: return "Peripheral area fetch (PUC)"; - case SYSRSTIV_PMMPW: return "PMMPW PMM password violation (PUC)"; - case SYSRSTIV_MPUPW: return "MPUPW MPU password violation (PUC)"; - case SYSRSTIV_CSPW: return "CSPW CS password violation (PUC)"; - case SYSRSTIV_MPUSEGPIFG: return "MPUSEGIPIFG encapsulated IP memory segment violation (PUC)"; - case SYSRSTIV_MPUSEGIIFG: return "MPUSEGIIFG information memory segment violation (PUC)"; - case SYSRSTIV_MPUSEG1IFG: return "MPUSEG1IFG segment 1 memory violation (PUC)"; - case SYSRSTIV_MPUSEG2IFG: return "MPUSEG2IFG segment 2 memory violation (PUC)"; - case SYSRSTIV_MPUSEG3IFG: return "MPUSEG3IFG segment 3 memory violation (PUC)"; - default: return "Unknown"; + case SYSRSTIV_NONE: + return "None"; + case SYSRSTIV_BOR: + return "Brownout (BOR)"; + case SYSRSTIV_RSTNMI: + return "RSTIFG RST/NMI (BOR)"; + case SYSRSTIV_DOBOR: + return "PMMSWBOR software BOR (BOR)"; + case SYSRSTIV_LPM5WU: + return "LPMx.5 wake up (BOR)"; + case SYSRSTIV_SECYV: + return "Security violation (BOR)"; + case SYSRSTIV_SVSHIFG: + return "SCSHIFG SVSH event (BOR)"; + case SYSRSTIV_DOPOR: + return "PMMSWPOR software POR (POR)"; + case SYSRSTIV_WDTTO: + return "WDTIFG watchdog timeout (PUC)"; + case SYSRSTIV_WDTPW: + return "WDTPW password violation (PUC)"; + case SYSRSTIV_FRCTLPW: + return "FRCTLPW password violation (PUC)"; + case SYSRSTIV_UBDIFG: + return "Uncorrectable FRAM bit error detection (PUC)"; + case SYSRSTIV_PERF: + return "Peripheral area fetch (PUC)"; + case SYSRSTIV_PMMPW: + return "PMMPW PMM password violation (PUC)"; + case SYSRSTIV_MPUPW: + return "MPUPW MPU password violation (PUC)"; + case SYSRSTIV_CSPW: + return "CSPW CS password violation (PUC)"; + case SYSRSTIV_MPUSEGPIFG: + return "MPUSEGIPIFG encapsulated IP memory segment violation (PUC)"; + case SYSRSTIV_MPUSEGIIFG: + return "MPUSEGIIFG information memory segment violation (PUC)"; + case SYSRSTIV_MPUSEG1IFG: + return "MPUSEG1IFG segment 1 memory violation (PUC)"; + case SYSRSTIV_MPUSEG2IFG: + return "MPUSEG2IFG segment 2 memory violation (PUC)"; + case SYSRSTIV_MPUSEG3IFG: + return "MPUSEG3IFG segment 3 memory violation (PUC)"; + default: + return "Unknown"; } } /** * @brief Initializes the gpios. */ -void initializeGpios(WatchdogStateDetails* details) +void initializeGpios(WatchdogStateDetails *details) { DEBUG_LOG_NULL_CHECK_RETURN(details, "Parameter is NULL", /* nothing, b/c void return */); detailsPtr = details; - //######################################################################## - // P1 configuration. - //######################################################################## + // ######################################################################## + // P1 configuration. + // ######################################################################## #if PORT1_ENABLED // Start with all as GPIO output (which is the recommended default config for unused pins) P1DIR = 0xFFu; @@ -87,7 +109,6 @@ void initializeGpios(WatchdogStateDetails* details) // Used when the Radio wants to send information to the Watchdog. P1DIR &= ~BIT3; - // P1.4 is connected to the V_LANDER_SENS signal (output of voltage divider for measuring lander voltage being // supplied to us), and is used as an ADC analog input (specifically it is ADC analog input A4). This is the // tertiary function (SEL1 and SEL0 are 1). @@ -113,9 +134,9 @@ void initializeGpios(WatchdogStateDetails* details) P1SEL1 |= BIT7; #endif // PORT1_ENABLED - //######################################################################## - // P2 configuration. - //######################################################################## + // ######################################################################## + // P2 configuration. + // ######################################################################## #if PORT2_ENABLED // Start with all as GPIO input. Unused pins are supposed to be configured as outputs, but due to current draw // issues with P2.0, we initialize all as inputs so that they are high-z and don't allow current draw. We configure @@ -132,7 +153,7 @@ void initializeGpios(WatchdogStateDetails* details) // // TODO >> Don't set this here, as we see large current draw when this mode is set and Hercules is off. << // - //P2SEL1 |= BIT0; + // P2SEL1 |= BIT0; CLEAR_IPASBI_IN_UINT(detailsPtr->m_inputPinAndStateBits, IPASBI__UART0_INITIALIZED); // P2.1 is used as the UART0 (UCA0) RX data line (RXD). This is the secondary function (SEL1 is 1 and SEL0 is 0). @@ -170,7 +191,7 @@ void initializeGpios(WatchdogStateDetails* details) // TODO >> Don't set this here, as we could see large current draw if this mode is set while disconnected from // lander. << // - //P2SEL1 |= BIT5; + // P2SEL1 |= BIT5; CLEAR_IPASBI_IN_UINT(detailsPtr->m_inputPinAndStateBits, IPASBI__UART1_INITIALIZED); // P2.6 is used as the UART1 (UCA1) RX data line (RXD). This is the secondary function (SEL1 is 1 and SEL0 is 0). @@ -187,9 +208,9 @@ void initializeGpios(WatchdogStateDetails* details) P2REN &= ~BIT7; #endif // PORT2_ENABLED - //######################################################################## - // P3 configuration. - //######################################################################## + // ######################################################################## + // P3 configuration. + // ######################################################################## #if PORT3_ENABLED // Start with all as GPIO output (which is the recommended default config for unused pins) P3DIR = 0xFFu; @@ -248,9 +269,9 @@ void initializeGpios(WatchdogStateDetails* details) CLEAR_OPSBI_IN_UINT(detailsPtr->m_outputPinBits, OPSBI__3V3_EN); #endif // PORT3_ENABLED - //######################################################################## - // P4 configuration. - //######################################################################## + // ######################################################################## + // P4 configuration. + // ######################################################################## #if PORT4_ENABLED // Start with all as GPIO output (which is the recommended default config for unused pins) P4DIR = 0xFFu; @@ -317,9 +338,9 @@ void initializeGpios(WatchdogStateDetails* details) P4REN &= ~BIT7; #endif // PORT4_ENABLED - //######################################################################## - // PJ configuration. - //######################################################################## + // ######################################################################## + // PJ configuration. + // ######################################################################## #if PORTJ_ENABLED // Start with all as GPIO output (which is the recommended default config for unused pins) PJDIR = 0xFFu; @@ -410,7 +431,8 @@ void disableWdIntInterrupt(void) } // Return the *current* state of the WD_INT pin: -uint8_t getWdIntState(void){ +uint8_t getWdIntState(void) +{ return P1IN & BIT3; } @@ -525,10 +547,19 @@ void clockInit(void) /** * @brief Enables the heater. (HI = ON) - * TB0CCTL2 is register that toggles PWM output on heater pin + * Lets the TB0.2 timer take control (SEL0=1, SEL1=0) + * TB0CCTL2 is register that toggles PWM output on heater pin. + * Per Table 9-23 in https://www.ti.com/lit/ds/symlink/msp430fr5994.pdf. */ inline void enableHeater(void) { + // For safety against some register having been bitflipped, just reaffirm + // all heater (P2.2) related settings when turning on: + TB0CCR0 = detailsPtr->m_hParams.m_heaterDutyCyclePeriod - 1; + TB0CCTL2 = OUTMOD_7; + TB0CCR2 = detailsPtr->m_hParams.m_heaterDutyCycle; + TB0CTL |= MC__UP; + P2DIR |= BIT2; P2OUT &= ~BIT2; P2SEL0 |= BIT2; P2SEL1 &= ~BIT2; @@ -538,6 +569,7 @@ inline void enableHeater(void) /** * @brief Disables the heater. (LO = OFF) + * Sets pin back to GPIO output (SEL0=0, SEL1=0) low (OFF). */ inline void disableHeater(void) { @@ -883,7 +915,8 @@ inline void startChargingBatteries(void) { // Turn on batteries before charging if not on yet: // (not safe to start charging on an open circuit) - if(!blimp_batteryState()){ + if (!blimp_batteryState()) + { blimp_battEnOn(); } // Enable the charging regulator: @@ -903,15 +936,18 @@ inline void stopChargingBatteries(void) blimp_regEnOff(); } -#define UPDATE_INPUT(detPtr, ipasbi_enum, port, bit) \ - do { \ - if (port & bit) { \ - SET_IPASBI_IN_UINT(detPtr->m_inputPinAndStateBits, ipasbi_enum); \ - } else { \ - CLEAR_IPASBI_IN_UINT(detPtr->m_inputPinAndStateBits, ipasbi_enum); \ - } \ - } while (0) - +#define UPDATE_INPUT(detPtr, ipasbi_enum, port, bit) \ + do \ + { \ + if (port & bit) \ + { \ + SET_IPASBI_IN_UINT(detPtr->m_inputPinAndStateBits, ipasbi_enum); \ + } \ + else \ + { \ + CLEAR_IPASBI_IN_UINT(detPtr->m_inputPinAndStateBits, ipasbi_enum); \ + } \ + } while (0) void readOnChipInputs(void) { diff --git a/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateBase.cpp b/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateBase.cpp index 8f7566ebf..5ccc131f9 100644 --- a/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateBase.cpp +++ b/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateBase.cpp @@ -9,6 +9,7 @@ #include "drivers/uart.h" #include "event/event.h" #include "event/event_queue.h" +#include "utils/time.h" #include "comms/ground_msgs.h" #include "watchdog.h" @@ -26,17 +27,17 @@ namespace iris struct CallbackUserArg { - RoverStateBase& m_state; - RoverContext& m_context; + RoverStateBase &m_state; + RoverContext &m_context; - explicit CallbackUserArg(RoverStateBase& state, RoverContext& context) - : m_state(state), m_context(context) - { - } + explicit CallbackUserArg(RoverStateBase &state, RoverContext &context) + : m_state(state), m_context(context) + { + } }; RoverStateBase::RoverStateBase(RoverState state) - : m_state(state) + : m_state(state) { } @@ -45,49 +46,49 @@ namespace iris return m_state; } - bool RoverStateBase::canEnterLowPowerMode(RoverContext& /*theContext*/) + bool RoverStateBase::canEnterLowPowerMode(RoverContext & /*theContext*/) { return true; } - RoverState RoverStateBase::handleHighTemp(RoverContext& theContext) + RoverState RoverStateBase::handleHighTemp(RoverContext &theContext) { return getState(); } - RoverState RoverStateBase::handleWdIntEdge(bool rising, RoverContext& theContext) + RoverState RoverStateBase::handleWdIntEdge(bool rising, RoverContext &theContext) { uint16_t flatDuration = watchdog_get_wd_int_flat_duration(); WdIntMpsm__Status status = WdIntMpsm__processEdge(rising ? TRUE : FALSE, flatDuration); switch (status) { - case WD_INT_MPSM__STATUS__POWER_CYCLE_RADIO: - return handleRadioPowerCycleRadioCommand(theContext); - case WD_INT_MPSM__STATUS__POWER_CYCLE_HERCULES: - return handleRadioPowerCycleHerculesCommand(theContext); - case WD_INT_MPSM__STATUS__PARSED_EXIT_STASIS: - return handleRadioExitStasisCommand(theContext); - case WD_INT_MPSM__STATUS__PARSED_ENTER_STASIS: - return handleRadioEnterStasisCommand(theContext); - case WD_INT_MPSM__STATUS__PARSED_GOT_WIFI: - return handleRadioGotWifiCommand(theContext); + case WD_INT_MPSM__STATUS__POWER_CYCLE_RADIO: + return handleRadioPowerCycleRadioCommand(theContext); + case WD_INT_MPSM__STATUS__POWER_CYCLE_HERCULES: + return handleRadioPowerCycleHerculesCommand(theContext); + case WD_INT_MPSM__STATUS__PARSED_EXIT_STASIS: + return handleRadioExitStasisCommand(theContext); + case WD_INT_MPSM__STATUS__PARSED_ENTER_STASIS: + return handleRadioEnterStasisCommand(theContext); + case WD_INT_MPSM__STATUS__PARSED_GOT_WIFI: + return handleRadioGotWifiCommand(theContext); } return getState(); } - RoverState RoverStateBase::handleWdIntRisingEdge(RoverContext& theContext) + RoverState RoverStateBase::handleWdIntRisingEdge(RoverContext &theContext) { return handleWdIntEdge(true, theContext); } - RoverState RoverStateBase::handleWdIntFallingEdge(RoverContext& theContext) + RoverState RoverStateBase::handleWdIntFallingEdge(RoverContext &theContext) { return handleWdIntEdge(false, theContext); } - RoverState RoverStateBase::handleRadioPowerCycleRadioCommand(RoverContext&) + RoverState RoverStateBase::handleRadioPowerCycleRadioCommand(RoverContext &) { setRadioReset(); powerOffRadio(); @@ -99,7 +100,7 @@ namespace iris return getState(); } - RoverState RoverStateBase::handleRadioPowerCycleHerculesCommand(RoverContext&) + RoverState RoverStateBase::handleRadioPowerCycleHerculesCommand(RoverContext &) { setHerculesReset(); powerOffHercules(); @@ -111,41 +112,42 @@ namespace iris return getState(); } - RoverState RoverStateBase::handleRadioExitStasisCommand(RoverContext&) + RoverState RoverStateBase::handleRadioExitStasisCommand(RoverContext &) { return getState(); } - RoverState RoverStateBase::handleRadioEnterStasisCommand(RoverContext&) + RoverState RoverStateBase::handleRadioEnterStasisCommand(RoverContext &) { return RoverState::ENTERING_STASIS; } - RoverState RoverStateBase::handleRadioGotWifiCommand(RoverContext& theContext) + RoverState RoverStateBase::handleRadioGotWifiCommand(RoverContext &theContext) { DPRINTF("Got WiFi Event.\n"); theContext.gotWifi = true; return getState(); } - LanderComms__Status RoverStateBase::txDownlinkData(RoverContext& theContext, void* data, size_t dataSize, + LanderComms__Status RoverStateBase::txDownlinkData(RoverContext &theContext, void *data, size_t dataSize, bool fromHercules) { LanderComms__Status lcStatus = LANDER_COMMS__STATUS__SUCCESS; // !! TODO !!: Is this the condition we want here? - if (*(theContext.m_persistentDeployed) && HerculesComms__isInitialized(theContext.m_hcState) && !fromHercules) { + if (*(theContext.m_persistentDeployed) && HerculesComms__isInitialized(theContext.m_hcState) && !fromHercules) + { HerculesComms__Status hcStatus = HerculesComms__txDownlinkData(theContext.m_hcState, - (uint8_t *) data, + (uint8_t *)data, dataSize); - lcStatus = (LanderComms__Status) hcStatus; + lcStatus = (LanderComms__Status)hcStatus; } - LanderComms__Status lcStatus2 = LanderComms__txData(theContext.m_lcState, (uint8_t *) data, dataSize); + LanderComms__Status lcStatus2 = LanderComms__txData(theContext.m_lcState, (uint8_t *)data, dataSize); return lcStatus; } - void RoverStateBase::initiateNextI2cAction(RoverContext& theContext) + void RoverStateBase::initiateNextI2cAction(RoverContext &theContext) { // A static value so that we remember the index of the last action we performed. By doing this, we can rotate // through all possibles actions to make sure that a single action repeated with a high frequency doesn't @@ -153,80 +155,87 @@ namespace iris static size_t i = static_cast(I2C_SENSORS__ACTIONS__INACTIVE); // Exit early if we have no queued actions - if (theContext.m_queuedI2cActions == 0) { + if (theContext.m_queuedI2cActions == 0) + { return; } // See what, if anything, is the next action to be performed - for (size_t j = 0; j < static_cast(I2C_SENSORS__ACTIONS__COUNT); ++j) { + for (size_t j = 0; j < static_cast(I2C_SENSORS__ACTIONS__COUNT); ++j) + { size_t actionIndex = i + j; // Wrap around if necessary (in theory only an if should be necessary, but a while loop seems safer) - while (actionIndex >= static_cast(I2C_SENSORS__ACTIONS__COUNT)) { + while (actionIndex >= static_cast(I2C_SENSORS__ACTIONS__COUNT)) + { actionIndex -= static_cast(I2C_SENSORS__ACTIONS__COUNT); } uint16_t actionMask = 1 << actionIndex; // If the corresponding bit in m_queuedI2cActions is set, then we want to perform that action - if ((theContext.m_queuedI2cActions & actionMask) != 0) { + if ((theContext.m_queuedI2cActions & actionMask) != 0) + { // First, initiate the action I2C_Sensors__Action actionEnum = static_cast(actionIndex); I2C_Sensors__Status i2cStatus = I2C_SENSORS__STATUS__SUCCESS_DONE; - switch (actionEnum) { - case I2C_SENSORS__ACTIONS__INACTIVE: - // This is always false in this case, but rechecking this condition makes the resulting output - // more descriptive. - DEBUG_ASSERT_NOT_EQUAL(actionEnum, I2C_SENSORS__ACTIONS__INACTIVE); - break; - - case I2C_SENSORS__ACTIONS__GAUGE_READING: - i2cStatus = I2C_Sensors__initiateGaugeReadings(); - DEBUG_ASSERT_EQUAL(i2cStatus, I2C_SENSORS__STATUS__SUCCESS_DONE); - break; - - case I2C_SENSORS__ACTIONS__GAUGE_INIT: - i2cStatus = I2C_Sensors__initiateFuelGaugeInitialization(); - DEBUG_ASSERT_EQUAL(i2cStatus, I2C_SENSORS__STATUS__SUCCESS_DONE); - break; - - case I2C_SENSORS__ACTIONS__WRITE_GAUGE_LOW_POWER: - i2cStatus = I2C_Sensors__initiateWriteLowPower(); - DEBUG_ASSERT_EQUAL(i2cStatus, I2C_SENSORS__STATUS__SUCCESS_DONE); - break; - - case I2C_SENSORS__ACTIONS__READ_GAUGE_CONTROL_REGISTER: - i2cStatus = I2C_Sensors__initiateReadControl(); - DEBUG_ASSERT_EQUAL(i2cStatus, I2C_SENSORS__STATUS__SUCCESS_DONE); - break; - - case I2C_SENSORS__ACTIONS__INIT_IO_EXPANDER: - i2cStatus = I2C_Sensors__initiateIoExpanderInitialization(); - DEBUG_ASSERT_EQUAL(i2cStatus, I2C_SENSORS__STATUS__SUCCESS_DONE); - break; - - case I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER: - if (theContext.m_writeCustomIoExpanderValues) { - i2cStatus = I2C_Sensors__initiateWriteIoExpander(theContext.m_queuedIOWritePort0Value, - theContext.m_queuedIOWritePort1Value); - } else { - i2cStatus = I2C_Sensors__initiateWriteIoExpanderCurrentValues(); - } - DEBUG_ASSERT_EQUAL(i2cStatus, I2C_SENSORS__STATUS__SUCCESS_DONE); - break; - - case I2C_SENSORS__ACTIONS__READ_IO_EXPANDER: - i2cStatus = I2C_Sensors__initiateReadIoExpander(); - DEBUG_ASSERT_EQUAL(i2cStatus, I2C_SENSORS__STATUS__SUCCESS_DONE); - break; - - default: - // This is always false in this case, but rechecking this condition makes the resulting output - // more descriptive. - DEBUG_ASSERT(actionEnum >= I2C_SENSORS__ACTIONS__INACTIVE - && actionEnum < I2C_SENSORS__ACTIONS__COUNT); + switch (actionEnum) + { + case I2C_SENSORS__ACTIONS__INACTIVE: + // This is always false in this case, but rechecking this condition makes the resulting output + // more descriptive. + DEBUG_ASSERT_NOT_EQUAL(actionEnum, I2C_SENSORS__ACTIONS__INACTIVE); + break; + + case I2C_SENSORS__ACTIONS__GAUGE_READING: + i2cStatus = I2C_Sensors__initiateGaugeReadings(); + DEBUG_ASSERT_EQUAL(i2cStatus, I2C_SENSORS__STATUS__SUCCESS_DONE); + break; + + case I2C_SENSORS__ACTIONS__GAUGE_INIT: + i2cStatus = I2C_Sensors__initiateFuelGaugeInitialization(); + DEBUG_ASSERT_EQUAL(i2cStatus, I2C_SENSORS__STATUS__SUCCESS_DONE); + break; + + case I2C_SENSORS__ACTIONS__WRITE_GAUGE_LOW_POWER: + i2cStatus = I2C_Sensors__initiateWriteLowPower(); + DEBUG_ASSERT_EQUAL(i2cStatus, I2C_SENSORS__STATUS__SUCCESS_DONE); + break; + + case I2C_SENSORS__ACTIONS__READ_GAUGE_CONTROL_REGISTER: + i2cStatus = I2C_Sensors__initiateReadControl(); + DEBUG_ASSERT_EQUAL(i2cStatus, I2C_SENSORS__STATUS__SUCCESS_DONE); + break; + + case I2C_SENSORS__ACTIONS__INIT_IO_EXPANDER: + i2cStatus = I2C_Sensors__initiateIoExpanderInitialization(); + DEBUG_ASSERT_EQUAL(i2cStatus, I2C_SENSORS__STATUS__SUCCESS_DONE); + break; + + case I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER: + if (theContext.m_writeCustomIoExpanderValues) + { + i2cStatus = I2C_Sensors__initiateWriteIoExpander(theContext.m_queuedIOWritePort0Value, + theContext.m_queuedIOWritePort1Value); + } + else + { + i2cStatus = I2C_Sensors__initiateWriteIoExpanderCurrentValues(); + } + DEBUG_ASSERT_EQUAL(i2cStatus, I2C_SENSORS__STATUS__SUCCESS_DONE); + break; + + case I2C_SENSORS__ACTIONS__READ_IO_EXPANDER: + i2cStatus = I2C_Sensors__initiateReadIoExpander(); + DEBUG_ASSERT_EQUAL(i2cStatus, I2C_SENSORS__STATUS__SUCCESS_DONE); + break; + + default: + // This is always false in this case, but rechecking this condition makes the resulting output + // more descriptive. + DEBUG_ASSERT(actionEnum >= I2C_SENSORS__ACTIONS__INACTIVE && actionEnum < I2C_SENSORS__ACTIONS__COUNT); } // Then, clear the queued action bit so we don't repeat this action until it is requeued elsewhere @@ -243,26 +252,113 @@ namespace iris } } - void RoverStateBase::heaterControl(RoverContext& theContext) + void RoverStateBase::heaterControl(RoverContext &theContext) { - // voltage, where LSB = 0.0008056640625V - unsigned short thermReading = theContext.m_adcValues.battRT; - HeaterParams& hParams = theContext.m_details.m_hParams; + HeaterParams &hParams = theContext.m_details.m_hParams; + unsigned short thermReading; + if (hParams.m_inputSource == HEATER_CONTROL_INPUT_CHARGER) + { + thermReading = theContext.m_adcValues.battTemp; + } + else + { + // Default case (in case of bitflips, etc.), use normal thermistor: + thermReading = theContext.m_adcValues.battRT; + } - if (thermReading > hParams.m_heaterOnVal) { - // Start heating when temperature drops low enough, which we detect via the ADC reading rising above a - // configured (either via the default value or a value commanded from ground) ADC reading. - enableHeater(); - } else if (thermReading < hParams.m_heaterOffVal) { - // Start heating when temperature rises high enough, which we detect via the ADC reading falling below a - // configured (either via the default value or a value commanded from ground) ADC reading. - disableHeater(); + // Process force states and eject early (nothing more to do): + if (hParams.m_forceState == HEATER_FORCE_ALWAYS_ON) + { + if (!hParams.m_heating) + { + enableHeater(); + } + return; + } + else if (hParams.m_forceState == HEATER_FORCE_ALWAYS_OFF) + { + if (hParams.m_heating) + { + disableHeater(); + } + return; + } + + // Check for threshold changes that need to be handled first: + if (hParams.m_thresholdsChanged) + { + // Ground operators changed the thresholds. Re-evaluate against + // thresholds: + if (thermReading > hParams.m_heaterOnVal) + { + enableHeater(); + } + else if (thermReading < hParams.m_heaterOffVal) + { + disableHeater(); + } + else + { + // We're somewhere in the middle, in which case, for safety, we + // should default to ON. + // NOTE: unless the settings were intentionally configured + // weirdly during mission, there should be no middle ground + // because Toff should be > Ton (that is ADCoff < ADCon b/c NTC) + enableHeater(); + } + hParams.m_thresholdsChanged = false; + } + + // Check for failure cases, in which case, turn the heater ON: + if (thermReading < 5 && Time__getTimeInCentiseconds() > 6000) + { + // if the sensor is giving an ADC reading of basically 0, we + // probably have an open circuit (at max T for the thermistor + // (+155C), we only go as low as ~45). + // NOTE: We provide a 60s grace period for everything to initialize. + // This is way longer than necessary but it's relatively short on + // thermal time-scales so this is fine. + // For safety, enable the heater (unless told explicitly not to do + // so via a force state): + if (!hParams.m_heating) + { + // Let Earth know we're turning on the Heat (this might be during an LOS): + DebugComms__tryPrintfToLanderNonblocking("POSSIBLE BATT_RT THERMISTOR FAILURE DETECTED. ADC < 5. ENABLING HEATER FOR SAFETY. RECOMMEND MANUAL HEATER CONTROL."); + enableHeater(); + } + } + else + { + // Normal controller state machine operation: + if (hParams.m_heating) + { + // In the HEATER_ON state... + if (thermReading < hParams.m_heaterOffVal) + { + // if we should turn OFF and we're not being forced ON, transition to HEATER_OFF + // Start heating when temperature rises high enough, which we detect via the ADC reading falling below a + // configured (either via the default value or a value commanded from ground) ADC reading. + disableHeater(); + } + } + else + { + // In the HEATER_OFF state... + if (thermReading > hParams.m_heaterOnVal) + { + // if we should turn ON and we're not being forced OFF, transition to HEATER_ON + // Start heating when temperature drops low enough, which we detect via the ADC reading rising above a + // configured (either via the default value or a value commanded from ground) ADC reading. + enableHeater(); + } + } } } - void RoverStateBase::enableHerculesComms(RoverContext& theContext) + void RoverStateBase::enableHerculesComms(RoverContext &theContext) { - if (!UART__isInitialized(theContext.m_uart0State)) { + if (!UART__isInitialized(theContext.m_uart0State)) + { UART__Status uartStatus = UART__init0(&(theContext.m_uartConfig), &(theContext.m_uart0State)); @@ -270,7 +366,8 @@ namespace iris DEBUG_ASSERT_EQUAL(UART__STATUS__SUCCESS, uartStatus); } - if (!HerculesComms__isInitialized(theContext.m_hcState)) { + if (!HerculesComms__isInitialized(theContext.m_hcState)) + { HerculesComms__Status hcStatus = HerculesComms__init(&(theContext.m_hcState), theContext.m_uart0State); DEBUG_LOG_CHECK_STATUS(HERCULES_COMMS__STATUS__SUCCESS, hcStatus, "Failed to init Hercules Comms"); DEBUG_ASSERT_EQUAL(HERCULES_COMMS__STATUS__SUCCESS, hcStatus); @@ -279,69 +376,72 @@ namespace iris DebugComms__registerHerculesComms(theContext.m_hcState); } - RoverState RoverStateBase::handleLanderData(RoverContext& theContext) + RoverState RoverStateBase::handleLanderData(RoverContext &theContext) { return pumpMsgsFromLander(theContext); } - RoverState RoverStateBase::handleHerculesData(RoverContext& theContext) + RoverState RoverStateBase::handleHerculesData(RoverContext &theContext) { return pumpMsgsFromHercules(theContext); } - void RoverStateBase::herculesMsgCallback(HercMsgs__Header* header, - uint8_t* payloadBuffer, + void RoverStateBase::herculesMsgCallback(HercMsgs__Header *header, + uint8_t *payloadBuffer, size_t payloadSize, - void* userArg) + void *userArg) { - if (nullptr == userArg || nullptr == header || (payloadSize > 0 && NULL == payloadBuffer)) { + if (nullptr == userArg || nullptr == header || (payloadSize > 0 && NULL == payloadBuffer)) + { return; } - CallbackUserArg* args = reinterpret_cast(userArg); + CallbackUserArg *args = reinterpret_cast(userArg); args->m_context.m_watchdogFlags |= WDFLAG_HERCULES_KICK; - switch (header->lowerOpCode) { - case HERCULES_COMMS__MSG_OPCODE__STROKE: - args->m_state.handleStrokeFromHercules(args->m_context, header); - break; - - case HERCULES_COMMS__MSG_OPCODE__DOWNLINK: - args->m_state.handleDownlinkFromHercules(args->m_context, - header, - payloadBuffer, - payloadSize); - break; - - case HERCULES_COMMS__MSG_OPCODE__DEBUG: - args->m_state.handleDebugFromHercules(args->m_context, - header, - payloadBuffer, - payloadSize); - break; - - default: // We assume this is a reset command - args->m_state.handleResetFromHercules(args->m_context, header); - break; + switch (header->lowerOpCode) + { + case HERCULES_COMMS__MSG_OPCODE__STROKE: + args->m_state.handleStrokeFromHercules(args->m_context, header); + break; + + case HERCULES_COMMS__MSG_OPCODE__DOWNLINK: + args->m_state.handleDownlinkFromHercules(args->m_context, + header, + payloadBuffer, + payloadSize); + break; + + case HERCULES_COMMS__MSG_OPCODE__DEBUG: + args->m_state.handleDebugFromHercules(args->m_context, + header, + payloadBuffer, + payloadSize); + break; + + default: // We assume this is a reset command + args->m_state.handleResetFromHercules(args->m_context, header); + break; } } - void RoverStateBase::landerMsgCallback(uint8_t* rxDataBuffer, size_t rxDataLen, void* userArg) + void RoverStateBase::landerMsgCallback(uint8_t *rxDataBuffer, size_t rxDataLen, void *userArg) { // Statically allocate the message structure so that it's not allocated on the stack - static WdCmdMsgs__Message wdMessage = { 0 }; - static WdCmdMsgs__Response response = { 0 }; - static WdCmdMsgs__Response deployNotificationResponse = { 0 }; + static WdCmdMsgs__Message wdMessage = {0}; + static WdCmdMsgs__Response response = {0}; + static WdCmdMsgs__Response deployNotificationResponse = {0}; #pragma diag_push #pragma diag_suppress 770 DEBUG_ASSERT_NOT_EQUAL(nullptr, userArg); #pragma diag_pop - CallbackUserArg* args = reinterpret_cast(userArg); + CallbackUserArg *args = reinterpret_cast(userArg); - if (nullptr == rxDataBuffer) { + if (nullptr == rxDataBuffer) + { //!< @todo reply to lander with this error return; } @@ -351,7 +451,8 @@ namespace iris CmdMsgs__Status cmdStatus = CmdMsgs__deserializeHeader(rxDataBuffer, rxDataLen, &(wdMessage.commonHeader)); DEBUG_ASSERT_EQUAL(CMD_MSGS__STATUS__SUCCESS, cmdStatus); - if (CMD_MSGS__STATUS__SUCCESS != cmdStatus) { + if (CMD_MSGS__STATUS__SUCCESS != cmdStatus) + { // This should only really happen if rxDataLen is the wrong size //!< @todo reply to lander with this error return; @@ -360,7 +461,8 @@ namespace iris // We identify a ground command for WD by checking the "Type Magic" field in the FSW common header. // If the magic number in that field indicates the command is for Watchdog, then it is a ground // command for us. - if (HEADER__TYPE_MAGIC_NUM__WATCHDOG_COMMAND == wdMessage.commonHeader.typeMagicNumber) { + if (HEADER__TYPE_MAGIC_NUM__WATCHDOG_COMMAND == wdMessage.commonHeader.typeMagicNumber) + { // This is a watchdog command. Parse it as such WdCmdMsgs__Status wdCmdStatus = WdCmdMsgs__deserializeMessage(rxDataBuffer, rxDataLen, @@ -368,7 +470,8 @@ namespace iris FALSE); // Don't reparse the header DEBUG_ASSERT_EQUAL(WD_CMD_MSGS__STATUS__SUCCESS, wdCmdStatus); - if (WD_CMD_MSGS__STATUS__SUCCESS != wdCmdStatus) { + if (WD_CMD_MSGS__STATUS__SUCCESS != wdCmdStatus) + { // This should only really happen if rxDataLen is the wrong size //!< @todo reply to lander with this error return; @@ -376,18 +479,21 @@ namespace iris bool sendDeployNotificationResponse = false; args->m_state.m_pumpMsgsFromLanderReturnState = - args->m_state.performWatchdogCommand(args->m_context, - wdMessage, - response, - deployNotificationResponse, - sendDeployNotificationResponse); + args->m_state.performWatchdogCommand(args->m_context, + wdMessage, + response, + deployNotificationResponse, + sendDeployNotificationResponse); - if (sendDeployNotificationResponse) { + if (sendDeployNotificationResponse) + { args->m_state.sendLanderResponse(args->m_context, deployNotificationResponse); } args->m_state.sendLanderResponse(args->m_context, response); - } else { + } + else + { // Anything with "Type Magic" field value that isn't for Watchdog is treated as uplink for Hercules args->m_state.m_pumpMsgsFromLanderReturnState = args->m_state.handleUplinkFromLander(args->m_context, rxDataBuffer, @@ -395,11 +501,11 @@ namespace iris } } - RoverState RoverStateBase::performWatchdogCommand(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::performWatchdogCommand(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { // Make sure that by default we don't want to send the deploy notification response sendDeployNotificationResponse = false; @@ -408,256 +514,283 @@ namespace iris response.magicNumber = WD_CMD_MSGS__RESPONSE_MAGIC_NUMBER; response.commandId = msg.commandId; - switch (msg.commandId) { - case WD_CMD_MSGS__CMD_ID__RESET_SPECIFIC: - return doGndCmdResetSpecific(theContext, + switch (msg.commandId) + { + case WD_CMD_MSGS__CMD_ID__RESET_SPECIFIC: + return doGndCmdResetSpecific(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); + + case WD_CMD_MSGS__CMD_ID__PREP_FOR_DEPLOY: + /* power on all systems */ + if (msg.body.prepForDeploy.confirmationMagicNumber != WD_CMD_MSGS__CONFIRM_DEPLOYMENT_MAGIC_NUMBER) + { + /* magic bad */ + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + } + else + { + return doGndCmdPrepForDeploy(theContext, msg, response, deployNotificationResponse, sendDeployNotificationResponse); + } + break; - case WD_CMD_MSGS__CMD_ID__PREP_FOR_DEPLOY: - /* power on all systems */ - if (msg.body.prepForDeploy.confirmationMagicNumber != WD_CMD_MSGS__CONFIRM_DEPLOYMENT_MAGIC_NUMBER) { - /* magic bad */ - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; - } else { - return doGndCmdPrepForDeploy(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); - } - break; + case WD_CMD_MSGS__CMD_ID__DEPLOY: + if (msg.body.deploy.confirmationMagicNumber != WD_CMD_MSGS__CONFIRM_DEPLOYMENT_MAGIC_NUMBER) + { + /* magic bad */ + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + } + else + { + return doGndCmdDeploy(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); + } + break; - case WD_CMD_MSGS__CMD_ID__DEPLOY: - if (msg.body.deploy.confirmationMagicNumber != WD_CMD_MSGS__CONFIRM_DEPLOYMENT_MAGIC_NUMBER) { - /* magic bad */ - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; - } else { - return doGndCmdDeploy(theContext, + case WD_CMD_MSGS__CMD_ID__SWITCH_CONN_MODE: + return doGndCmdSwitchConnMode(theContext, msg, response, deployNotificationResponse, sendDeployNotificationResponse); - } - break; - - case WD_CMD_MSGS__CMD_ID__SWITCH_CONN_MODE: - return doGndCmdSwitchConnMode(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); - case WD_CMD_MSGS__CMD_ID__SET_DEBUG_COMMS_STATE: - if (msg.body.setDebugCommsState.magic != WD_CMD_MSGS__SET_DEBUG_COMMS_STATE_MAGIC_NUMBER) { - /* magic bad */ - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; - } else { - return doGndCmdSetDebugCommsState(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); - } - break; - - case WD_CMD_MSGS__CMD_ID__SET_AUTO_HEATER_ON_VALUE: - return doGndCmdSetAutoHeaterOnValue(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); - - case WD_CMD_MSGS__CMD_ID__SET_AUTO_HEATER_OFF_VALUE: - return doGndCmdSetAutoHeaterOffValue(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); - - case WD_CMD_MSGS__CMD_ID__SET_HEATER_DUTY_CYCLE: - return doGndCmdSetHeaterDutyCycle(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); + case WD_CMD_MSGS__CMD_ID__SET_DEBUG_COMMS_STATE: + if (msg.body.setDebugCommsState.magic != WD_CMD_MSGS__SET_DEBUG_COMMS_STATE_MAGIC_NUMBER) + { + /* magic bad */ + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + } + else + { + return doGndCmdSetDebugCommsState(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); + } + break; - case WD_CMD_MSGS__CMD_ID__SET_HEATER_DUTY_CYCLE_PERIOD: - return doGndCmdSetHeaterDutyCyclePeriod(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); - - case WD_CMD_MSGS__CMD_ID__SET_VSAE_STATE: - if (msg.body.setVSAEState.magic != WD_CMD_MSGS__SET_VSAE_STATE_MAGIC_NUMBER) { - /* magic bad */ - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; - } else { - return doGndCmdSetVSAEState(theContext, + case WD_CMD_MSGS__CMD_ID__SET_AUTO_HEATER_ON_VALUE: + return doGndCmdSetAutoHeaterOnValue(theContext, msg, response, deployNotificationResponse, sendDeployNotificationResponse); - } - break; - case WD_CMD_MSGS__CMD_ID__ENTER_SLEEP_MODE: - /* Enter sleep mode */ - if (msg.body.enterSleepMode.confirmationMagicNumber != WD_CMD_MSGS__CONFIRM_MODE_CHANGE_MAGIC_NUMBER) { - /* magic bad */ - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; - } else { - return doGndCmdEnterSleepMode(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); - } - break; + case WD_CMD_MSGS__CMD_ID__SET_AUTO_HEATER_OFF_VALUE: + return doGndCmdSetAutoHeaterOffValue(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); - case WD_CMD_MSGS__CMD_ID__ENTER_KEEPALIVE_MODE: - /* Enter keepalive mode */ - if (msg.body.enterKeepAliveMode.confirmationMagicNumber - != WD_CMD_MSGS__CONFIRM_MODE_CHANGE_MAGIC_NUMBER) { - /* magic bad */ - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; - } else { - return doGndCmdEnterKeepAliveMode(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); - } - break; + case WD_CMD_MSGS__CMD_ID__SET_HEATER_DUTY_CYCLE: + return doGndCmdSetHeaterDutyCycle(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); - case WD_CMD_MSGS__CMD_ID__ENTER_SERVICE_MODE: - /* Enter service mode */ - if (msg.body.enterServiceMode.confirmationMagicNumber - != WD_CMD_MSGS__CONFIRM_MODE_CHANGE_MAGIC_NUMBER) { - /* magic bad */ - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; - } else { - return doGndCmdEnterServiceMode(theContext, + case WD_CMD_MSGS__CMD_ID__SET_HEATER_DUTY_CYCLE_PERIOD: + return doGndCmdSetHeaterDutyCyclePeriod(theContext, msg, response, deployNotificationResponse, sendDeployNotificationResponse); - } - break; - case WD_CMD_MSGS__CMD_ID__CLEAR_RESET_MEMORY: - if ((msg.body.clearResetMem.magicOne != WD_CMD_MSGS__CONFIRM_CLR_RST_MEM_MAGIC_NUMBER_ONE) || - (msg.body.clearResetMem.magicTwo != WD_CMD_MSGS__CONFIRM_CLR_RST_MEM_MAGIC_NUMBER_TWO)) { - /* magic bad */ - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; - } else { - return doGndCmdClearResetMemory(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); - } - break; - - case WD_CMD_MSGS__CMD_ID__DANGEROUS_FORCE_BATT_STATE: - if ((msg.body.dangForceBattState.confirmationMagicNumberOne - != WD_CMD_MSGS__CONFIRM_DANG_FORCE_BATT_STATE_MAGIC_NUMBER_ONE) || - (msg.body.dangForceBattState.confirmationMagicNumberTwo - != WD_CMD_MSGS__CONFIRM_DANG_FORCE_BATT_STATE_MAGIC_NUMBER_TWO)) { - /* magic bad */ - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; - } else { - return doGndCmdDangForceBattState(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); - } - break; - - case WD_CMD_MSGS__CMD_ID__ECHO: - return doGndCmdEcho(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); - - case WD_CMD_MSGS__CMD_ID__REQUEST_DETAILED_REPORT: - /* Enter service mode */ - if (msg.body.reqDetReport.magic != WD_CMD_MSGS__CONFIRM_REQ_DET_REPORT_MAGIC_NUMBER) { - /* magic bad */ - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; - } else { - return doGndCmdRequestDetailedReport(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); - } - break; - - case WD_CMD_MSGS__CMD_ID__SET_CHARGE_EN_STATE: - return doGndCmdSetChargeEnState(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); - - case WD_CMD_MSGS__CMD_ID__SET_CHARGE_REG_EN_STATE: - return doGndCmdSetChargeRegEnState(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); + case WD_CMD_MSGS__CMD_ID__SET_VSAE_STATE: + if (msg.body.setVSAEState.magic != WD_CMD_MSGS__SET_VSAE_STATE_MAGIC_NUMBER) + { + /* magic bad */ + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + } + else + { + return doGndCmdSetVSAEState(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); + } + break; - case WD_CMD_MSGS__CMD_ID__SET_BATT_EN_STATE: - return doGndCmdSetBattEnState(theContext, + case WD_CMD_MSGS__CMD_ID__ENTER_SLEEP_MODE: + /* Enter sleep mode */ + if (msg.body.enterSleepMode.confirmationMagicNumber != WD_CMD_MSGS__CONFIRM_MODE_CHANGE_MAGIC_NUMBER) + { + /* magic bad */ + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + } + else + { + return doGndCmdEnterSleepMode(theContext, msg, response, deployNotificationResponse, sendDeployNotificationResponse); + } + break; - case WD_CMD_MSGS__CMD_ID__SET_BATT_CTRL_EN_STATE: - return doGndCmdSetBattCtrlEnState(theContext, + case WD_CMD_MSGS__CMD_ID__ENTER_KEEPALIVE_MODE: + /* Enter keepalive mode */ + if (msg.body.enterKeepAliveMode.confirmationMagicNumber != WD_CMD_MSGS__CONFIRM_MODE_CHANGE_MAGIC_NUMBER) + { + /* magic bad */ + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + } + else + { + return doGndCmdEnterKeepAliveMode(theContext, msg, response, deployNotificationResponse, sendDeployNotificationResponse); + } + break; - case WD_CMD_MSGS__CMD_ID__SET_LATCH_BATT_STATE: - return doGndCmdSetLatchBattState(theContext, - msg, - response, - deployNotificationResponse, - sendDeployNotificationResponse); + case WD_CMD_MSGS__CMD_ID__ENTER_SERVICE_MODE: + /* Enter service mode */ + if (msg.body.enterServiceMode.confirmationMagicNumber != WD_CMD_MSGS__CONFIRM_MODE_CHANGE_MAGIC_NUMBER) + { + /* magic bad */ + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + } + else + { + return doGndCmdEnterServiceMode(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); + } + break; - case WD_CMD_MSGS__CMD_ID__LATCH_SET_PULSE_LOW: - return doGndCmdLatchSetPulseLow(theContext, + case WD_CMD_MSGS__CMD_ID__CLEAR_RESET_MEMORY: + if ((msg.body.clearResetMem.magicOne != WD_CMD_MSGS__CONFIRM_CLR_RST_MEM_MAGIC_NUMBER_ONE) || + (msg.body.clearResetMem.magicTwo != WD_CMD_MSGS__CONFIRM_CLR_RST_MEM_MAGIC_NUMBER_TWO)) + { + /* magic bad */ + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + } + else + { + return doGndCmdClearResetMemory(theContext, msg, response, deployNotificationResponse, sendDeployNotificationResponse); + } + break; - case WD_CMD_MSGS__CMD_ID__LATCH_RESET_PULSE_LOW: - return doGndCmdLatchResetPulseLow(theContext, + case WD_CMD_MSGS__CMD_ID__DANGEROUS_FORCE_BATT_STATE: + if ((msg.body.dangForceBattState.confirmationMagicNumberOne != WD_CMD_MSGS__CONFIRM_DANG_FORCE_BATT_STATE_MAGIC_NUMBER_ONE) || + (msg.body.dangForceBattState.confirmationMagicNumberTwo != WD_CMD_MSGS__CONFIRM_DANG_FORCE_BATT_STATE_MAGIC_NUMBER_TWO)) + { + /* magic bad */ + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + } + else + { + return doGndCmdDangForceBattState(theContext, msg, response, deployNotificationResponse, sendDeployNotificationResponse); + } + break; + + case WD_CMD_MSGS__CMD_ID__ECHO: + return doGndCmdEcho(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); + + case WD_CMD_MSGS__CMD_ID__REQUEST_DETAILED_REPORT: + /* Make sure magic is valid: */ + if (msg.body.reqDetReport.magic != WD_CMD_MSGS__CONFIRM_REQ_DET_REPORT_MAGIC_NUMBER) + { + /* magic bad */ + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + } + else + { + return doGndCmdRequestDetailedReport(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); + } + break; + + case WD_CMD_MSGS__CMD_ID__SET_CHARGE_EN_STATE: + return doGndCmdSetChargeEnState(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); + + case WD_CMD_MSGS__CMD_ID__SET_CHARGE_REG_EN_STATE: + return doGndCmdSetChargeRegEnState(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); + + case WD_CMD_MSGS__CMD_ID__SET_BATT_EN_STATE: + return doGndCmdSetBattEnState(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); - default: - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_ID; - break; + case WD_CMD_MSGS__CMD_ID__SET_BATT_CTRL_EN_STATE: + return doGndCmdSetBattCtrlEnState(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); + + case WD_CMD_MSGS__CMD_ID__SET_LATCH_BATT_STATE: + return doGndCmdSetLatchBattState(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); + + case WD_CMD_MSGS__CMD_ID__LATCH_SET_PULSE_LOW: + return doGndCmdLatchSetPulseLow(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); + + case WD_CMD_MSGS__CMD_ID__LATCH_RESET_PULSE_LOW: + return doGndCmdLatchResetPulseLow(theContext, + msg, + response, + deployNotificationResponse, + sendDeployNotificationResponse); + + default: + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_ID; + break; } return getState(); } - RoverState RoverStateBase::handleUplinkFromLander(RoverContext& theContext, - uint8_t* rxDataBuffer, + RoverState RoverStateBase::handleUplinkFromLander(RoverContext &theContext, + uint8_t *rxDataBuffer, size_t rxDataLen) { // Anything with "Type Magic" field value that isn't for Watchdog is treated as uplink for Hercules @@ -665,17 +798,18 @@ namespace iris rxDataBuffer, rxDataLen); - if (HERCULES_COMMS__STATUS__SUCCESS != hcStatus) { + if (HERCULES_COMMS__STATUS__SUCCESS != hcStatus) + { //!< @todo handling? Send response to lander maybe? } return getState(); } - RoverState RoverStateBase::handleStrokeFromHercules(RoverContext& theContext, - HercMsgs__Header* header) + RoverState RoverStateBase::handleStrokeFromHercules(RoverContext &theContext, + HercMsgs__Header *header) { - static uint8_t telemetrySerializationBuffer[16] = { 0 }; + static uint8_t telemetrySerializationBuffer[16] = {0}; #pragma diag_push #pragma diag_suppress 770 @@ -693,20 +827,21 @@ namespace iris telemetrySerializationBuffer, sizeof(telemetrySerializationBuffer)); - if (HERCULES_COMMS__STATUS__SUCCESS != hcStatus) { + if (HERCULES_COMMS__STATUS__SUCCESS != hcStatus) + { DebugComms__tryPrintfToLanderNonblocking("HerculesComms__txResponseMsg failed with error: %d in " - "RoverStateBase::handleStrokeFromHercules\n", - hcStatus); + "RoverStateBase::handleStrokeFromHercules\n", + hcStatus); } - //HerculesComms__flushTx(theContext.m_hcState); + // HerculesComms__flushTx(theContext.m_hcState); return getState(); } - RoverState RoverStateBase::handleDownlinkFromHercules(RoverContext& theContext, - HercMsgs__Header* header, - uint8_t* payloadBuffer, + RoverState RoverStateBase::handleDownlinkFromHercules(RoverContext &theContext, + HercMsgs__Header *header, + uint8_t *payloadBuffer, size_t payloadSize) { #pragma diag_push @@ -724,10 +859,11 @@ namespace iris nullptr, 0); - if (HERCULES_COMMS__STATUS__SUCCESS != hcStatus) { + if (HERCULES_COMMS__STATUS__SUCCESS != hcStatus) + { DebugComms__tryPrintfToLanderNonblocking("HerculesComms__txResponseMsg failed with error: %d in " - "RoverStateBase::handleDownlinkFromHercules\n", - hcStatus); + "RoverStateBase::handleDownlinkFromHercules\n", + hcStatus); } // 2) Send data to lander @@ -735,14 +871,14 @@ namespace iris DEBUG_LOG_CHECK_STATUS(LANDER_COMMS__STATUS__SUCCESS, lcStatus, "Downlink failed"); - //LanderComms__flushTx(theContext.m_lcState); + // LanderComms__flushTx(theContext.m_lcState); return getState(); } - RoverState RoverStateBase::handleDebugFromHercules(RoverContext& theContext, - HercMsgs__Header* header, - uint8_t* payloadBuffer, + RoverState RoverStateBase::handleDebugFromHercules(RoverContext &theContext, + HercMsgs__Header *header, + uint8_t *payloadBuffer, size_t payloadSize) { #pragma diag_push @@ -758,8 +894,8 @@ namespace iris return getState(); } - RoverState RoverStateBase::handleResetFromHercules(RoverContext& theContext, - HercMsgs__Header* header) + RoverState RoverStateBase::handleResetFromHercules(RoverContext &theContext, + HercMsgs__Header *header) { #pragma diag_push #pragma diag_suppress 770 @@ -767,7 +903,7 @@ namespace iris #pragma diag_pop // For Reset_Specific we want to do the reset, then reply to Hercules - WdCmdMsgs__ResetSpecificId resetValue = (WdCmdMsgs__ResetSpecificId) header->resetValue; + WdCmdMsgs__ResetSpecificId resetValue = (WdCmdMsgs__ResetSpecificId)header->resetValue; RoverState result = performResetCommand(theContext, resetValue, nullptr); @@ -776,54 +912,57 @@ namespace iris nullptr, 0); - if (HERCULES_COMMS__STATUS__SUCCESS != hcStatus) { + if (HERCULES_COMMS__STATUS__SUCCESS != hcStatus) + { DebugComms__tryPrintfToLanderNonblocking("HerculesComms__txResponseMsg failed with error: %d in " - "RoverStateBase::handleResetFromHercules\n", - hcStatus); + "RoverStateBase::handleResetFromHercules\n", + hcStatus); } return result; } - RoverState RoverStateBase::pumpMsgsFromLander(RoverContext& theContext) + RoverState RoverStateBase::pumpMsgsFromLander(RoverContext &theContext) { m_pumpMsgsFromLanderReturnState = getState(); CallbackUserArg args(*this, theContext); LanderComms__Status lcStatus = LanderComms__tryGetMessage(theContext.m_lcState, RoverStateBase::landerMsgCallback, - (void*) &args); + (void *)&args); DEBUG_ASSERT_EQUAL(LANDER_COMMS__STATUS__SUCCESS, lcStatus); - if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) { + if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) + { //!< @todo logging? } return m_pumpMsgsFromLanderReturnState; } - RoverState RoverStateBase::pumpMsgsFromHercules(RoverContext& theContext) + RoverState RoverStateBase::pumpMsgsFromHercules(RoverContext &theContext) { m_pumpMsgsFromHerculesReturnState = getState(); CallbackUserArg args(*this, theContext); HerculesComms__Status hcStatus = HerculesComms__tryGetMessage(theContext.m_hcState, RoverStateBase::herculesMsgCallback, - (void*) &args); + (void *)&args); - //DEBUG_ASSERT_EQUAL(HERCULES_COMMS__STATUS__SUCCESS, hcStatus); - if (HERCULES_COMMS__STATUS__SUCCESS != hcStatus) { + // DEBUG_ASSERT_EQUAL(HERCULES_COMMS__STATUS__SUCCESS, hcStatus); + if (HERCULES_COMMS__STATUS__SUCCESS != hcStatus) + { DebugComms__tryPrintfToLanderNonblocking("HerculesComms__tryGetMessage failed with error: %d in " - "RoverStateBase::pumpMsgsFromHercules\n", - hcStatus); + "RoverStateBase::pumpMsgsFromHercules\n", + hcStatus); } return m_pumpMsgsFromHerculesReturnState; } - void RoverStateBase::sendLanderResponse(RoverContext& theContext, WdCmdMsgs__Response& response) + void RoverStateBase::sendLanderResponse(RoverContext &theContext, WdCmdMsgs__Response &response) { - static uint8_t responseSerializationBuffer[WD_CMD_MSGS__PACKED_SIZE__RESPONSE_MSG] = { 0 }; + static uint8_t responseSerializationBuffer[WD_CMD_MSGS__PACKED_SIZE__RESPONSE_MSG] = {0}; WdCmdMsgs__Status wdCmdStatus = WdCmdMsgs__serializeGroundResponse(&response, responseSerializationBuffer, @@ -832,445 +971,463 @@ namespace iris DEBUG_ASSERT_EQUAL(WD_CMD_MSGS__STATUS__SUCCESS, wdCmdStatus); LanderComms__Status lcStatus = txDownlinkData(theContext, - responseSerializationBuffer, - sizeof(responseSerializationBuffer)); + responseSerializationBuffer, + sizeof(responseSerializationBuffer)); - if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) { + if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) + { //!< @todo handling? } } // Specific watchdog command handling - RoverState RoverStateBase::doGndCmdResetSpecific(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdResetSpecific(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { return performResetCommand(theContext, msg.body.resetSpecific.resetId, &response); } - RoverState RoverStateBase::doGndCmdPrepForDeploy(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdPrepForDeploy(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { /* Default to not being in the right state to transition to mission mode */ response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; return getState(); } - RoverState RoverStateBase::doGndCmdDeploy(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdDeploy(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { /* Default to not being in the right state to transition to deploy */ response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; return getState(); } - RoverState RoverStateBase::doGndCmdSwitchConnMode(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdSwitchConnMode(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { //!< @todo IMPLEMENT! response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; return getState(); } - RoverState RoverStateBase::doGndCmdSetDebugCommsState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdSetDebugCommsState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { - switch (msg.body.setDebugCommsState.selection) { - case WD_CMD_MSGS__DEBUG_COMMS__ON: - DebugComms__setEnabled(TRUE); - DebugComms__tryPrintfToLanderNonblocking("Debug comms enabled\n"); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + switch (msg.body.setDebugCommsState.selection) + { + case WD_CMD_MSGS__DEBUG_COMMS__ON: + DebugComms__setEnabled(TRUE); + DebugComms__tryPrintfToLanderNonblocking("Debug comms enabled\n"); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__DEBUG_COMMS__OFF: - DebugComms__tryPrintfToLanderNonblocking("Disabling debug comms\n"); - DebugComms__setEnabled(FALSE); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__DEBUG_COMMS__OFF: + DebugComms__tryPrintfToLanderNonblocking("Disabling debug comms\n"); + DebugComms__setEnabled(FALSE); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - default: - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + default: + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; } return getState(); } - RoverState RoverStateBase::doGndCmdSetAutoHeaterOnValue(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdSetAutoHeaterOnValue(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { theContext.m_details.m_hParams.m_heaterOnVal = msg.body.setAutoHeaterOnValue.heaterOnValue; + // Flag that the thresholds have changed: + theContext.m_details.m_hParams.m_thresholdsChanged = true; response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; return getState(); } - RoverState RoverStateBase::doGndCmdSetAutoHeaterOffValue(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdSetAutoHeaterOffValue(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { theContext.m_details.m_hParams.m_heaterOffVal = msg.body.setAutoHeaterOffValue.heaterOffValue; + // Flag that the thresholds have changed: + theContext.m_details.m_hParams.m_thresholdsChanged = true; response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; return getState(); } - RoverState RoverStateBase::doGndCmdSetHeaterDutyCycle(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdSetHeaterDutyCycle(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { - const uint16_t& newDutyCycle = msg.body.setHeaterDutyCycle.dutyCycle; - if (newDutyCycle <= theContext.m_details.m_hParams.m_heaterDutyCyclePeriod) { + const uint16_t &newDutyCycle = msg.body.setHeaterDutyCycle.dutyCycle; + // NOTE: TB0CCR0 (max count) is set to m_heaterDutyCyclePeriod-1 (so we need to be < that). + if (newDutyCycle < theContext.m_details.m_hParams.m_heaterDutyCyclePeriod) + { TB0CCR2 = newDutyCycle; theContext.m_details.m_hParams.m_heaterDutyCycle = newDutyCycle; response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - } else { + } + else + { response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; } return getState(); } - RoverState RoverStateBase::doGndCmdSetHeaterDutyCyclePeriod(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdSetHeaterDutyCyclePeriod(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { TB0CCR0 = msg.body.setHeaterDutyCyclePeriod.dutyCyclePeriod; theContext.m_details.m_hParams.m_heaterDutyCyclePeriod = - msg.body.setHeaterDutyCyclePeriod.dutyCyclePeriod; + msg.body.setHeaterDutyCyclePeriod.dutyCyclePeriod; response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; return getState(); } - RoverState RoverStateBase::doGndCmdSetVSAEState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdSetVSAEState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { - switch (msg.body.setVSAEState.selection) { - case WD_CMD_MSGS__VSAE__ON: - blimp_vSysAllEnOn(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + switch (msg.body.setVSAEState.selection) + { + case WD_CMD_MSGS__VSAE__ON: + blimp_vSysAllEnOn(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__VSAE__OFF: - blimp_vSysAllEnOff(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__VSAE__OFF: + blimp_vSysAllEnOff(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__VSAE__FORCE_LOW: - blimp_vSysAllEnForceLow(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__VSAE__FORCE_LOW: + blimp_vSysAllEnForceLow(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - default: - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + default: + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; } return getState(); } - RoverState RoverStateBase::doGndCmdEnterSleepMode(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdEnterSleepMode(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { // Sleep mode is deprecated so always return that we're in the wrong state to transition to sleep. response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; return getState(); } - RoverState RoverStateBase::doGndCmdEnterKeepAliveMode(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdEnterKeepAliveMode(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { /* Default to not being in the right state to transition to keep alive mode */ response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; return getState(); } - RoverState RoverStateBase::doGndCmdEnterServiceMode(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdEnterServiceMode(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { /* Default to not being in the right state to transition to service mode */ response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; return getState(); } - RoverState RoverStateBase::doGndCmdDangForceBattState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdDangForceBattState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { - switch (msg.body.dangForceBattState.state) { - case WD_CMD_MSGS__DANG_FORCE_BATT_STATE__LOW: - blimp_bstat_dangerous_forceLow(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + switch (msg.body.dangForceBattState.state) + { + case WD_CMD_MSGS__DANG_FORCE_BATT_STATE__LOW: + blimp_bstat_dangerous_forceLow(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__DANG_FORCE_BATT_STATE__HIGH: - blimp_bstat_dangerous_forceHigh(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__DANG_FORCE_BATT_STATE__HIGH: + blimp_bstat_dangerous_forceHigh(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__DANG_FORCE_BATT_STATE__RESTORE: - blimp_bstat_safe_restoreInput(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__DANG_FORCE_BATT_STATE__RESTORE: + blimp_bstat_safe_restoreInput(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - default: - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + default: + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; } return getState(); } - RoverState RoverStateBase::doGndCmdSetChargeEnState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdSetChargeEnState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { - switch (msg.body.setChargeEnState.selection) { - case WD_CMD_MSGS__CHARGE_EN__ON: - blimp_chargerEnOn(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + switch (msg.body.setChargeEnState.selection) + { + case WD_CMD_MSGS__CHARGE_EN__ON: + blimp_chargerEnOn(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__CHARGE_EN__OFF: - blimp_chargerEnOff(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__CHARGE_EN__OFF: + blimp_chargerEnOff(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__CHARGE_EN__FORCE_HIGH: - blimp_chargerEnForceHigh(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__CHARGE_EN__FORCE_HIGH: + blimp_chargerEnForceHigh(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - default: - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + default: + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; } return getState(); } - RoverState RoverStateBase::doGndCmdSetChargeRegEnState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdSetChargeRegEnState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { - switch (msg.body.setChargeRegEnState.selection) { - case WD_CMD_MSGS__CHARGE_REG_EN__ON: - blimp_regEnOn(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + switch (msg.body.setChargeRegEnState.selection) + { + case WD_CMD_MSGS__CHARGE_REG_EN__ON: + blimp_regEnOn(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__CHARGE_REG_EN__OFF: - blimp_regEnOff(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__CHARGE_REG_EN__OFF: + blimp_regEnOff(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - default: - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + default: + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; } return getState(); } - RoverState RoverStateBase::doGndCmdSetBattEnState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdSetBattEnState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { - switch (msg.body.setBattEnState.selection) { - case WD_CMD_MSGS__BATT_EN__ON: - blimp_battEnOn(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + switch (msg.body.setBattEnState.selection) + { + case WD_CMD_MSGS__BATT_EN__ON: + blimp_battEnOn(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__BATT_EN__OFF: - blimp_battEnOff(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__BATT_EN__OFF: + blimp_battEnOff(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - default: - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + default: + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; } return getState(); } - RoverState RoverStateBase::doGndCmdSetBattCtrlEnState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdSetBattCtrlEnState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; return getState(); } - RoverState RoverStateBase::doGndCmdSetLatchBattState(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdSetLatchBattState(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { - switch (msg.body.setLatchBattState.selection) { - case WD_CMD_MSGS__LATCH_BATT__ON: - blimp_latchBattOn(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + switch (msg.body.setLatchBattState.selection) + { + case WD_CMD_MSGS__LATCH_BATT__ON: + blimp_latchBattOn(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__LATCH_BATT__OFF: - blimp_latchBattOff(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__LATCH_BATT__OFF: + blimp_latchBattOff(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__LATCH_BATT__UPDATE: - blimp_latchBattUpdate(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__LATCH_BATT__UPDATE: + blimp_latchBattUpdate(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - default: - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + default: + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; } return getState(); } - RoverState RoverStateBase::doGndCmdLatchSetPulseLow(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdLatchSetPulseLow(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { - switch (msg.body.latchSetPulseLow.selection) { - case WD_CMD_MSGS__LATCH_SET_RESET__OFF: - blimp_latchSetOff(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + switch (msg.body.latchSetPulseLow.selection) + { + case WD_CMD_MSGS__LATCH_SET_RESET__OFF: + blimp_latchSetOff(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__LATCH_SET_RESET__PULSE: - blimp_latchSetPulseLow(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__LATCH_SET_RESET__PULSE: + blimp_latchSetPulseLow(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__LATCH_SET_RESET__FORCE_HIGH: - blimp_latchSetHigh(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__LATCH_SET_RESET__FORCE_HIGH: + blimp_latchSetHigh(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__LATCH_SET_RESET__FORCE_LOW: - blimp_latchSetLow(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__LATCH_SET_RESET__FORCE_LOW: + blimp_latchSetLow(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - default: - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + default: + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; } return getState(); } - RoverState RoverStateBase::doGndCmdLatchResetPulseLow(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdLatchResetPulseLow(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { - switch (msg.body.latchResetPulseLow.selection) { - case WD_CMD_MSGS__LATCH_SET_RESET__OFF: - blimp_latchResetOff(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + switch (msg.body.latchResetPulseLow.selection) + { + case WD_CMD_MSGS__LATCH_SET_RESET__OFF: + blimp_latchResetOff(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__LATCH_SET_RESET__PULSE: - blimp_latchResetPulseLow(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__LATCH_SET_RESET__PULSE: + blimp_latchResetPulseLow(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__LATCH_SET_RESET__FORCE_HIGH: - blimp_latchResetHigh(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__LATCH_SET_RESET__FORCE_HIGH: + blimp_latchResetHigh(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - case WD_CMD_MSGS__LATCH_SET_RESET__FORCE_LOW: - blimp_latchResetLow(); - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - break; + case WD_CMD_MSGS__LATCH_SET_RESET__FORCE_LOW: + blimp_latchResetLow(); + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + break; - default: - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + default: + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; } return getState(); } - RoverState RoverStateBase::doGndCmdClearResetMemory(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdClearResetMemory(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { theContext.m_details.m_resetActionBits = 0; response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; return getState(); } - RoverState RoverStateBase::doGndCmdEcho(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdEcho(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { echoToLander(theContext, msg.body.echo.numBytesToEcho, msg.body.echo.bytesToEcho); response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; return getState(); } - RoverState RoverStateBase::doGndCmdRequestDetailedReport(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateBase::doGndCmdRequestDetailedReport(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { theContext.m_sendDetailedReport = true; response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; return getState(); } - void RoverStateBase::echoToLander(RoverContext& theContext, uint8_t numBytesToEcho, const uint8_t* bytesToEcho) + void RoverStateBase::echoToLander(RoverContext &theContext, uint8_t numBytesToEcho, const uint8_t *bytesToEcho) { /* settings */ static const char ECHO_HEADER[] = "ECHO: "; @@ -1289,41 +1446,65 @@ namespace iris /* send echo */ LanderComms__Status lcStatus = txDownlinkData(theContext, ECHO_BUFFER, - (ECHO_HEADER_SIZE+numBytesToEcho)); + (ECHO_HEADER_SIZE + numBytesToEcho)); DEBUG_ASSERT_EQUAL(LANDER_COMMS__STATUS__SUCCESS, lcStatus); - if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) { + if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) + { //!< @todo Handling? // just an echo so we can probably just ignore it. Ground will just try again. } } - void RoverStateBase::sendDetailedReportToLander(RoverContext& theContext) + void RoverStateBase::sendDetailedReportToLander(RoverContext &theContext, bool alsoSendHeartbeats) { /* send detailed report */ - static DetailedReport report = { 0 }; - static uint8_t reportBuffer[sizeof(DetailedReport)] = { 0 }; + static DetailedReport report = {0}; + static uint8_t reportBuffer[sizeof(DetailedReport)] = {0}; GroundMsgs__Status gcStatus = - GroundMsgs__generateDetailedReport(&(theContext.m_i2cReadings), - &(theContext.m_adcValues), - &(theContext.m_details), - &report, - reportBuffer); + GroundMsgs__generateDetailedReport(&(theContext.m_i2cReadings), + &(theContext.m_adcValues), + &(theContext.m_details), + &report, + reportBuffer); DEBUG_ASSERT_EQUAL(GND_MSGS__STATUS__SUCCESS, gcStatus); LanderComms__Status lcStatus = txDownlinkData(theContext, - (uint8_t*) &report, - sizeof(report)); + (uint8_t *)&report, + sizeof(report)); DEBUG_ASSERT_EQUAL(LANDER_COMMS__STATUS__SUCCESS, lcStatus); - if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) { + if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) + { //!< @todo Handling? } + if (alsoSendHeartbeats) + { + static FlightEarthHeartbeat hb = {0}; + GroundMsgs__Status gcStatus = + GroundMsgs__generateFlightEarthHeartbeat(&(theContext.m_i2cReadings), + &(theContext.m_adcValues), + &(theContext.m_details.m_hParams), + &hb); + + assert(GND_MSGS__STATUS__SUCCESS == gcStatus); + + LanderComms__Status lcHbStatus = txDownlinkData(theContext, + (uint8_t *)&hb, + sizeof(hb)); + + assert(LANDER_COMMS__STATUS__SUCCESS == lcHbStatus); + if (LANDER_COMMS__STATUS__SUCCESS != lcHbStatus) + { + //!< @todo Handling? + } + } + #if DEBUG_REPORT DebugComms_printfToLander("\n"); - DebugComms__printDataAsHexToLander((uint8_t*) &report, sizeof(DetailedReport), FALSE); + DebugComms__printDataAsHexToLander((uint8_t *)&report, sizeof(DetailedReport), FALSE); DebugComms_printfToLander("chargeStat1: %u, ", report.chargeStat1); DebugComms_printfToLander("chargeStat2: %u, ", report.chargeStat2); DebugComms_printfToLander("battStat: %u, ", report.battStat); @@ -1367,312 +1548,405 @@ namespace iris #endif // DEBUG_REPORT } - void RoverStateBase::doConditionalResetSpecific(RoverContext& theContext, + void RoverStateBase::doConditionalResetSpecific(RoverContext &theContext, WdCmdMsgs__ResetSpecificId resetValue, - WdCmdMsgs__Response* response, + WdCmdMsgs__Response *response, bool allowPowerOn, bool allowDisableRs422, bool allowDeploy, bool allowUndeploy, - bool& writeIoExpander) + bool &writeIoExpander) { - if (nullptr != response) { + if (nullptr != response) + { // Default to success, change if necessary response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; } writeIoExpander = false; - switch (resetValue) { - case WD_CMD_MSGS__RESET_ID__NO_RESET: - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__NO_RESET); - break; - - case WD_CMD_MSGS__RESET_ID__HERCULES_RESET: - //!< @todo Should reset be allowed in KeepAlive? It's not technically powering on, but its similar. - setHerculesReset(); - writeIoExpander = true; - // queue up hercules unreset - theContext.m_watchdogFlags |= WDFLAG_UNRESET_HERCULES; - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__HERCULES_RESET); - break; - - case WD_CMD_MSGS__RESET_ID__HERCULES_POWER_ON: - if (allowPowerOn) { - powerOnHercules(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__HERCULES_POWER_ON); - } else if (nullptr != response) { - response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; - } - break; - - case WD_CMD_MSGS__RESET_ID__HERCULES_POWER_OFF: - powerOffHercules(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__HERCULES_POWER_OFF); - break; - - case WD_CMD_MSGS__RESET_ID__RADIO_RESET: - //!< @todo Should reset be allowed in KeepAlive? It's not technically powering on, but its similar. - setRadioReset(); - writeIoExpander = true; - // queue up an radio unreset - theContext.m_watchdogFlags |= WDFLAG_UNRESET_RADIO1; - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__RADIO_RESET); - break; - - case WD_CMD_MSGS__RESET_ID__RADIO_POWER_ON: - if (allowPowerOn) { - powerOnRadio(); - writeIoExpander = true; - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__RADIO_POWER_ON); - } else if (nullptr != response) { - response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; - } - break; - - case WD_CMD_MSGS__RESET_ID__RADIO_POWER_OFF: - powerOffRadio(); - writeIoExpander = true; - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__RADIO_POWER_OFF); - break; - - case WD_CMD_MSGS__RESET_ID__CAM_FPGA_RESET: - //!< @todo Should reset be allowed in KeepAlive? It's not technically powering on, but its similar. - setFPGAReset(); - writeIoExpander = true; - // queue up the fpga unreset - theContext.m_watchdogFlags |= WDFLAG_UNRESET_FPGA; - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__CAM_FPGA_RESET); - break; - - case WD_CMD_MSGS__RESET_ID__CAM_FPGA_POWER_ON: - if (allowPowerOn) { - powerOnFpga(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__CAM_FPGA_POWER_ON); - } else if (nullptr != response) { - response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; - } - break; - - case WD_CMD_MSGS__RESET_ID__CAM_FPGA_POWER_OFF: - powerOffFpga(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__CAM_FPGA_POWER_OFF); - break; - - case WD_CMD_MSGS__RESET_ID__MOTOR_1_RESET: - setMotor1Reset(); - writeIoExpander = true; - // queue up the motor 1 unreset - theContext.m_watchdogFlags |= WDFLAG_UNRESET_MOTOR1; - break; - - case WD_CMD_MSGS__RESET_ID__MOTOR_2_RESET: - setMotor2Reset(); - writeIoExpander = true; - // queue up the motor 2 unreset - theContext.m_watchdogFlags |= WDFLAG_UNRESET_MOTOR2; - break; - - case WD_CMD_MSGS__RESET_ID__MOTOR_3_RESET: - setMotor3Reset(); - writeIoExpander = true; - // queue up the motor 3 unreset - theContext.m_watchdogFlags |= WDFLAG_UNRESET_MOTOR3; - break; - - case WD_CMD_MSGS__RESET_ID__MOTOR_4_RESET: - setMotor4Reset(); - writeIoExpander = true; - // queue up the motor 4 unreset - theContext.m_watchdogFlags |= WDFLAG_UNRESET_MOTOR4; - break; - - case WD_CMD_MSGS__RESET_ID__ALL_MOTORS_RESET: - setMotorsReset(); + switch (resetValue) + { + case WD_CMD_MSGS__RESET_ID__NO_RESET: + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__NO_RESET); + break; + + case WD_CMD_MSGS__RESET_ID__HERCULES_RESET: + //!< @todo Should reset be allowed in KeepAlive? It's not technically powering on, but its similar. + setHerculesReset(); + writeIoExpander = true; + // queue up hercules unreset + theContext.m_watchdogFlags |= WDFLAG_UNRESET_HERCULES; + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__HERCULES_RESET); + break; + + case WD_CMD_MSGS__RESET_ID__HERCULES_POWER_ON: + if (allowPowerOn) + { + powerOnHercules(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__HERCULES_POWER_ON); + } + else if (nullptr != response) + { + response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; + } + break; + + case WD_CMD_MSGS__RESET_ID__HERCULES_POWER_OFF: + powerOffHercules(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__HERCULES_POWER_OFF); + break; + + case WD_CMD_MSGS__RESET_ID__RADIO_RESET: + //!< @todo Should reset be allowed in KeepAlive? It's not technically powering on, but its similar. + setRadioReset(); + writeIoExpander = true; + // queue up an radio unreset + theContext.m_watchdogFlags |= WDFLAG_UNRESET_RADIO1; + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__RADIO_RESET); + break; + + case WD_CMD_MSGS__RESET_ID__RADIO_POWER_ON: + if (allowPowerOn) + { + powerOnRadio(); writeIoExpander = true; - // queue up all the motor unresets - theContext.m_watchdogFlags |= WDFLAG_UNRESET_MOTOR1 | WDFLAG_UNRESET_MOTOR2 | - WDFLAG_UNRESET_MOTOR3 | WDFLAG_UNRESET_MOTOR4; - break; - - case WD_CMD_MSGS__RESET_ID__ALL_MOTORS_POWER_ON: - if (allowPowerOn) { - powerOnMotors(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__ALL_MOTORS_POWER_ON); - } else if (nullptr != response) { - response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; - } - break; - - case WD_CMD_MSGS__RESET_ID__ALL_MOTORS_POWER_OFF: - powerOffMotors(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__ALL_MOTORS_POWER_OFF); - break; - - case WD_CMD_MSGS__RESET_ID__3_3V_EN_RESET: - if (allowPowerOn) { - disable3V3PowerRail(); - // queue up 3V3 rail on again - theContext.m_watchdogFlags |= WDFLAG_UNRESET_3V3; - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__3V3_EN_RESET); - } else if (nullptr != response) { - response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; - } - break; + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__RADIO_POWER_ON); + } + else if (nullptr != response) + { + response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; + } + break; + + case WD_CMD_MSGS__RESET_ID__RADIO_POWER_OFF: + powerOffRadio(); + writeIoExpander = true; + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__RADIO_POWER_OFF); + break; + + case WD_CMD_MSGS__RESET_ID__CAM_FPGA_RESET: + //!< @todo Should reset be allowed in KeepAlive? It's not technically powering on, but its similar. + setFPGAReset(); + writeIoExpander = true; + // queue up the fpga unreset + theContext.m_watchdogFlags |= WDFLAG_UNRESET_FPGA; + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__CAM_FPGA_RESET); + break; + + case WD_CMD_MSGS__RESET_ID__CAM_FPGA_POWER_ON: + if (allowPowerOn) + { + powerOnFpga(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__CAM_FPGA_POWER_ON); + } + else if (nullptr != response) + { + response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; + } + break; + + case WD_CMD_MSGS__RESET_ID__CAM_FPGA_POWER_OFF: + powerOffFpga(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__CAM_FPGA_POWER_OFF); + break; + + case WD_CMD_MSGS__RESET_ID__MOTOR_1_RESET: + setMotor1Reset(); + writeIoExpander = true; + // queue up the motor 1 unreset + theContext.m_watchdogFlags |= WDFLAG_UNRESET_MOTOR1; + break; + + case WD_CMD_MSGS__RESET_ID__MOTOR_2_RESET: + setMotor2Reset(); + writeIoExpander = true; + // queue up the motor 2 unreset + theContext.m_watchdogFlags |= WDFLAG_UNRESET_MOTOR2; + break; + + case WD_CMD_MSGS__RESET_ID__MOTOR_3_RESET: + setMotor3Reset(); + writeIoExpander = true; + // queue up the motor 3 unreset + theContext.m_watchdogFlags |= WDFLAG_UNRESET_MOTOR3; + break; + + case WD_CMD_MSGS__RESET_ID__MOTOR_4_RESET: + setMotor4Reset(); + writeIoExpander = true; + // queue up the motor 4 unreset + theContext.m_watchdogFlags |= WDFLAG_UNRESET_MOTOR4; + break; + + case WD_CMD_MSGS__RESET_ID__ALL_MOTORS_RESET: + setMotorsReset(); + writeIoExpander = true; + // queue up all the motor unresets + theContext.m_watchdogFlags |= WDFLAG_UNRESET_MOTOR1 | WDFLAG_UNRESET_MOTOR2 | + WDFLAG_UNRESET_MOTOR3 | WDFLAG_UNRESET_MOTOR4; + break; + + case WD_CMD_MSGS__RESET_ID__ALL_MOTORS_POWER_ON: + if (allowPowerOn) + { + powerOnMotors(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__ALL_MOTORS_POWER_ON); + } + else if (nullptr != response) + { + response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; + } + break; - case WD_CMD_MSGS__RESET_ID__3_3V_EN_POWER_ON: - if (allowPowerOn) { - blimp_vSysAllEnOn(); - enable3V3PowerRail(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__3V3_EN_POWER_ON); - } else if (nullptr != response) { - response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; - } - break; + case WD_CMD_MSGS__RESET_ID__ALL_MOTORS_POWER_OFF: + powerOffMotors(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__ALL_MOTORS_POWER_OFF); + break; - case WD_CMD_MSGS__RESET_ID__3_3V_EN_POWER_OFF: + case WD_CMD_MSGS__RESET_ID__3_3V_EN_RESET: + if (allowPowerOn) + { disable3V3PowerRail(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__3V3_EN_POWER_OFF); - break; + // queue up 3V3 rail on again + theContext.m_watchdogFlags |= WDFLAG_UNRESET_3V3; + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__3V3_EN_RESET); + } + else if (nullptr != response) + { + response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; + } + break; - case WD_CMD_MSGS__RESET_ID__V_SYS_ALL_POWER_CYCLE: - if (allowPowerOn) { - disableVSysAllPowerRail(); - // queue up VSA rail on again - theContext.m_watchdogFlags |= WDFLAG_POWER_ON_V_SYS_ALL; - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__V_SYS_ALL_OFF__RESET); - } else if (nullptr != response) { - response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; - } - break; + case WD_CMD_MSGS__RESET_ID__3_3V_EN_POWER_ON: + if (allowPowerOn) + { + blimp_vSysAllEnOn(); + enable3V3PowerRail(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__3V3_EN_POWER_ON); + } + else if (nullptr != response) + { + response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; + } + break; - case WD_CMD_MSGS__RESET_ID__V_SYS_ALL_ON: - if (allowPowerOn) { - enableVSysAllPowerRail(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__V_SYS_ALL_POWER_ON); - } else if (nullptr != response) { - response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; - } - break; + case WD_CMD_MSGS__RESET_ID__3_3V_EN_POWER_OFF: + disable3V3PowerRail(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__3V3_EN_POWER_OFF); + break; - case WD_CMD_MSGS__RESET_ID__V_SYS_ALL_OFF: + case WD_CMD_MSGS__RESET_ID__V_SYS_ALL_POWER_CYCLE: + if (allowPowerOn) + { disableVSysAllPowerRail(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__V_SYS_ALL_POWER_OFF); - break; - - case WD_CMD_MSGS__RESET_ID__HDRM_DEPLOY_SIGNAL_POWER_OFF: - if (allowUndeploy) { - unsetDeploy(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__HDRM_DEPLOY_SIGNAL_POWER_OFF); - } else if (nullptr != response) { - response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; - } - break; - - case WD_CMD_MSGS__RESET_ID__FPGA_CAM_0_SELECT: - fpgaCameraSelectLo(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__FPGA_CAM_0_SELECT); - break; - - case WD_CMD_MSGS__RESET_ID__FPGA_CAM_1_SELECT: - fpgaCameraSelectHi(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__FPGA_CAM_1_SELECT); - break; + // queue up VSA rail on again + theContext.m_watchdogFlags |= WDFLAG_POWER_ON_V_SYS_ALL; + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__V_SYS_ALL_OFF__RESET); + } + else if (nullptr != response) + { + response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; + } + break; - case WD_CMD_MSGS__RESET_ID__BATTERY_CHARGE_START: - startChargingBatteries(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__BATTERY_CHARGE_START); - break; + case WD_CMD_MSGS__RESET_ID__V_SYS_ALL_ON: + if (allowPowerOn) + { + enableVSysAllPowerRail(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__V_SYS_ALL_POWER_ON); + } + else if (nullptr != response) + { + response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; + } + break; - case WD_CMD_MSGS__RESET_ID__BATTERY_CHARGE_STOP: - stopChargingBatteries(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__BATTERY_CHARGE_STOP); - break; + case WD_CMD_MSGS__RESET_ID__V_SYS_ALL_OFF: + disableVSysAllPowerRail(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__V_SYS_ALL_POWER_OFF); + break; - case WD_CMD_MSGS__RESET_ID__RS422_UART_ENABLE: + case WD_CMD_MSGS__RESET_ID__HDRM_DEPLOY_SIGNAL_POWER_OFF: + if (allowUndeploy) + { + unsetDeploy(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__HDRM_DEPLOY_SIGNAL_POWER_OFF); + } + else if (nullptr != response) + { + response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; + } + break; + + case WD_CMD_MSGS__RESET_ID__FPGA_CAM_0_SELECT: + fpgaCameraSelectLo(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__FPGA_CAM_0_SELECT); + break; + + case WD_CMD_MSGS__RESET_ID__FPGA_CAM_1_SELECT: + fpgaCameraSelectHi(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__FPGA_CAM_1_SELECT); + break; + + case WD_CMD_MSGS__RESET_ID__BATTERY_CHARGE_START: + startChargingBatteries(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__BATTERY_CHARGE_START); + break; + + case WD_CMD_MSGS__RESET_ID__BATTERY_CHARGE_STOP: + stopChargingBatteries(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__BATTERY_CHARGE_STOP); + break; + + case WD_CMD_MSGS__RESET_ID__RS422_UART_ENABLE: + //!< @todo IMPLEMENT + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__RS422_UART_ENABLE); + break; + + case WD_CMD_MSGS__RESET_ID__RS422_UART_DISABLE: + if (allowDisableRs422) + { //!< @todo IMPLEMENT - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__RS422_UART_ENABLE); - break; - - case WD_CMD_MSGS__RESET_ID__RS422_UART_DISABLE: - if (allowDisableRs422) { - //!< @todo IMPLEMENT - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__RS422_UART_DISABLE); - } else if (nullptr != response) { - response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; - } - break; - - case WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_ENABLE: - theContext.m_details.m_hParams.m_heatingControlEnabled = true; - enableHeater(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__AUTO_HEATER_CONTROLLER_ENABLE); - break; - - case WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_DISABLE: - theContext.m_details.m_hParams.m_heatingControlEnabled = false; - /** - * @warning TB0CCR2 should ~NOT~ be set here. It should only be set in two places: when Timer_B is - * initialized (where TB0CCR2 is set to its default value), and in the handler for the - * "Set Heater Duty Cycle" ground command. By respecting this, TB0CCR2 keeps whatever value it - * was set with by the ground command and the heater is interacted with (by this command and - * the auto heater control loop) simply by enabling/disabling the heater pin. - * - * @note Similar to the TB0CC2, the m_heating field should not be set here. Instead, it should only be - * modified via calls to enableHeater() and disableHeater(). - */ - disableHeater(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__AUTO_HEATER_CONTROLLER_DISABLE); - break; - - case WD_CMD_MSGS__RESET_ID__HERCULES_WATCHDOG_ENABLE: - theContext.m_watchdogOpts |= WDOPT_MONITOR_HERCULES; - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__HERCULES_WATCHDOG_ENABLE); - break; + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__RS422_UART_DISABLE); + } + else if (nullptr != response) + { + response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; + } + break; - case WD_CMD_MSGS__RESET_ID__HERCULES_WATCHDOG_DISABLE: - theContext.m_watchdogOpts &= ~WDOPT_MONITOR_HERCULES; - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__HERCULES_WATCHDOG_DISABLE); - break; + case WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_ENABLE: + theContext.m_details.m_hParams.m_heatingControlEnabled = true; + enableHeater(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__AUTO_HEATER_CONTROLLER_ENABLE); + break; + + case WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_DISABLE: + theContext.m_details.m_hParams.m_heatingControlEnabled = false; + /** + * @warning TB0CCR2 should ~NOT~ be set here. It should only be set in two places: when Timer_B is + * initialized (where TB0CCR2 is set to its default value), and in the handler for the + * "Set Heater Duty Cycle" ground command. By respecting this, TB0CCR2 keeps whatever value it + * was set with by the ground command and the heater is interacted with (by this command and + * the auto heater control loop) simply by enabling/disabling the heater pin. + * + * @note Similar to the TB0CC2, the m_heating field should not be set here. Instead, it should only be + * modified via calls to enableHeater() and disableHeater(). + */ + disableHeater(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__AUTO_HEATER_CONTROLLER_DISABLE); + break; - case WD_CMD_MSGS__RESET_ID__BATTERIES_ENABLE: - if (allowPowerOn) { - enableBatteries(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__BATTERIES_ENABLE); - } else if (nullptr != response) { - response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; - } - break; + case WD_CMD_MSGS__RESET_ID__HEATER_FORCE_OFF: + theContext.m_details.m_hParams.m_forceState = HEATER_FORCE_ALWAYS_OFF; + disableHeater(); + break; + case WD_CMD_MSGS__RESET_ID__HEATER_FORCE_ON: + theContext.m_details.m_hParams.m_forceState = HEATER_FORCE_ALWAYS_ON; + enableHeater(); + break; + case WD_CMD_MSGS__RESET_ID__HEATER_FORCE_NOTHING: + theContext.m_details.m_hParams.m_forceState = HEATER_FORCE_NOTHING; + break; + case WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_USE_RT_INPUT: + theContext.m_details.m_hParams.m_inputSource = HEATER_CONTROL_INPUT_BATT_RT; + break; + case WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_USE_CHARGER_INPUT_DEACTIVATE: + // Disable charger circuitry so we can return to normal: + blimp_regEnOff(); + blimp_chargerEnOff(); + blimp_battEnOff(); + break; + case WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_USE_CHARGER_INPUT_ACTIVATE: + // Assert that charging should not happen: + blimp_chargerEnOff(); + // Turn on (but don't latch) the batteries (might be unsafe to turn + // on charger without the batteries connected, even with CE=OFF... + // need to test on SBC with BLiMP to determine). + // NOTE: So long as lander power is supplied, this shouldn't do + // anything since everything will be powered off lander power before + // battery power and since the batteries won't be latched, once + // lander power is removed, they should power back off. + blimp_battEnOn(); + // Then power up the charging regulator so the charging IC can + // create the VREF used by the charging TS: + // (unfortunately we can't just use an internal pullup with the ADC + // on the MSP430 so we have to do this this way) + blimp_regEnOn(); + // NOTE: Even if CE=OFF fails for some reason, if the batteries + // were to remain disconnected, charging wouldn't be able to + // happen (and this open circuit shouldn't cause an issue for the + // battery charging IC b/c it has over-voltage protection to handle + // a battery/load disconnect case). + break; + case WD_CMD_MSGS__RESET_ID__AUTO_HEATER_CONTROLLER_USE_CHARGER_INPUT: + // Just set the input source, don't change the circuitry (this might + // be desirable and lets us arm before actually messing with the circuitry): + theContext.m_details.m_hParams.m_inputSource = HEATER_CONTROL_INPUT_CHARGER; + break; + case WD_CMD_MSGS__RESET_ID__HERCULES_WATCHDOG_ENABLE: + theContext.m_watchdogOpts |= WDOPT_MONITOR_HERCULES; + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__HERCULES_WATCHDOG_ENABLE); + break; + + case WD_CMD_MSGS__RESET_ID__HERCULES_WATCHDOG_DISABLE: + theContext.m_watchdogOpts &= ~WDOPT_MONITOR_HERCULES; + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__HERCULES_WATCHDOG_DISABLE); + break; + + case WD_CMD_MSGS__RESET_ID__BATTERIES_ENABLE: + if (allowPowerOn) + { + enableBatteries(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__BATTERIES_ENABLE); + } + else if (nullptr != response) + { + response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; + } + break; - case WD_CMD_MSGS__RESET_ID__BATTERIES_DISABLE: - disableBatteries(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__BATTERIES_DISABLE); - break; + case WD_CMD_MSGS__RESET_ID__BATTERIES_DISABLE: + disableBatteries(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__BATTERIES_DISABLE); + break; - case WD_CMD_MSGS__RESET_ID__CLEAR_PERSISTENT_DEPLOY: - *(theContext.m_persistentDeployed) = false; - break; + case WD_CMD_MSGS__RESET_ID__CLEAR_PERSISTENT_DEPLOY: + *(theContext.m_persistentDeployed) = false; + break; - case WD_CMD_MSGS__RESET_ID__HDRM_DEPLOY_SIGNAL_POWER_ON: - if (allowPowerOn && allowDeploy) { - /* WOOT WOOT! WE ARE ON TO THE MOON, FOLKS */ - /* ref: https://docs.google.com/document/d/1dKLlBcIIVo8t1bGu3jNiHobGMavA3I2al0cncj3ZAhE/edit */ - setDeploy(); - SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__HDRM_DEPLOY_SIGNAL_POWER_ON); - } else if (nullptr != response) { - response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; - } - break; + case WD_CMD_MSGS__RESET_ID__HDRM_DEPLOY_SIGNAL_POWER_ON: + if (allowPowerOn && allowDeploy) + { + /* WOOT WOOT! WE ARE ON TO THE MOON, FOLKS */ + /* ref: https://docs.google.com/document/d/1dKLlBcIIVo8t1bGu3jNiHobGMavA3I2al0cncj3ZAhE/edit */ + setDeploy(); + SET_RABI_IN_UINT(theContext.m_details.m_resetActionBits, RABI__HDRM_DEPLOY_SIGNAL_POWER_ON); + } + else if (nullptr != response) + { + response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; + } + break; - default: - /* invalid command */ - if (nullptr != response) { - response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; - // If we can respond indicating there was a bad parameter, then return - // that this function finished "successfully," since we have a valid way - // of communicating something didn't work - } + default: + /* invalid command */ + if (nullptr != response) + { + response->statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_PARAMETER; + // If we can respond indicating there was a bad parameter, then return + // that this function finished "successfully," since we have a valid way + // of communicating something didn't work + } } + + // Report what we did (and under what conditions): + uint16_t resetConditions = allowPowerOn; + resetConditions = (resetConditions << 1) & allowDisableRs422; + resetConditions = (resetConditions << 1) & allowDeploy; + resetConditions = (resetConditions << 1) & allowUndeploy; + DebugComms__tryPrintfToLanderNonblocking("RESET:%d -> %d with 0x%x\n", int(resetValue), int(response->statusCode), resetConditions); } } // End namespace iris diff --git a/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateEnteringKeepAlive.cpp b/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateEnteringKeepAlive.cpp index cbc07b551..5506712f7 100644 --- a/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateEnteringKeepAlive.cpp +++ b/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateEnteringKeepAlive.cpp @@ -14,16 +14,16 @@ namespace iris { RoverStateEnteringKeepAlive::RoverStateEnteringKeepAlive() - : RoverStateBase(RoverState::ENTERING_KEEP_ALIVE) + : RoverStateBase(RoverState::ENTERING_KEEP_ALIVE) { } RoverStateEnteringKeepAlive::RoverStateEnteringKeepAlive(RoverState overridingState) - : RoverStateBase(overridingState) + : RoverStateBase(overridingState) { } - bool RoverStateEnteringKeepAlive::canEnterLowPowerMode(RoverContext& /*theContext*/) + bool RoverStateEnteringKeepAlive::canEnterLowPowerMode(RoverContext & /*theContext*/) { // Don't allow entering low power mode while entering keep alive. The only non-instant thing this state // does is to wait for the previous ADC transaction to complete. Since we don't wake from LPM after an ADC @@ -31,7 +31,7 @@ namespace iris return false; } - RoverState RoverStateEnteringKeepAlive::handleHerculesData(RoverContext& /*theContext*/) + RoverState RoverStateEnteringKeepAlive::handleHerculesData(RoverContext & /*theContext*/) { /** * @todo Should we re-enter this state upon this occurring, in order to re-set the bit that should power off @@ -42,38 +42,41 @@ namespace iris return getState(); } - RoverState RoverStateEnteringKeepAlive::handleTimerTick(RoverContext& theContext) + RoverState RoverStateEnteringKeepAlive::handleTimerTick(RoverContext &theContext) { theContext.m_keepAliveTickCount++; theContext.m_keepAliveTickCountForDetailedReport++; /* only send every 4 timer ticks (28s) */ - if (theContext.m_keepAliveTickCount >= 4) { + if (theContext.m_keepAliveTickCount >= 4) + { theContext.m_keepAliveTickCount = 0; /* send heartbeat with collected data */ - static FlightEarthHeartbeat hb = { 0 }; + static FlightEarthHeartbeat hb = {0}; GroundMsgs__Status gcStatus = - GroundMsgs__generateFlightEarthHeartbeat(&(theContext.m_i2cReadings), - &(theContext.m_adcValues), - &(theContext.m_details.m_hParams), - &hb); + GroundMsgs__generateFlightEarthHeartbeat(&(theContext.m_i2cReadings), + &(theContext.m_adcValues), + &(theContext.m_details.m_hParams), + &hb); assert(GND_MSGS__STATUS__SUCCESS == gcStatus); LanderComms__Status lcStatus = txDownlinkData(theContext, - (uint8_t*) &hb, - sizeof(hb)); + (uint8_t *)&hb, + sizeof(hb)); assert(LANDER_COMMS__STATUS__SUCCESS == lcStatus); - if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) { + if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) + { //!< @todo Handling? } } /* only send every 70 timer ticks (490s) */ // NOTE: This is just the base rate for ENTERING KeepAlive (if stuck here). Actual KeepAlive also sends its own detailed status packets. - if (theContext.m_keepAliveTickCountForDetailedReport >= 70) { + if (theContext.m_keepAliveTickCountForDetailedReport >= 70) + { theContext.m_keepAliveTickCountForDetailedReport = 0; sendDetailedReportToLander(theContext); } @@ -84,78 +87,84 @@ namespace iris UART__Status uStatus = UART__checkRxRbErrors(theContext.m_uart1State, &count, &changed); DEBUG_LOG_CHECK_STATUS(UART__STATUS__SUCCESS, uStatus, "Failed to get Lander UART Rx Rb Error count"); - if (changed) { + if (changed) + { DebugComms__tryPrintfToLanderNonblocking("New Lander UART Rx Rb failures, total count = %u\n", count); } - if (theContext.m_details.m_hParams.m_heatingControlEnabled) { - // calculate PWM duty cycle (if any) to apply to heater + if (theContext.m_details.m_hParams.m_heatingControlEnabled) + { + // Update the Heater State (PWM remains unchanged here): heaterControl(theContext); } // Queue up a read of the IO Expander, and initiate it if no other I2C action is active - theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__READ_IO_EXPANDER); + theContext.m_queuedI2cActions |= 1 << ((uint16_t)I2C_SENSORS__ACTIONS__READ_IO_EXPANDER); - if (!theContext.m_i2cActive) { + if (!theContext.m_i2cActive) + { initiateNextI2cAction(theContext); } return getState(); } - RoverState RoverStateEnteringKeepAlive::handlePowerIssue(RoverContext& /*theContext*/) + RoverState RoverStateEnteringKeepAlive::handlePowerIssue(RoverContext & /*theContext*/) { //!< @todo Implement RoverStateEnteringKeepAlive::handlePowerIssue return getState(); } - RoverState RoverStateEnteringKeepAlive::spinOnce(RoverContext& theContext) + RoverState RoverStateEnteringKeepAlive::spinOnce(RoverContext &theContext) { - switch (m_currentSubstate) { - case SubState::WAITING_FOR_IO_EXPANDER_WRITE: + switch (m_currentSubstate) + { + case SubState::WAITING_FOR_IO_EXPANDER_WRITE: + { + I2C_Sensors__Action action = I2C_SENSORS__ACTIONS__INACTIVE; + uint8_t readValue = 0; + I2C_Sensors__Status i2cStatus = I2C_Sensors__getActionStatus(&action, + &(theContext.m_i2cReadings), + &readValue); + + // Sanity check + assert(I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action); + + if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) + { + DEBUG_LOG_CHECK_STATUS(I2C_SENSORS__STATUS__SUCCESS_DONE, i2cStatus, "I2C action failed"); + + if (I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action) { - I2C_Sensors__Action action = I2C_SENSORS__ACTIONS__INACTIVE; - uint8_t readValue = 0; - I2C_Sensors__Status i2cStatus = I2C_Sensors__getActionStatus(&action, - &(theContext.m_i2cReadings), - &readValue); - - // Sanity check - assert(I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action); - - if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) { - DEBUG_LOG_CHECK_STATUS(I2C_SENSORS__STATUS__SUCCESS_DONE, i2cStatus, "I2C action failed"); - - if (I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action) { - theContext.m_watchdogFlags &= ~WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; - } + theContext.m_watchdogFlags &= ~WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; + } - I2C_Sensors__clearLastAction(); - theContext.m_i2cActive = false; + I2C_Sensors__clearLastAction(); + theContext.m_i2cActive = false; - // Start the next I2C action if one is queued, if nothing queued this will return quickly - initiateNextI2cAction(theContext); + // Start the next I2C action if one is queued, if nothing queued this will return quickly + initiateNextI2cAction(theContext); - return transitionToFinishUpSetup(theContext); - } - } - break; - - case SubState::FINISH_UP_SETUP: - // Fall through - default: - // We should only ever spin in this state when the SubState is WAITING_FOR_IO_EXPANDER_WRITE. Really we - // don't need the substates, but I've kept them because they are representative of the stages of this - // state. - assert(!"In spinOnce() not in WAITING_FOR_IO_EXPANDER_WRITE substate, which shouldn't be possible"); - break; + return transitionToFinishUpSetup(theContext); + } + } + break; + + case SubState::FINISH_UP_SETUP: + // Fall through + default: + // We should only ever spin in this state when the SubState is WAITING_FOR_IO_EXPANDER_WRITE. Really we + // don't need the substates, but I've kept them because they are representative of the stages of this + // state. + assert(!"In spinOnce() not in WAITING_FOR_IO_EXPANDER_WRITE substate, which shouldn't be possible"); + break; } // Last ADC sample still not done, so remain in the current state. return getState(); } - RoverState RoverStateEnteringKeepAlive::transitionTo(RoverContext& theContext) + RoverState RoverStateEnteringKeepAlive::transitionTo(RoverContext &theContext) { *(theContext.m_persistentInMission) = false; theContext.m_keepAliveTickCount = 0; @@ -168,9 +177,9 @@ namespace iris return RoverState::KEEP_ALIVE; } - RoverState RoverStateEnteringKeepAlive::performResetCommand(RoverContext& theContext, + RoverState RoverStateEnteringKeepAlive::performResetCommand(RoverContext &theContext, WdCmdMsgs__ResetSpecificId resetValue, - WdCmdMsgs__Response* response) + WdCmdMsgs__Response *response) { bool writeIOExpander = false; RoverStateBase::doConditionalResetSpecific(theContext, @@ -182,12 +191,14 @@ namespace iris false, // whether or not to allow undeploy writeIOExpander); - if (writeIOExpander) { - theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); + if (writeIOExpander) + { + theContext.m_queuedI2cActions |= 1 << ((uint16_t)I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); theContext.m_writeCustomIoExpanderValues = false; theContext.m_watchdogFlags |= WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; - if (!theContext.m_i2cActive) { + if (!theContext.m_i2cActive) + { initiateNextI2cAction(theContext); } } @@ -195,8 +206,8 @@ namespace iris return getState(); } - RoverState RoverStateEnteringKeepAlive::handleUplinkFromLander(RoverContext& theContext, - uint8_t* rxDataBuffer, + RoverState RoverStateEnteringKeepAlive::handleUplinkFromLander(RoverContext &theContext, + uint8_t *rxDataBuffer, size_t rxDataLen) { // Ignore any uplink because the Hercules shouldn't be powered on. @@ -204,11 +215,11 @@ namespace iris return getState(); } - RoverState RoverStateEnteringKeepAlive::doGndCmdEnterKeepAliveMode(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateEnteringKeepAlive::doGndCmdEnterKeepAliveMode(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { // We're already entering keep alive mode, but we can still re-transition into keep alive // once we receive this command. @@ -216,7 +227,7 @@ namespace iris return transitionTo(theContext); } - RoverState RoverStateEnteringKeepAlive::transitionToWaitingForIoExpanderWrite(RoverContext& theContext) + RoverState RoverStateEnteringKeepAlive::transitionToWaitingForIoExpanderWrite(RoverContext &theContext) { // Clear all queued I2C actions and stop any active one. This allows us to immediately perform the IO expander // write @@ -243,7 +254,8 @@ namespace iris blimp_normalBoot(); // Restore BLiMP state if returning to KA from a higher state. Shouldn't do anything if we're pushing straight through KA the first time. // Turn off Herc comms (used if returning to KA from a higher state): - if (HerculesComms__isInitialized(theContext.m_hcState)) { + if (HerculesComms__isInitialized(theContext.m_hcState)) + { DebugComms__registerHerculesComms(NULL); HerculesComms__Status hcStatus = HerculesComms__uninitialize(&(theContext.m_hcState)); DEBUG_ASSERT_EQUAL(HERCULES_COMMS__STATUS__SUCCESS, hcStatus); @@ -252,7 +264,7 @@ namespace iris // Make sure to disable the Hercules uart so we don't dump current through that tx pin UART__uninit0(&(theContext.m_uart0State)); - theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); + theContext.m_queuedI2cActions |= 1 << ((uint16_t)I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); theContext.m_writeCustomIoExpanderValues = false; initiateNextI2cAction(theContext); @@ -260,7 +272,7 @@ namespace iris return getState(); } - RoverState RoverStateEnteringKeepAlive::transitionToFinishUpSetup(RoverContext& theContext) + RoverState RoverStateEnteringKeepAlive::transitionToFinishUpSetup(RoverContext &theContext) { // These are simply setting/clearing bits, so they are instant. enableHeater(); diff --git a/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateEnteringMission.cpp b/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateEnteringMission.cpp index 6cd93e801..2337f3c26 100644 --- a/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateEnteringMission.cpp +++ b/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateEnteringMission.cpp @@ -18,11 +18,11 @@ namespace iris { RoverStateEnteringMission::RoverStateEnteringMission() - : RoverStateBase(RoverState::ENTERING_MISSION) + : RoverStateBase(RoverState::ENTERING_MISSION) { } - bool RoverStateEnteringMission::canEnterLowPowerMode(RoverContext& /*theContext*/) + bool RoverStateEnteringMission::canEnterLowPowerMode(RoverContext & /*theContext*/) { // Don't allow entering low power mode while entering mission. Waiting for ADC transaction to complete, waiting // for wifi to be ready, and the I2C transactions involved with initializing the fuel gauge are all things that @@ -30,7 +30,7 @@ namespace iris return false; } - RoverState RoverStateEnteringMission::handleTimerTick(RoverContext& theContext) + RoverState RoverStateEnteringMission::handleTimerTick(RoverContext &theContext) { // Check for UART errors to report size_t count = 0; @@ -38,31 +38,34 @@ namespace iris UART__Status uStatus = UART__checkRxRbErrors(theContext.m_uart1State, &count, &changed); DEBUG_LOG_CHECK_STATUS(UART__STATUS__SUCCESS, uStatus, "Failed to get Lander UART Rx Rb Error count"); - if (changed) { + if (changed) + { DebugComms__tryPrintfToLanderNonblocking("New Lander UART Rx Rb failures, total count = %u\n", count); } /* send heartbeat with collected data */ - static FullEarthHeartbeat hb = { 0 }; + static FullEarthHeartbeat hb = {0}; GroundMsgs__Status gcStatus = GroundMsgs__generateFullEarthHeartbeat(&(theContext.m_i2cReadings), - &(theContext.m_adcValues), - &(theContext.m_details.m_hParams), - static_cast(getState()), - &hb); + &(theContext.m_adcValues), + &(theContext.m_details.m_hParams), + static_cast(getState()), + &hb); DEBUG_ASSERT_EQUAL(GND_MSGS__STATUS__SUCCESS, gcStatus); LanderComms__Status lcStatus = LanderComms__txDataUntilSendOrTimeout(theContext.m_lcState, - (uint8_t*) &hb, + (uint8_t *)&hb, sizeof(hb), 200); DEBUG_ASSERT_EQUAL(LANDER_COMMS__STATUS__SUCCESS, lcStatus); - if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) { + if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) + { //!< @todo Handling? } - if (theContext.m_details.m_hParams.m_heatingControlEnabled) { - // calculate PWM duty cycle (if any) to apply to heater + if (theContext.m_details.m_hParams.m_heatingControlEnabled) + { + // Update the Heater State (PWM remains unchanged here): heaterControl(theContext); } @@ -95,248 +98,272 @@ namespace iris return getState(); } - RoverState RoverStateEnteringMission::handlePowerIssue(RoverContext& /*theContext*/) + RoverState RoverStateEnteringMission::handlePowerIssue(RoverContext & /*theContext*/) { //!< @todo Implement RoverStateEnteringMission::handlePowerIssue return getState(); } - RoverState RoverStateEnteringMission::spinOnce(RoverContext& theContext) + RoverState RoverStateEnteringMission::spinOnce(RoverContext &theContext) { - switch (m_currentSubstate) { - case SubState::WAITING_FOR_I2C_DONE: - if (theContext.m_i2cActive) { - I2C_Sensors__Action action = I2C_SENSORS__ACTIONS__INACTIVE; - uint8_t readValue = 0; - I2C_Sensors__Status i2cStatus = I2C_Sensors__getActionStatus(&action, - &(theContext.m_i2cReadings), - &readValue); - - if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) { - DEBUG_LOG_CHECK_STATUS(I2C_SENSORS__STATUS__SUCCESS_DONE, i2cStatus, "I2C action failed"); - - I2C_Sensors__clearLastAction(); - theContext.m_i2cActive = false; - initiateNextI2cAction(theContext); - - // If m_i2cActive is still false after calling initiateNextI2cAction, it means all queued i2c - // actions have been performed and there is no active i2c action - if (!(theContext.m_i2cActive)) { - return transitionToWaitingForIoExpanderWrite1(theContext); - } + switch (m_currentSubstate) + { + case SubState::WAITING_FOR_I2C_DONE: + if (theContext.m_i2cActive) + { + I2C_Sensors__Action action = I2C_SENSORS__ACTIONS__INACTIVE; + uint8_t readValue = 0; + I2C_Sensors__Status i2cStatus = I2C_Sensors__getActionStatus(&action, + &(theContext.m_i2cReadings), + &readValue); + + if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) + { + DEBUG_LOG_CHECK_STATUS(I2C_SENSORS__STATUS__SUCCESS_DONE, i2cStatus, "I2C action failed"); + + I2C_Sensors__clearLastAction(); + theContext.m_i2cActive = false; + initiateNextI2cAction(theContext); + + // If m_i2cActive is still false after calling initiateNextI2cAction, it means all queued i2c + // actions have been performed and there is no active i2c action + if (!(theContext.m_i2cActive)) + { + return transitionToWaitingForIoExpanderWrite1(theContext); } - } else { - return transitionToWaitingForIoExpanderWrite1(theContext); } - break; + } + else + { + return transitionToWaitingForIoExpanderWrite1(theContext); + } + break; + + case SubState::WAITING_FOR_IO_EXPANDER_WRITE_1: + { + I2C_Sensors__Action action = I2C_SENSORS__ACTIONS__INACTIVE; + uint8_t readValue = 0; + I2C_Sensors__Status i2cStatus = I2C_Sensors__getActionStatus(&action, + &(theContext.m_i2cReadings), + &readValue); + + // Sanity check + DEBUG_ASSERT_EQUAL(I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER, action); - case SubState::WAITING_FOR_IO_EXPANDER_WRITE_1: + if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) + { + DEBUG_LOG_CHECK_STATUS(I2C_SENSORS__STATUS__SUCCESS_DONE, i2cStatus, "I2C action failed"); + + if (I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action) { - I2C_Sensors__Action action = I2C_SENSORS__ACTIONS__INACTIVE; - uint8_t readValue = 0; - I2C_Sensors__Status i2cStatus = I2C_Sensors__getActionStatus(&action, - &(theContext.m_i2cReadings), - &readValue); + theContext.m_watchdogFlags &= ~WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; + } - // Sanity check - DEBUG_ASSERT_EQUAL(I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER, action); + I2C_Sensors__clearLastAction(); + theContext.m_i2cActive = false; - if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) { - DEBUG_LOG_CHECK_STATUS(I2C_SENSORS__STATUS__SUCCESS_DONE, i2cStatus, "I2C action failed"); + return transitionToWaitingForIoExpanderWrite2(theContext); + } + } + break; - if (I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action) { - theContext.m_watchdogFlags &= ~WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; - } + case SubState::WAITING_FOR_IO_EXPANDER_WRITE_2: + { + I2C_Sensors__Action action = I2C_SENSORS__ACTIONS__INACTIVE; + uint8_t readValue = 0; + I2C_Sensors__Status i2cStatus = I2C_Sensors__getActionStatus(&action, + &(theContext.m_i2cReadings), + &readValue); - I2C_Sensors__clearLastAction(); - theContext.m_i2cActive = false; + // Sanity check + DEBUG_ASSERT_EQUAL(I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER, action); - return transitionToWaitingForIoExpanderWrite2(theContext); - } - } - break; + if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) + { + DEBUG_LOG_CHECK_STATUS(I2C_SENSORS__STATUS__SUCCESS_DONE, i2cStatus, "I2C action failed"); - case SubState::WAITING_FOR_IO_EXPANDER_WRITE_2: + if (I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action) { - I2C_Sensors__Action action = I2C_SENSORS__ACTIONS__INACTIVE; - uint8_t readValue = 0; - I2C_Sensors__Status i2cStatus = I2C_Sensors__getActionStatus(&action, - &(theContext.m_i2cReadings), - &readValue); + theContext.m_watchdogFlags &= ~WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; + } - // Sanity check - DEBUG_ASSERT_EQUAL(I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER, action); + I2C_Sensors__clearLastAction(); + theContext.m_i2cActive = false; - if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) { - DEBUG_LOG_CHECK_STATUS(I2C_SENSORS__STATUS__SUCCESS_DONE, i2cStatus, "I2C action failed"); + return transitionToWaitingForFuelGaugeOrTimeout(theContext); + } + } + break; + + case SubState::WAITING_FOR_FUEL_GAUGE_OR_TIMEOUT: + { + // First of all, if we've timed out we can simply move forward. + uint16_t timePassed = Time__getTimeInCentiseconds() - m_startFuelGaugeInitTimeCentiseconds; + // DPRINTF_ERR("%d\n", Time__getTimeInCentiseconds()); + if (timePassed > FUEL_GAUGE_INIT_TIMEOUT_CENTISECONDS) + { + DPRINTF_ERR("Setting up fuel gauge timed out\n"); + I2C_Sensors__stop(); + theContext.m_queuedI2cActions = 0; + theContext.m_i2cActive = false; + + return transitionToWatitingForWifiReadyOrTimeout(theContext); + } - if (I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action) { - theContext.m_watchdogFlags &= ~WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; - } + // Next, check if initializing the fuel gauge is complete (either due to success or failure). + I2C_Sensors__Action currentAction = I2C_SENSORS__ACTIONS__INACTIVE; + I2C_Sensors__Status i2cStatus = I2C_Sensors__getActionStatus(¤tAction, NULL, NULL); - I2C_Sensors__clearLastAction(); - theContext.m_i2cActive = false; + // First of all, we should always be doing the action to initialize the fuel gauges at this point + DEBUG_ASSERT_EQUAL(I2C_SENSORS__ACTIONS__GAUGE_INIT, currentAction); - return transitionToWaitingForFuelGaugeOrTimeout(theContext); - } - } - break; + if (I2C_SENSORS__STATUS__SUCCESS_DONE == i2cStatus) + { + // Gauge initialization completed successfully, so move forward - case SubState::WAITING_FOR_FUEL_GAUGE_OR_TIMEOUT: - { - // First of all, if we've timed out we can simply move forward. - uint16_t timePassed = Time__getTimeInCentiseconds() - m_startFuelGaugeInitTimeCentiseconds; - //DPRINTF_ERR("%d\n", Time__getTimeInCentiseconds()); - if (timePassed > FUEL_GAUGE_INIT_TIMEOUT_CENTISECONDS) { - DPRINTF_ERR("Setting up fuel gauge timed out\n"); - I2C_Sensors__stop(); - theContext.m_queuedI2cActions = 0; - theContext.m_i2cActive = false; - - return transitionToWatitingForWifiReadyOrTimeout(theContext); - } + // First clear the last I2C_Sensors action so we can start a new one later + I2C_Sensors__clearLastAction(); + theContext.m_i2cActive = false; - // Next, check if initializing the fuel gauge is complete (either due to success or failure). - I2C_Sensors__Action currentAction = I2C_SENSORS__ACTIONS__INACTIVE; - I2C_Sensors__Status i2cStatus = I2C_Sensors__getActionStatus(¤tAction, NULL, NULL); - - // First of all, we should always be doing the action to initialize the fuel gauges at this point - DEBUG_ASSERT_EQUAL(I2C_SENSORS__ACTIONS__GAUGE_INIT, currentAction); - - if (I2C_SENSORS__STATUS__SUCCESS_DONE == i2cStatus) { - // Gauge initialization completed successfully, so move forward - - // First clear the last I2C_Sensors action so we can start a new one later - I2C_Sensors__clearLastAction(); - theContext.m_i2cActive = false; - - // Then move forward - return transitionToWatitingForWifiReadyOrTimeout(theContext); - } else if (I2C_SENSORS__STATUS__ERROR__DONE_WITH_NACKS == i2cStatus) { - // Gauge initialization failed, but we haven't timed out yet. Therefore we retry the - // initialization action. - - // First clear the current (completed) action from the I2C_Sensors module so we can start a new - // one. - I2C_Sensors__clearLastAction(); - theContext.m_i2cActive = false; - - // Kick off the series of I2C transactions to initialize the fuel gauge. - theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__GAUGE_INIT); - initiateNextI2cAction(theContext); - } else if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) { - DEBUG_LOG_CHECK_STATUS(I2C_SENSORS__STATUS__SUCCESS_DONE, - i2cStatus, - "Unexpected failure while getting I2C status"); - // I guess retry entering mission? - //!< @todo What to do here? Enter FAULT? - return transitionToWaitingForI2cDone(theContext); - } + // Then move forward + return transitionToWatitingForWifiReadyOrTimeout(theContext); + } + else if (I2C_SENSORS__STATUS__ERROR__DONE_WITH_NACKS == i2cStatus) + { + // Gauge initialization failed, but we haven't timed out yet. Therefore we retry the + // initialization action. + + // First clear the current (completed) action from the I2C_Sensors module so we can start a new + // one. + I2C_Sensors__clearLastAction(); + theContext.m_i2cActive = false; + + // Kick off the series of I2C transactions to initialize the fuel gauge. + theContext.m_queuedI2cActions |= 1 << ((uint16_t)I2C_SENSORS__ACTIONS__GAUGE_INIT); + initiateNextI2cAction(theContext); + } + else if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) + { + DEBUG_LOG_CHECK_STATUS(I2C_SENSORS__STATUS__SUCCESS_DONE, + i2cStatus, + "Unexpected failure while getting I2C status"); + // I guess retry entering mission? + //!< @todo What to do here? Enter FAULT? + return transitionToWaitingForI2cDone(theContext); + } - break; - } + break; + } - case SubState::WAITING_FOR_WIFI_READY_OR_TIMEOUT: - { - // First of all, if we've timed out we can simply move forward. - uint16_t timePassed = Time__getTimeInCentiseconds() - m_startWifiReadyTimeCentiseconds; - bool transition = false; - - if(!m_sentWaitingForWifiMessage){ - // Let Ground know why they'll not hear anything from us for a bit: - DPRINTF("Awaiting Wifi for %d cs\n", WIFI_READY_TIMEOUT_CENTISECONDS); - m_sentWaitingForWifiMessage = true; - } + case SubState::WAITING_FOR_WIFI_READY_OR_TIMEOUT: + { + // First of all, if we've timed out we can simply move forward. + uint16_t timePassed = Time__getTimeInCentiseconds() - m_startWifiReadyTimeCentiseconds; + bool transition = false; + + if (!m_sentWaitingForWifiMessage) + { + // Let Ground know why they'll not hear anything from us for a bit: + DPRINTF("Awaiting Wifi for %d cs\n", WIFI_READY_TIMEOUT_CENTISECONDS); + m_sentWaitingForWifiMessage = true; + } - if (timePassed > WIFI_READY_TIMEOUT_CENTISECONDS) { - DPRINTF_ERR("Wait for Wifi timed out\n"); - transition = true; - } + if (timePassed > WIFI_READY_TIMEOUT_CENTISECONDS) + { + DPRINTF_ERR("Wait for Wifi timed out\n"); + transition = true; + } - if (theContext.gotWifi) { - DPRINTF("Got Wifi\n"); - transition = true; - } + if (theContext.gotWifi) + { + DPRINTF("Got Wifi\n"); + transition = true; + } - if (transition) { - // At this point the only thing that may be using I2C would be the read/write from the timer tick, - // and transitioning to mission has priority over that. If it was a write, the changes being written - // should be picked up and written in IoExpanderWrite3. If it was a read, then all that we lose by - // canceling it is a short delay in updating the input values on the IO expander - I2C_Sensors__stop(); - theContext.m_queuedI2cActions = 0; - theContext.m_i2cActive = false; - return transitionToWaitingForIoExpanderWrite3(theContext); - } - break; - } + if (transition) + { + // At this point the only thing that may be using I2C would be the read/write from the timer tick, + // and transitioning to mission has priority over that. If it was a write, the changes being written + // should be picked up and written in IoExpanderWrite3. If it was a read, then all that we lose by + // canceling it is a short delay in updating the input values on the IO expander + I2C_Sensors__stop(); + theContext.m_queuedI2cActions = 0; + theContext.m_i2cActive = false; + return transitionToWaitingForIoExpanderWrite3(theContext); + } + break; + } - case SubState::WAITING_FOR_IO_EXPANDER_WRITE_3: - { - I2C_Sensors__Action action = I2C_SENSORS__ACTIONS__INACTIVE; - uint8_t readValue = 0; - I2C_Sensors__Status i2cStatus = I2C_Sensors__getActionStatus(&action, - &(theContext.m_i2cReadings), - &readValue); + case SubState::WAITING_FOR_IO_EXPANDER_WRITE_3: + { + I2C_Sensors__Action action = I2C_SENSORS__ACTIONS__INACTIVE; + uint8_t readValue = 0; + I2C_Sensors__Status i2cStatus = I2C_Sensors__getActionStatus(&action, + &(theContext.m_i2cReadings), + &readValue); - // Sanity check - DEBUG_ASSERT_EQUAL(I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER, action); + // Sanity check + DEBUG_ASSERT_EQUAL(I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER, action); - if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) { - DEBUG_LOG_CHECK_STATUS(I2C_SENSORS__STATUS__SUCCESS_DONE, i2cStatus, "I2C action failed"); + if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) + { + DEBUG_LOG_CHECK_STATUS(I2C_SENSORS__STATUS__SUCCESS_DONE, i2cStatus, "I2C action failed"); - if (I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action) { - theContext.m_watchdogFlags &= ~WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; - } + if (I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action) + { + theContext.m_watchdogFlags &= ~WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; + } - I2C_Sensors__clearLastAction(); - theContext.m_i2cActive = false; + I2C_Sensors__clearLastAction(); + theContext.m_i2cActive = false; - // Start the next I2C action if one is queued, if nothing queued this will return quickly - initiateNextI2cAction(theContext); + // Start the next I2C action if one is queued, if nothing queued this will return quickly + initiateNextI2cAction(theContext); - enableHerculesComms(theContext); + enableHerculesComms(theContext); - return RoverState::MISSION; - } - } - break; + return RoverState::MISSION; + } + } + break; - default: - assert(!"In spinOnce() in default case, which shouldn't be possible"); - break; + default: + assert(!"In spinOnce() in default case, which shouldn't be possible"); + break; } // Remain in the current state. return getState(); } - RoverState RoverStateEnteringMission::transitionTo(RoverContext& theContext) + RoverState RoverStateEnteringMission::transitionTo(RoverContext &theContext) { m_sentWaitingForWifiMessage = false; // reset flag return transitionToWaitingForI2cDone(theContext); } - RoverState RoverStateEnteringMission::performResetCommand(RoverContext& theContext, + RoverState RoverStateEnteringMission::performResetCommand(RoverContext &theContext, WdCmdMsgs__ResetSpecificId resetValue, - WdCmdMsgs__Response* response) + WdCmdMsgs__Response *response) { bool writeIOExpander = false; RoverStateBase::doConditionalResetSpecific(theContext, resetValue, response, - true, // whether or not to allow power on + true, // whether or not to allow power on false, // whether or not to allow disabling RS422 false, // whether or not to allow deploy false, // whether or not to allow undeploy writeIOExpander); - if (writeIOExpander) { - theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); + if (writeIOExpander) + { + theContext.m_queuedI2cActions |= 1 << ((uint16_t)I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); theContext.m_writeCustomIoExpanderValues = false; theContext.m_watchdogFlags |= WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; - if (!theContext.m_i2cActive) { + if (!theContext.m_i2cActive) + { initiateNextI2cAction(theContext); } } @@ -344,17 +371,20 @@ namespace iris return getState(); } - RoverState RoverStateEnteringMission::transitionToWaitingForI2cDone(RoverContext& theContext) + RoverState RoverStateEnteringMission::transitionToWaitingForI2cDone(RoverContext &theContext) { - if (theContext.m_i2cActive) { + if (theContext.m_i2cActive) + { m_currentSubstate = SubState::WAITING_FOR_I2C_DONE; return getState(); - } else { + } + else + { return transitionToWaitingForIoExpanderWrite1(theContext); } } - RoverState RoverStateEnteringMission::transitionToWaitingForIoExpanderWrite1(RoverContext& theContext) + RoverState RoverStateEnteringMission::transitionToWaitingForIoExpanderWrite1(RoverContext &theContext) { /* bootup process - enable all rails */ blimp_vSysAllEnOn(); // [CWC] new. desired behavior. @@ -369,7 +399,7 @@ namespace iris releaseRadioReset(); releaseFPGAReset(); - theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); + theContext.m_queuedI2cActions |= 1 << ((uint16_t)I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); theContext.m_writeCustomIoExpanderValues = false; // I2C being inactive should be a prerequisite of entering this state @@ -381,7 +411,7 @@ namespace iris return getState(); } - RoverState RoverStateEnteringMission::transitionToWaitingForIoExpanderWrite2(RoverContext& theContext) + RoverState RoverStateEnteringMission::transitionToWaitingForIoExpanderWrite2(RoverContext &theContext) { // Power stuff on. These are simply setting/clearing bits, so they are instant. However, powering on the radio // requires writing the I/O Expander. @@ -390,7 +420,7 @@ namespace iris powerOnRadio(); stopChargingBatteries(); - theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); + theContext.m_queuedI2cActions |= 1 << ((uint16_t)I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); theContext.m_writeCustomIoExpanderValues = false; // I2C being inactive should be a prerequisite of entering this state @@ -402,7 +432,7 @@ namespace iris return getState(); } - RoverState RoverStateEnteringMission::transitionToWaitingForFuelGaugeOrTimeout(RoverContext& theContext) + RoverState RoverStateEnteringMission::transitionToWaitingForFuelGaugeOrTimeout(RoverContext &theContext) { // I2C being inactive should be a prerequisite of entering this state DEBUG_ASSERT(!(theContext.m_i2cActive)); @@ -413,7 +443,7 @@ namespace iris m_startFuelGaugeInitTimeCentiseconds = Time__getTimeInCentiseconds(); // Kick off the series of I2C transactions to initialize the fuel gauge. - theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__GAUGE_INIT); + theContext.m_queuedI2cActions |= 1 << ((uint16_t)I2C_SENSORS__ACTIONS__GAUGE_INIT); initiateNextI2cAction(theContext); // We're done transitioning. The spinOnce() for this substate will monitor for completion of initialization @@ -423,7 +453,7 @@ namespace iris return getState(); } - RoverState RoverStateEnteringMission::transitionToWatitingForWifiReadyOrTimeout(RoverContext& theContext) + RoverState RoverStateEnteringMission::transitionToWatitingForWifiReadyOrTimeout(RoverContext &theContext) { // Record the start time for the time period in which we'll wait for the wifi to become ready for use. If it // isn't ready by the end of the timeout period, then we'll move forward without wifi. @@ -442,14 +472,14 @@ namespace iris return getState(); } - RoverState RoverStateEnteringMission::transitionToWaitingForIoExpanderWrite3(RoverContext& theContext) + RoverState RoverStateEnteringMission::transitionToWaitingForIoExpanderWrite3(RoverContext &theContext) { // These are simply setting/clearing bits, so they are instant powerOnHercules(); releaseMotorsReset(); releaseHerculesReset(); - theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); + theContext.m_queuedI2cActions |= 1 << ((uint16_t)I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); theContext.m_writeCustomIoExpanderValues = false; // I2C being inactive should be a prerequisite of entering this state diff --git a/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateKeepAlive.cpp b/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateKeepAlive.cpp index 4b2112d0b..ad5661a15 100644 --- a/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateKeepAlive.cpp +++ b/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateKeepAlive.cpp @@ -17,22 +17,23 @@ namespace iris { } - bool RoverStateKeepAlive::canEnterLowPowerMode(RoverContext& theContext) + bool RoverStateKeepAlive::canEnterLowPowerMode(RoverContext &theContext) { // Handling lander data and timer ticks will both wake us up out of LPM, so it's ok for us to enter it. return !(theContext.m_i2cActive); } - RoverState RoverStateKeepAlive::handleHerculesData(RoverContext& /*theContext*/) + RoverState RoverStateKeepAlive::handleHerculesData(RoverContext & /*theContext*/) { assert(!"Got hercules data event in KeepAlive, which shouldn't be possible"); return getState(); } - RoverState RoverStateKeepAlive::handleTimerTick(RoverContext& theContext) + RoverState RoverStateKeepAlive::handleTimerTick(RoverContext &theContext) { // Trigger a new ADC sample if the previous one is done - if (isAdcSampleDone()) { + if (isAdcSampleDone()) + { adcCheckVoltageLevels(&(theContext.m_adcValues)); } @@ -42,41 +43,51 @@ namespace iris return getState(); } - RoverState RoverStateKeepAlive::handlePowerIssue(RoverContext& /*theContext*/) + RoverState RoverStateKeepAlive::handlePowerIssue(RoverContext & /*theContext*/) { //!< @todo Implement RoverStateKeepAlive::handlePowerIssue return getState(); } - RoverState RoverStateKeepAlive::spinOnce(RoverContext& theContext) + RoverState RoverStateKeepAlive::spinOnce(RoverContext &theContext) { - if (theContext.m_i2cActive) { + if (theContext.m_i2cActive) + { I2C_Sensors__Action action = {}; uint8_t readValue = 0; I2C_Sensors__Status i2cStatus = I2C_Sensors__getActionStatus(&action, &(theContext.m_i2cReadings), &readValue); - if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) { + if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) + { DEBUG_LOG_CHECK_STATUS(I2C_SENSORS__STATUS__SUCCESS_DONE, i2cStatus, "I2C action failed"); - if (I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action) { + if (I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action) + { theContext.m_watchdogFlags &= ~WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; } - if (I2C_SENSORS__ACTIONS__READ_IO_EXPANDER == action) { + if (I2C_SENSORS__ACTIONS__READ_IO_EXPANDER == action) + { bool chargeStat2 = (readValue & I2C_SENSORS__IOE_P1_BIT__CHARGE_STAT2 != 0); bool latchStat = (readValue & I2C_SENSORS__IOE_P1_BIT__LATCH_STAT != 0); - if (chargeStat2) { + if (chargeStat2) + { SET_IPASBI_IN_UINT(theContext.m_details.m_inputPinAndStateBits, IPASBI__CHARGE_STAT2); - } else { + } + else + { CLEAR_IPASBI_IN_UINT(theContext.m_details.m_inputPinAndStateBits, IPASBI__CHARGE_STAT2); } - if (latchStat) { + if (latchStat) + { SET_IPASBI_IN_UINT(theContext.m_details.m_inputPinAndStateBits, IPASBI__LATCH_STAT); - } else { + } + else + { CLEAR_IPASBI_IN_UINT(theContext.m_details.m_inputPinAndStateBits, IPASBI__LATCH_STAT); } } @@ -89,20 +100,22 @@ namespace iris uint16_t currentTime = Time__getTimeInCentiseconds(); if (SEND_DETAILED_REPORTS_IN_SPIN_ONCE && - (currentTime - theContext.m_lastDetailedReportSendTime >= CENTISECONDS_BETWEEN_DETAILED_REPORT_SENDS)) { + (currentTime - theContext.m_lastDetailedReportSendTime >= CENTISECONDS_BETWEEN_DETAILED_REPORT_SENDS)) + { theContext.m_lastDetailedReportSendTime = currentTime; sendDetailedReportToLander(theContext); } - if (theContext.m_sendDetailedReport) { + if (theContext.m_sendDetailedReport) + { theContext.m_sendDetailedReport = false; - sendDetailedReportToLander(theContext); + sendDetailedReportToLander(theContext, true); } return getState(); } - RoverState RoverStateKeepAlive::transitionTo(RoverContext& theContext) + RoverState RoverStateKeepAlive::transitionTo(RoverContext &theContext) { // Nothing to do on this transition, which should always be from ENTERING_KEEP_ALIVE. @@ -129,11 +142,11 @@ namespace iris return getState(); } - RoverState RoverStateKeepAlive::doGndCmdEnterKeepAliveMode(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateKeepAlive::doGndCmdEnterKeepAliveMode(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { // We're already in keep alive mode, but we can still re-transition into keep alive // once we receive this command. @@ -141,11 +154,11 @@ namespace iris return RoverState::ENTERING_KEEP_ALIVE; } - RoverState RoverStateKeepAlive::doGndCmdEnterServiceMode(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateKeepAlive::doGndCmdEnterServiceMode(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { /* Can transition directly to service mode from keepalive */ response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; diff --git a/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateManager.cpp b/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateManager.cpp index 9b4a05193..5d753b62b 100644 --- a/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateManager.cpp +++ b/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateManager.cpp @@ -11,7 +11,7 @@ #pragma vector = WDT_VECTOR __interrupt void WDT_ISR(void) #elif defined(__GNUC__) -void __attribute__ ((interrupt(WDT_VECTOR))) WDT_ISR (void) +void __attribute__((interrupt(WDT_VECTOR))) WDT_ISR(void) #else #error Compiler not supported! #endif @@ -33,7 +33,7 @@ namespace iris #pragma PERSISTENT static bool persistentDeployed = false; - RoverStateManager::RoverStateManager(const char* resetReasonString) + RoverStateManager::RoverStateManager(const char *resetReasonString) : m_stateEnteringKeepAlive(), m_stateEnteringMission(), m_stateEnteringService(), @@ -74,6 +74,9 @@ namespace iris m_context.m_details.m_hParams.m_heatingControlEnabled = DEFAULT_HEATING_CONTROL_ENABLED; m_context.m_details.m_hParams.m_heaterDutyCyclePeriod = DEFAULT_HEATER_DUTY_CYCLE_PERIOD; m_context.m_details.m_hParams.m_heaterDutyCycle = DEFAULT_HEATER_DUTY_CYCLE; + m_context.m_details.m_hParams.m_thresholdsChanged = true; + m_context.m_details.m_hParams.m_forceState = HEATER_FORCE_NOTHING; + m_context.m_details.m_hParams.m_inputSource = HEATER_CONTROL_INPUT_BATT_RT; m_context.m_details.m_stateAsUint = static_cast(RoverState::ENTERING_KEEP_ALIVE); m_context.m_details.m_inputPinAndStateBits = 0; m_context.m_details.m_outputPinBits = 0; @@ -91,7 +94,8 @@ namespace iris void RoverStateManager::spinForever() { - while (true) { + while (true) + { // Sets watchdog timer to be based on ACLK, and in our clock configuration the source of ACLK is VLOCLK // (with no divisions, so f_ACLK == f_VLOCLK) and f_VLOCLK == 9.4 KHz. Also clears the watchdog timer count // and configures the watchdog timer period (i.e. how long the WDT timer will tick before resetting the @@ -115,30 +119,37 @@ namespace iris // source of the WDT, our option jumps from ~3.5 seconds to ~55 seconds. However, if we use SMCLK as the // source of the WDT, since f_SMCLK = 8 MHz we can use the 2^27 divider option to get a WDT interval of // just over 16.7 seconds. The 2^27 divider is selected when WDTIS is 0b001. - //OLD: WDTCTL = WDTPW + WDTCNTCL + WDTSSEL__ACLK + WDTIS2; + // OLD: WDTCTL = WDTPW + WDTCNTCL + WDTSSEL__ACLK + WDTIS2; WDTCTL = WDTPW + WDTCNTCL + WDTSSEL__SMCLK + WDTIS0; Event__Type event = EVENT__TYPE__UNUSED; EventQueue__Status eqStatus = EventQueue__get(&event); - //bool gotEvent = false; + // bool gotEvent = false; - if (EQ__STATUS__SUCCESS == eqStatus) { + if (EQ__STATUS__SUCCESS == eqStatus) + { // We got an event. Have the current state handle it (performing any necessary state transitions as // requested by the state(s)) handleEvent(event); - //gotEvent = true; - } else if (EQ__STATUS__ERROR_EMPTY == eqStatus) { - if (m_currentState->canEnterLowPowerMode(m_context)) { + // gotEvent = true; + } + else if (EQ__STATUS__ERROR_EMPTY == eqStatus) + { + if (m_currentState->canEnterLowPowerMode(m_context)) + { //!< @todo Enter LPM here. Need to figure out how to handle LPM and WDT together. __enable_interrupt(); // Make sure we haven't somehow left interrupts off ENTER_DEFAULT_LPM; } - } else { + } + else + { // Any status other than success or empty is an unexpected failure. DEBUG_LOG_CHECK_STATUS(EQ__STATUS__SUCCESS, eqStatus, "Failed to get event from queue due to error"); } - if (m_context.m_i2cActive) { + if (m_context.m_i2cActive) + { I2C_Sensors__spinOnce(); } @@ -146,55 +157,57 @@ namespace iris m_context.m_details.m_stateAsUint = static_cast(currentState); RoverState desiredNextState = m_currentState->spinOnce(m_context); - if (currentState != desiredNextState) { + if (currentState != desiredNextState) + { transitionUntilSettled(desiredNextState); } } } - RoverStateBase* RoverStateManager::getStateObjectForStateEnum(RoverState stateEnumValue) + RoverStateBase *RoverStateManager::getStateObjectForStateEnum(RoverState stateEnumValue) { - switch (stateEnumValue) { - case RoverState::INIT: - return &m_stateInit; + switch (stateEnumValue) + { + case RoverState::INIT: + return &m_stateInit; - case RoverState::ENTERING_KEEP_ALIVE: - return &m_stateEnteringKeepAlive; + case RoverState::ENTERING_KEEP_ALIVE: + return &m_stateEnteringKeepAlive; - case RoverState::KEEP_ALIVE: - return &m_stateKeepAlive; + case RoverState::KEEP_ALIVE: + return &m_stateKeepAlive; - case RoverState::ENTERING_SERVICE: - return &m_stateEnteringService; + case RoverState::ENTERING_SERVICE: + return &m_stateEnteringService; - case RoverState::SERVICE: - return &m_stateService; + case RoverState::SERVICE: + return &m_stateService; - case RoverState::ENTERING_MISSION: - return &m_stateEnteringMission; + case RoverState::ENTERING_MISSION: + return &m_stateEnteringMission; - case RoverState::MISSION: - return &m_stateMission; + case RoverState::MISSION: + return &m_stateMission; - default: - DebugComms__tryPrintfToLanderNonblocking("Reached default state in getStateObjectForStateEnum\n"); - DebugComms__flush(); - return &m_stateInit; + default: + DebugComms__tryPrintfToLanderNonblocking("Reached default state in getStateObjectForStateEnum\n"); + DebugComms__flush(); + return &m_stateInit; } } void RoverStateManager::transitionUntilSettled(RoverState desiredState) { - while (m_currentState->getState() != desiredState) { + while (m_currentState->getState() != desiredState) + { const char *originalStateStr = stateToString(m_currentState->getState()); - const char *desiredStateStr = stateToString(desiredState); + const char *desiredStateStr = stateToString(desiredState); DebugComms__tryPrintfToLanderNonblocking("Transitioning from %s to %s\n", originalStateStr, desiredStateStr); m_currentState = getStateObjectForStateEnum(desiredState); m_context.m_details.m_stateAsUint = static_cast(m_currentState->getState()); desiredState = m_currentState->transitionTo(m_context); } - } void RoverStateManager::handleEvent(Event__Type event) @@ -202,47 +215,49 @@ namespace iris RoverState currentState = m_currentState->getState(); RoverState desiredNextState = currentState; - switch (event) { - case EVENT__TYPE__UNUSED: - DebugComms__tryPrintfToLanderNonblocking("Trying to handle an UNUSED event type, which indicates programmer error\n"); - DebugComms__flush(); - return; - - case EVENT__TYPE__LANDER_DATA: - desiredNextState = m_currentState->handleLanderData(m_context); - break; - - case EVENT__TYPE__HERCULES_DATA: - desiredNextState = m_currentState->handleHerculesData(m_context); - break; - - case EVENT__TYPE__TIMER_TICK: - desiredNextState = m_currentState->handleTimerTick(m_context); - break; - - case EVENT__TYPE__HIGH_TEMP: - desiredNextState = m_currentState->handleHighTemp(m_context); - break; - - case EVENT__TYPE__POWER_ISSUE: - desiredNextState = m_currentState->handlePowerIssue(m_context); - break; - - case EVENT__TYPE__WD_INT_RISING_EDGE: - desiredNextState = m_currentState->handleWdIntRisingEdge(m_context); - break; - - case EVENT__TYPE__WD_INT_FALLING_EDGE: - desiredNextState = m_currentState->handleWdIntFallingEdge(m_context); - break; - - default: - DebugComms__tryPrintfToLanderNonblocking("In default case trying to handle event, which indicates programmer error\n"); - DebugComms__flush(); - break; + switch (event) + { + case EVENT__TYPE__UNUSED: + DebugComms__tryPrintfToLanderNonblocking("Trying to handle an UNUSED event type, which indicates programmer error\n"); + DebugComms__flush(); + return; + + case EVENT__TYPE__LANDER_DATA: + desiredNextState = m_currentState->handleLanderData(m_context); + break; + + case EVENT__TYPE__HERCULES_DATA: + desiredNextState = m_currentState->handleHerculesData(m_context); + break; + + case EVENT__TYPE__TIMER_TICK: + desiredNextState = m_currentState->handleTimerTick(m_context); + break; + + case EVENT__TYPE__HIGH_TEMP: + desiredNextState = m_currentState->handleHighTemp(m_context); + break; + + case EVENT__TYPE__POWER_ISSUE: + desiredNextState = m_currentState->handlePowerIssue(m_context); + break; + + case EVENT__TYPE__WD_INT_RISING_EDGE: + desiredNextState = m_currentState->handleWdIntRisingEdge(m_context); + break; + + case EVENT__TYPE__WD_INT_FALLING_EDGE: + desiredNextState = m_currentState->handleWdIntFallingEdge(m_context); + break; + + default: + DebugComms__tryPrintfToLanderNonblocking("In default case trying to handle event, which indicates programmer error\n"); + DebugComms__flush(); + break; } - if (currentState != desiredNextState) { + if (currentState != desiredNextState) + { transitionUntilSettled(desiredNextState); } } diff --git a/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateMission.cpp b/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateMission.cpp index 2427a1d7a..47a424ccd 100644 --- a/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateMission.cpp +++ b/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateMission.cpp @@ -14,13 +14,13 @@ namespace iris { RoverStateMission::RoverStateMission() - : RoverStateBase(RoverState::MISSION), - m_currentSubState(SubState::MISSION_NORMAL), - m_currentDeployState(DeployState::NOT_DEPLOYED) + : RoverStateBase(RoverState::MISSION), + m_currentSubState(SubState::MISSION_NORMAL), + m_currentDeployState(DeployState::NOT_DEPLOYED) { } - bool RoverStateMission::canEnterLowPowerMode(RoverContext& theContext) + bool RoverStateMission::canEnterLowPowerMode(RoverContext &theContext) { // The only thing that is done in this state that requires us to stay out of LPM is processing an I2C // transaction. Therefore in this state allowing entering LPM is conditional on whether or not we're actively @@ -28,10 +28,11 @@ namespace iris return !theContext.m_i2cActive; } - RoverState RoverStateMission::handleTimerTick(RoverContext& theContext) + RoverState RoverStateMission::handleTimerTick(RoverContext &theContext) { // Trigger a new ADC sample if the previous one is done - if (isAdcSampleDone()) { + if (isAdcSampleDone()) + { adcCheckVoltageLevels(&(theContext.m_adcValues)); } @@ -43,8 +44,9 @@ namespace iris UART__Status uStatus = UART__checkRxRbErrors(theContext.m_uart0State, &count, &changed); DEBUG_LOG_CHECK_STATUS(UART__STATUS__SUCCESS, uStatus, "Failed to get Hercules UART Rx Rb Error count"); - if (changed) { - DebugComms__tryPrintfToLanderNonblocking("New Hercules UART Rx Rb failures, total count = %d\n", (int) count); + if (changed) + { + DebugComms__tryPrintfToLanderNonblocking("New Hercules UART Rx Rb failures, total count = %d\n", (int)count); } // Lander UART @@ -53,13 +55,14 @@ namespace iris uStatus = UART__checkRxRbErrors(theContext.m_uart1State, &count, &changed); DEBUG_LOG_CHECK_STATUS(UART__STATUS__SUCCESS, uStatus, "Failed to get Lander UART Rx Rb Error count"); - if (changed) { - DebugComms__tryPrintfToLanderNonblocking("New Lander UART Rx Rb failures, total count = %d\n", (int) count); + if (changed) + { + DebugComms__tryPrintfToLanderNonblocking("New Lander UART Rx Rb failures, total count = %d\n", (int)count); } // Enable Hercules UART if Hercules is ON: - if ((theContext.m_details.m_outputPinBits & OPSBI__HERCULES_ON) - && !(HerculesComms__isInitialized(theContext.m_hcState))) { + if ((theContext.m_details.m_outputPinBits & OPSBI__HERCULES_ON) && !(HerculesComms__isInitialized(theContext.m_hcState))) + { // We should hopefully never be here during Mission... DebugComms__tryPrintfToLanderNonblocking("Trying to establish UART between WD and Hercules\n"); enableHerculesComms(theContext); @@ -70,7 +73,7 @@ namespace iris * @todo Check if we've deployed or if we shouldn't be able to communicate with lander for any other * reason, and don't send this if that is the case. */ - static FullEarthHeartbeat hb = { 0 }; + static FullEarthHeartbeat hb = {0}; GroundMsgs__Status gcStatus = GroundMsgs__generateFullEarthHeartbeat(&(theContext.m_i2cReadings), &(theContext.m_adcValues), &(theContext.m_details.m_hParams), @@ -79,25 +82,26 @@ namespace iris DEBUG_ASSERT_EQUAL(GND_MSGS__STATUS__SUCCESS, gcStatus); - - LanderComms__Status lcStatus = txDownlinkData(theContext, - (uint8_t*) &hb, - sizeof(hb)); + (uint8_t *)&hb, + sizeof(hb)); DEBUG_ASSERT_EQUAL(LANDER_COMMS__STATUS__SUCCESS, lcStatus); - if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) { + if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) + { //!< @todo Handling? } - if (theContext.m_details.m_hParams.m_heatingControlEnabled) { - // calculate PWM duty cycle (if any) to apply to heater + if (theContext.m_details.m_hParams.m_heatingControlEnabled) + { + // Update the Heater State (PWM remains unchanged here): heaterControl(theContext); } - //theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__GAUGE_READING); + // theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__GAUGE_READING); - if (!theContext.m_i2cActive) { + if (!theContext.m_i2cActive) + { initiateNextI2cAction(theContext); } @@ -108,63 +112,74 @@ namespace iris &writeIOExpander, &(theContext.m_details)); - - - if (writeIOExpander) { - theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); + if (writeIOExpander) + { + theContext.m_queuedI2cActions |= 1 << ((uint16_t)I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); theContext.m_writeCustomIoExpanderValues = false; theContext.m_watchdogFlags |= WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; - if (!theContext.m_i2cActive) { + if (!theContext.m_i2cActive) + { initiateNextI2cAction(theContext); } } // Queue up a read of the IO Expander, and initiate it if no other I2C action is active - theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__READ_IO_EXPANDER); + theContext.m_queuedI2cActions |= 1 << ((uint16_t)I2C_SENSORS__ACTIONS__READ_IO_EXPANDER); - if (!theContext.m_i2cActive) { + if (!theContext.m_i2cActive) + { initiateNextI2cAction(theContext); } return getState(); } - RoverState RoverStateMission::handlePowerIssue(RoverContext& /*theContext*/) + RoverState RoverStateMission::handlePowerIssue(RoverContext & /*theContext*/) { //!< @todo Implement RoverStateMission::handlePowerIssue return getState(); } - RoverState RoverStateMission::spinOnce(RoverContext& theContext) + RoverState RoverStateMission::spinOnce(RoverContext &theContext) { - if (theContext.m_i2cActive) { + if (theContext.m_i2cActive) + { I2C_Sensors__Action action = {}; uint8_t readValue = 0; I2C_Sensors__Status i2cStatus = I2C_Sensors__getActionStatus(&action, &(theContext.m_i2cReadings), &readValue); - if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) { + if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) + { DEBUG_LOG_CHECK_STATUS(I2C_SENSORS__STATUS__SUCCESS_DONE, i2cStatus, "I2C action failed"); - if (I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action) { + if (I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action) + { theContext.m_watchdogFlags &= ~WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; } - if (I2C_SENSORS__ACTIONS__READ_IO_EXPANDER == action) { + if (I2C_SENSORS__ACTIONS__READ_IO_EXPANDER == action) + { bool chargeStat2 = (readValue & I2C_SENSORS__IOE_P1_BIT__CHARGE_STAT2 != 0); bool latchStat = (readValue & I2C_SENSORS__IOE_P1_BIT__LATCH_STAT != 0); - if (chargeStat2) { + if (chargeStat2) + { SET_IPASBI_IN_UINT(theContext.m_details.m_inputPinAndStateBits, IPASBI__CHARGE_STAT2); - } else { + } + else + { CLEAR_IPASBI_IN_UINT(theContext.m_details.m_inputPinAndStateBits, IPASBI__CHARGE_STAT2); } - if (latchStat) { + if (latchStat) + { SET_IPASBI_IN_UINT(theContext.m_details.m_inputPinAndStateBits, IPASBI__LATCH_STAT); - } else { + } + else + { CLEAR_IPASBI_IN_UINT(theContext.m_details.m_inputPinAndStateBits, IPASBI__LATCH_STAT); } } @@ -173,26 +188,26 @@ namespace iris theContext.m_i2cActive = false; initiateNextI2cAction(theContext); } - } - if (theContext.m_sendDetailedReport) { + if (theContext.m_sendDetailedReport) + { theContext.m_sendDetailedReport = false; - sendDetailedReportToLander(theContext); - + sendDetailedReportToLander(theContext, true); } return getState(); } - RoverState RoverStateMission::transitionTo(RoverContext& theContext) + RoverState RoverStateMission::transitionTo(RoverContext &theContext) { // Nothing to do on this transition, which should always be from ENTERING_MISSION. m_currentSubState = SubState::MISSION_NORMAL; *(theContext.m_persistentInMission) = true; - if (*(theContext.m_persistentDeployed)) { + if (*(theContext.m_persistentDeployed)) + { m_currentDeployState = DeployState::DEPLOYED; disableHeater(); } @@ -200,20 +215,23 @@ namespace iris return getState(); } - void RoverStateMission::heaterControl(RoverContext& theContext) { + void RoverStateMission::heaterControl(RoverContext &theContext) + { // Only use heater when connected to the lander - if (m_currentDeployState != DeployState::NOT_DEPLOYED) { + if (m_currentDeployState != DeployState::NOT_DEPLOYED) + { disableHeater(); - } else { + } + else + { RoverStateBase::heaterControl(theContext); } - } - RoverState RoverStateMission::performResetCommand(RoverContext& theContext, + RoverState RoverStateMission::performResetCommand(RoverContext &theContext, WdCmdMsgs__ResetSpecificId resetValue, - WdCmdMsgs__Response* response) + WdCmdMsgs__Response *response) { bool writeIOExpander = false; RoverStateBase::doConditionalResetSpecific(theContext, @@ -228,12 +246,14 @@ namespace iris m_currentDeployState != DeployState::NOT_DEPLOYED, writeIOExpander); - if (writeIOExpander) { - theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); + if (writeIOExpander) + { + theContext.m_queuedI2cActions |= 1 << ((uint16_t)I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); theContext.m_writeCustomIoExpanderValues = false; theContext.m_watchdogFlags |= WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; - if (!theContext.m_i2cActive) { + if (!theContext.m_i2cActive) + { initiateNextI2cAction(theContext); } } @@ -241,16 +261,16 @@ namespace iris return getState(); } - RoverState RoverStateMission::performWatchdogCommand(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateMission::performWatchdogCommand(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { // If we're in the SERVICE_ALIVE_HOLDING substate and we receive any command other than EnterService, then we // switch to the MISSION_NORMAL substate. - if (SubState::SERVICE_HOLDING == m_currentSubState - && msg.commandId != WD_CMD_MSGS__CMD_ID__ENTER_SERVICE_MODE) { + if (SubState::SERVICE_HOLDING == m_currentSubState && msg.commandId != WD_CMD_MSGS__CMD_ID__ENTER_SERVICE_MODE) + { m_currentSubState = SubState::MISSION_NORMAL; } @@ -262,51 +282,55 @@ namespace iris sendDeployNotificationResponse); } - RoverState RoverStateMission::doGndCmdDeploy(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateMission::doGndCmdDeploy(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { - switch (m_currentDeployState) { - case DeployState::NOT_DEPLOYED: - setDeploy(); - m_currentDeployState = DeployState::DEPLOYING; - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; - - deployNotificationResponse.magicNumber = WD_CMD_MSGS__RESPONSE_MAGIC_NUMBER; - deployNotificationResponse.commandId = msg.commandId; - deployNotificationResponse.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__DEPLOY; - sendDeployNotificationResponse = true; - *(theContext.m_persistentDeployed) = true; - - // Don't allow DebugComms to write to lander anymore - DebugComms__registerLanderComms(NULL); - break; - - case DeployState::DEPLOYING: - // fall through - case DeployState::DEPLOYED: - // fall through - default: - response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; - break; + switch (m_currentDeployState) + { + case DeployState::NOT_DEPLOYED: + setDeploy(); + m_currentDeployState = DeployState::DEPLOYING; + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; + + deployNotificationResponse.magicNumber = WD_CMD_MSGS__RESPONSE_MAGIC_NUMBER; + deployNotificationResponse.commandId = msg.commandId; + deployNotificationResponse.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__DEPLOY; + sendDeployNotificationResponse = true; + *(theContext.m_persistentDeployed) = true; + + // Don't allow DebugComms to write to lander anymore + DebugComms__registerLanderComms(NULL); + break; + + case DeployState::DEPLOYING: + // fall through + case DeployState::DEPLOYED: + // fall through + default: + response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__ERROR_BAD_COMMAND_SEQUENCE; + break; } return getState(); } - RoverState RoverStateMission::doGndCmdEnterServiceMode(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateMission::doGndCmdEnterServiceMode(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { // We only want to actually enter keep alive if we receive it twice in a row - if (SubState::SERVICE_HOLDING == m_currentSubState) { + if (SubState::SERVICE_HOLDING == m_currentSubState) + { response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; return RoverState::ENTERING_SERVICE; - } else { + } + else + { // Update the substate so that we know to actually transition to keep alive mode if we receive the command // again as the next command. m_currentSubState = SubState::SERVICE_HOLDING; diff --git a/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateService.cpp b/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateService.cpp index 49f072a2c..4c890a09b 100644 --- a/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateService.cpp +++ b/Apps/FlightSoftware/Watchdog/src/stateMachine/RoverStateService.cpp @@ -12,21 +12,22 @@ namespace iris { RoverStateService::RoverStateService() - : RoverStateEnteringService(RoverState::SERVICE) + : RoverStateEnteringService(RoverState::SERVICE) { } - bool RoverStateService::canEnterLowPowerMode(RoverContext& theContext) + bool RoverStateService::canEnterLowPowerMode(RoverContext &theContext) { // Receiving data from lander or hercules and timer ticks will both wake us up out of LPM, so we can enter LPM // while in this state as long as there are no active I2C transactions occurring return !(theContext.m_i2cActive); } - RoverState RoverStateService::handleTimerTick(RoverContext& theContext) + RoverState RoverStateService::handleTimerTick(RoverContext &theContext) { // Trigger a new ADC sample if the previous one is done - if (isAdcSampleDone()) { + if (isAdcSampleDone()) + { adcCheckVoltageLevels(&(theContext.m_adcValues)); } @@ -38,22 +39,27 @@ namespace iris UART__Status uStatus = UART__checkRxRbErrors(theContext.m_uart1State, &count, &changed); DEBUG_LOG_CHECK_STATUS(UART__STATUS__SUCCESS, uStatus, "Failed to get Lander UART Rx Rb Error count"); - if (changed) { + if (changed) + { DebugComms__tryPrintfToLanderNonblocking("New Lander UART Rx Rb failures, total count = %u\n", count); } // Hercules UART - if (HerculesComms__isInitialized(theContext.m_hcState)) { + if (HerculesComms__isInitialized(theContext.m_hcState)) + { // Hercules Comms initialized size_t count = 0; BOOL changed = FALSE; UART__Status uStatus = UART__checkRxRbErrors(theContext.m_uart0State, &count, &changed); DEBUG_LOG_CHECK_STATUS(UART__STATUS__SUCCESS, uStatus, "Failed to get Hercules UART Rx Rb Error count"); - if (changed) { - DebugComms__tryPrintfToLanderNonblocking("New Hercules UART Rx Rb failures, total count = %d\n", (int) count); + if (changed) + { + DebugComms__tryPrintfToLanderNonblocking("New Hercules UART Rx Rb failures, total count = %d\n", (int)count); } - } else if ((theContext.m_details.m_outputPinBits & OPSBI__HERCULES_ON)) { + } + else if ((theContext.m_details.m_outputPinBits & OPSBI__HERCULES_ON)) + { // Enable Hercules UART if Hercules is ON: // Hercules Power ON but Comms not initialized DebugComms__tryPrintfToLanderNonblocking("Trying to establish UART between WD and Hercules\n"); @@ -61,7 +67,7 @@ namespace iris } /* send heartbeat with collected data */ - static FullEarthHeartbeat hb = { 0 }; + static FullEarthHeartbeat hb = {0}; GroundMsgs__Status gcStatus = GroundMsgs__generateFullEarthHeartbeat(&(theContext.m_i2cReadings), &(theContext.m_adcValues), &(theContext.m_details.m_hParams), @@ -71,16 +77,18 @@ namespace iris assert(GND_MSGS__STATUS__SUCCESS == gcStatus); LanderComms__Status lcStatus = txDownlinkData(theContext, - (uint8_t*) &hb, - sizeof(hb)); + (uint8_t *)&hb, + sizeof(hb)); assert(LANDER_COMMS__STATUS__SUCCESS == lcStatus); - if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) { + if (LANDER_COMMS__STATUS__SUCCESS != lcStatus) + { //!< @todo Handling? } - if (theContext.m_details.m_hParams.m_heatingControlEnabled) { - // calculate PWM duty cycle (if any) to apply to heater + if (theContext.m_details.m_hParams.m_heatingControlEnabled) + { + // Update the Heater State (PWM remains unchanged here): heaterControl(theContext); } @@ -91,61 +99,74 @@ namespace iris &writeIOExpander, &(theContext.m_details)); - if (writeIOExpander) { - theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); + if (writeIOExpander) + { + theContext.m_queuedI2cActions |= 1 << ((uint16_t)I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER); theContext.m_writeCustomIoExpanderValues = false; theContext.m_watchdogFlags |= WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; - if (!theContext.m_i2cActive) { + if (!theContext.m_i2cActive) + { initiateNextI2cAction(theContext); } } // Queue up a read of the IO Expander, and initiate it if no other I2C action is active - theContext.m_queuedI2cActions |= 1 << ((uint16_t) I2C_SENSORS__ACTIONS__READ_IO_EXPANDER); + theContext.m_queuedI2cActions |= 1 << ((uint16_t)I2C_SENSORS__ACTIONS__READ_IO_EXPANDER); - if (!theContext.m_i2cActive) { + if (!theContext.m_i2cActive) + { initiateNextI2cAction(theContext); } return getState(); } - RoverState RoverStateService::handlePowerIssue(RoverContext& /*theContext*/) + RoverState RoverStateService::handlePowerIssue(RoverContext & /*theContext*/) { //!< @todo Implement RoverStateService::handlePowerIssue return getState(); } - RoverState RoverStateService::spinOnce(RoverContext& theContext) + RoverState RoverStateService::spinOnce(RoverContext &theContext) { - if (theContext.m_i2cActive) { + if (theContext.m_i2cActive) + { I2C_Sensors__Action action = {}; uint8_t readValue = 0; I2C_Sensors__Status i2cStatus = I2C_Sensors__getActionStatus(&action, &(theContext.m_i2cReadings), &readValue); - if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) { + if (I2C_SENSORS__STATUS__INCOMPLETE != i2cStatus) + { DEBUG_LOG_CHECK_STATUS(I2C_SENSORS__STATUS__SUCCESS_DONE, i2cStatus, "I2C action failed"); - if (I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action) { + if (I2C_SENSORS__ACTIONS__WRITE_IO_EXPANDER == action) + { theContext.m_watchdogFlags &= ~WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE; } - if (I2C_SENSORS__ACTIONS__READ_IO_EXPANDER == action) { + if (I2C_SENSORS__ACTIONS__READ_IO_EXPANDER == action) + { bool chargeStat2 = (readValue & I2C_SENSORS__IOE_P1_BIT__CHARGE_STAT2 != 0); bool latchStat = (readValue & I2C_SENSORS__IOE_P1_BIT__LATCH_STAT != 0); - if (chargeStat2) { + if (chargeStat2) + { SET_IPASBI_IN_UINT(theContext.m_details.m_inputPinAndStateBits, IPASBI__CHARGE_STAT2); - } else { + } + else + { CLEAR_IPASBI_IN_UINT(theContext.m_details.m_inputPinAndStateBits, IPASBI__CHARGE_STAT2); } - if (latchStat) { + if (latchStat) + { SET_IPASBI_IN_UINT(theContext.m_details.m_inputPinAndStateBits, IPASBI__LATCH_STAT); - } else { + } + else + { CLEAR_IPASBI_IN_UINT(theContext.m_details.m_inputPinAndStateBits, IPASBI__LATCH_STAT); } } @@ -156,31 +177,32 @@ namespace iris } } - if (theContext.m_sendDetailedReport) { + if (theContext.m_sendDetailedReport) + { theContext.m_sendDetailedReport = false; - sendDetailedReportToLander(theContext); + sendDetailedReportToLander(theContext, true); } return getState(); } - RoverState RoverStateService::transitionTo(RoverContext& theContext) + RoverState RoverStateService::transitionTo(RoverContext &theContext) { // Nothing to do on this transition, which should always be from ENTERING_SERVICE. m_currentSubState = SubState::SERVICE_NORMAL; return getState(); } - RoverState RoverStateService::performWatchdogCommand(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateService::performWatchdogCommand(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { // If we're in the KEEP_ALIVE_HOLDING substate and we receive any command other than EnterKeepAlive, then we // switch to the SERVICE_NORMAL substate. - if (SubState::KEEP_ALIVE_HOLDING == m_currentSubState - && msg.commandId != WD_CMD_MSGS__CMD_ID__ENTER_KEEPALIVE_MODE) { + if (SubState::KEEP_ALIVE_HOLDING == m_currentSubState && msg.commandId != WD_CMD_MSGS__CMD_ID__ENTER_KEEPALIVE_MODE) + { m_currentSubState = SubState::SERVICE_NORMAL; } @@ -192,28 +214,31 @@ namespace iris sendDeployNotificationResponse); } - RoverState RoverStateService::doGndCmdPrepForDeploy(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateService::doGndCmdPrepForDeploy(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { /* Can transition directly to mission mode from service */ response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; return RoverState::ENTERING_MISSION; } - RoverState RoverStateService::doGndCmdEnterKeepAliveMode(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateService::doGndCmdEnterKeepAliveMode(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { // We only want to actually enter keep alive if we receive it twice in a row - if (SubState::KEEP_ALIVE_HOLDING == m_currentSubState) { + if (SubState::KEEP_ALIVE_HOLDING == m_currentSubState) + { response.statusCode = WD_CMD_MSGS__RESPONSE_STATUS__SUCCESS; return RoverState::ENTERING_KEEP_ALIVE; - } else { + } + else + { // Update the substate so that we know to actually transition to keep alive mode if we receive the command // againas the next command. m_currentSubState = SubState::KEEP_ALIVE_HOLDING; @@ -229,11 +254,11 @@ namespace iris } } - RoverState RoverStateService::doGndCmdEnterServiceMode(RoverContext& theContext, - const WdCmdMsgs__Message& msg, - WdCmdMsgs__Response& response, - WdCmdMsgs__Response& deployNotificationResponse, - bool& sendDeployNotificationResponse) + RoverState RoverStateService::doGndCmdEnterServiceMode(RoverContext &theContext, + const WdCmdMsgs__Message &msg, + WdCmdMsgs__Response &response, + WdCmdMsgs__Response &deployNotificationResponse, + bool &sendDeployNotificationResponse) { // Do the default behavior of complaining about being in the wrong state. return RoverStateBase::doGndCmdEnterServiceMode(theContext, diff --git a/Apps/FlightSoftware/Watchdog/src/watchdog.c b/Apps/FlightSoftware/Watchdog/src/watchdog.c index bd5e66e2c..fb4a0106a 100644 --- a/Apps/FlightSoftware/Watchdog/src/watchdog.c +++ b/Apps/FlightSoftware/Watchdog/src/watchdog.c @@ -22,8 +22,8 @@ static volatile uint16_t shouldBeUnusedWatchdogFlags = 0; static volatile uint16_t shouldBeUnusedTimeCount = 0; -//static volatile uint16_t* watchdogFlagsPtr = &shouldBeUnusedWatchdogFlags; -static volatile uint16_t* timeCountCentisecondsPtr = &shouldBeUnusedTimeCount; +// static volatile uint16_t* watchdogFlagsPtr = &shouldBeUnusedWatchdogFlags; +static volatile uint16_t *timeCountCentisecondsPtr = &shouldBeUnusedTimeCount; static volatile BOOL lookingForWdIntFallingEdge = TRUE; static volatile uint16_t wdIntLastEdgeTime = 0; @@ -32,15 +32,15 @@ static volatile uint16_t wdIntTimeBetweenLastEdges = 0; /** * Set up the ISRs for the watchdog */ -int watchdog_init(volatile uint16_t* watchdogFlags, - volatile uint16_t* timeCountCentiseconds, - const HeaterParams* hParams) +int watchdog_init(volatile uint16_t *watchdogFlags, + volatile uint16_t *timeCountCentiseconds, + const HeaterParams *hParams) { DEBUG_LOG_NULL_CHECK_RETURN(watchdogFlags, "Parameter is NULL", -1); DEBUG_LOG_NULL_CHECK_RETURN(timeCountCentiseconds, "Parameter is NULL", -1); DEBUG_LOG_NULL_CHECK_RETURN(hParams, "Parameter is NULL", -1); -// watchdogFlagsPtr = watchdogFlags; + // watchdogFlagsPtr = watchdogFlags; timeCountCentisecondsPtr = timeCountCentiseconds; /* ===================================================== @@ -49,7 +49,7 @@ int watchdog_init(volatile uint16_t* watchdogFlags, // Use ACLK (which has a frequency of about 9.4 kHz (typ.)) as Timer_A clock source. This also ensures // that the timer is stopped, as all bits in TA0CTL other than TASSEL will be cleared. This means the - // MC bits will be set to zero, which means that the timer is stopped. + // MC bits will be set to zero, which means that the timer is stopped. TA0CTL = TASSEL_1; // The input divider for the input clock is determined by the ID bits in TAxCTL and the TAIDEX bits @@ -57,9 +57,9 @@ int watchdog_init(volatile uint16_t* watchdogFlags, // the clock divisor determined by the ID bits is d_ID, and the clock divisor determined by the TAIDEX // bits is d_TAIDEX, then their relationship is: // - // f_timer = (f_clk / d_ID ) / d_TAIDEX + // f_timer = (f_clk / d_ID ) / d_TAIDEX // f_timer = f_clk / (d_ID * d_TAIDEX) - // + // // Here, we use f_clk = 9.4 kHz, d_ID = 1, and d_TAIDEX = 1, so f_timer = 9.4 kHz // Sets ID to 00b, making it divide by 1 (i.e. does not divide). @@ -69,7 +69,7 @@ int watchdog_init(volatile uint16_t* watchdogFlags, TA0EX0 = TAIDEX_0; // Per the note in section 25.2.1.1 (pg 645) of the user guide, TACLR should be set after modifying - // the ID or TAIDEX bits. Doing so resets the clock divider logic, and the new settings are + // the ID or TAIDEX bits. Doing so resets the clock divider logic, and the new settings are // used once the TACLR bit is cleared. We do not need to manually clear this bit after setting it, // as it is reset automatically. TA0CTL |= TACLR; @@ -89,18 +89,18 @@ int watchdog_init(volatile uint16_t* watchdogFlags, // that we will get the TAIFG interrupt once about every 7 seconds (2^16 = 65536, and // 65536 / 9400 = ~6.97 seconds) TA0CTL |= TAIE; - + // Finished setting up Timer_A, so start the timer in "Continuous" mode (i.e. timer will count up to 0xFFFF, // then overflow to zero) - TA0CTL |= MC_2; + TA0CTL |= MC_2; - /* ===================================================== + /* ===================================================== Timer_B setup (used to generate PWM for heater control) ===================================================== */ // Use SMCLK (which has a frequency of 8 MHz) as Timer_B clock source. This also ensures // that the timer is stopped, as all bits in TB0CTL other than TBSSEL will be cleared. This means the - // MC bits will be set to zero, which means that the timer is stopped. + // MC bits will be set to zero, which means that the timer is stopped. TB0CTL = TBSSEL__SMCLK; // The input divier for the input clock is determined by the ID bits in TBxCTL and the TBIDEX bits @@ -108,9 +108,9 @@ int watchdog_init(volatile uint16_t* watchdogFlags, // the clock divisor determined by the ID bits is d_ID, and the clock divisor determined by the TBIDEX // bits is d_TBIDEX, then their relationship is: // - // f_timer = (f_clk / d_ID ) / d_TBIDEX + // f_timer = (f_clk / d_ID ) / d_TBIDEX // f_timer = f_clk / (d_ID * d_TBIDEX) - // + // // Here, we use f_clk = 8 MHz, d_ID = 1, and d_TBIDEX = 1, so f_timer = 8 MHz // ID bits in TB0CTL will have been set to 00b in the previous assignment, making it divide by 1 (i.e. @@ -120,9 +120,9 @@ int watchdog_init(volatile uint16_t* watchdogFlags, TB0EX0 = TAIDEX_0; // Per the note in section 25.2.1.1 (pg 645) of the user guide, TBCLR should be set after modifying - // the ID or TBIDEX bits. Doing so resets the clock divider logic, and the new settings are + // the ID or TBIDEX bits. Doing so resets the clock divider logic, and the new settings are // used once the TBCLR bit is cleared. We do not need to manually clear this bit after setting it, - // as it is reset automatically. More specifically, the state of the output changes when the + // as it is reset automatically. More specifically, the state of the output changes when the TB0CTL |= TBCLR; // Set the maximum count value of Timer_B (when it is set to "Up" mode) to 10000. @@ -133,11 +133,11 @@ int watchdog_init(volatile uint16_t* watchdogFlags, // Set the output mode of capture/compare block 2 to "Reset/Set". This means that the output is // reset (i.e. made low) when Timer_B counts to the value in TB0CCR2, and the output is set (i.e. - // made high) when Timer_B counts to TB0CL0 (which is set from the value in TB0CCR0). + // made high) when Timer_B counts to TB0CL0 (which is set from the value in TB0CCR0). TB0CCTL2 = OUTMOD_7; // Set the initial duty cycle of the PWM. Specifically, this is the counter value at which the output - // will reset, or go low. When this has a value of zero, it means that the heater is effectively + // will reset, or go low. When this has a value of zero, it means that the heater is effectively // disabled. TB0CCR2 = hParams->m_heaterDutyCycle; @@ -157,11 +157,11 @@ int watchdog_init(volatile uint16_t* watchdogFlags, * * Function called every ~5s */ -int watchdog_monitor(HerculesComms__State* hState, - volatile uint16_t* watchdogFlags, - uint8_t* watchdogOpts, - BOOL* writeIOExpander, - WatchdogStateDetails* details) +int watchdog_monitor(HerculesComms__State *hState, + volatile uint16_t *watchdogFlags, + uint8_t *watchdogOpts, + BOOL *writeIOExpander, + WatchdogStateDetails *details) { // NOTE: hState can be NULL if the Hercules comm link isn't up DEBUG_LOG_NULL_CHECK_RETURN(watchdogFlags, "Parameter is NULL", -1); @@ -173,15 +173,19 @@ int watchdog_monitor(HerculesComms__State* hState, __disable_interrupt(); /* check that kicks have been received */ - if (*watchdogFlags & WDFLAG_RADIO_KICK) { + if (*watchdogFlags & WDFLAG_RADIO_KICK) + { /* radio kick received, all ok! */ *watchdogFlags ^= WDFLAG_RADIO_KICK; - } else { + } + else + { /* MISSING radio kick! don't bother resetting, though */ } /* unreset wifi chip */ - if (*watchdogFlags & WDFLAG_UNRESET_RADIO2) { + if (*watchdogFlags & WDFLAG_UNRESET_RADIO2) + { releaseRadioReset(); *watchdogFlags ^= WDFLAG_UNRESET_RADIO2; *writeIOExpander = TRUE; @@ -189,13 +193,15 @@ int watchdog_monitor(HerculesComms__State* hState, } /* unreset wifi chip */ - if ((*watchdogFlags & WDFLAG_UNRESET_RADIO1) && !(*watchdogFlags & WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE)) { + if ((*watchdogFlags & WDFLAG_UNRESET_RADIO1) && !(*watchdogFlags & WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE)) + { *watchdogFlags |= WDFLAG_UNRESET_RADIO2; *watchdogFlags ^= WDFLAG_UNRESET_RADIO1; } /* unreset hercules */ - if ((*watchdogFlags & WDFLAG_UNRESET_HERCULES) && !(*watchdogFlags & WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE)) { + if ((*watchdogFlags & WDFLAG_UNRESET_HERCULES) && !(*watchdogFlags & WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE)) + { releaseHerculesReset(); *watchdogFlags ^= WDFLAG_UNRESET_HERCULES; *writeIOExpander = TRUE; @@ -203,35 +209,40 @@ int watchdog_monitor(HerculesComms__State* hState, } /* unreset motor 1 */ - if ((*watchdogFlags & WDFLAG_UNRESET_MOTOR1) && !(*watchdogFlags & WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE)) { + if ((*watchdogFlags & WDFLAG_UNRESET_MOTOR1) && !(*watchdogFlags & WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE)) + { releaseMotor1Reset(); *watchdogFlags ^= WDFLAG_UNRESET_MOTOR1; *writeIOExpander = TRUE; } /* unreset motor 2 */ - if ((*watchdogFlags & WDFLAG_UNRESET_MOTOR2) && !(*watchdogFlags & WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE)) { + if ((*watchdogFlags & WDFLAG_UNRESET_MOTOR2) && !(*watchdogFlags & WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE)) + { releaseMotor2Reset(); *watchdogFlags ^= WDFLAG_UNRESET_MOTOR2; *writeIOExpander = TRUE; } /* unreset motor 3 */ - if ((*watchdogFlags & WDFLAG_UNRESET_MOTOR3) && !(*watchdogFlags & WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE)) { + if ((*watchdogFlags & WDFLAG_UNRESET_MOTOR3) && !(*watchdogFlags & WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE)) + { releaseMotor3Reset(); *watchdogFlags ^= WDFLAG_UNRESET_MOTOR3; *writeIOExpander = TRUE; } /* unreset motor 4 */ - if ((*watchdogFlags & WDFLAG_UNRESET_MOTOR4) && !(*watchdogFlags & WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE)) { + if ((*watchdogFlags & WDFLAG_UNRESET_MOTOR4) && !(*watchdogFlags & WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE)) + { releaseMotor4Reset(); *watchdogFlags ^= WDFLAG_UNRESET_MOTOR4; *writeIOExpander = TRUE; } /* unreset FPGA */ - if ((*watchdogFlags & WDFLAG_UNRESET_FPGA) && !(*watchdogFlags & WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE)) { + if ((*watchdogFlags & WDFLAG_UNRESET_FPGA) && !(*watchdogFlags & WDFLAG_WAITING_FOR_IO_EXPANDER_WRITE)) + { releaseFPGAReset(); *watchdogFlags ^= WDFLAG_UNRESET_FPGA; *writeIOExpander = TRUE; @@ -239,30 +250,37 @@ int watchdog_monitor(HerculesComms__State* hState, } /* bring 3V3 on again */ - if (*watchdogFlags & WDFLAG_UNRESET_3V3) { + if (*watchdogFlags & WDFLAG_UNRESET_3V3) + { enable3V3PowerRail(); *watchdogFlags ^= WDFLAG_UNRESET_3V3; SET_RABI_IN_UINT(details->m_resetActionBits, RABI__3V3_EN_UNRESET); } /* turn VSA on again */ - if (*watchdogFlags & WDFLAG_POWER_ON_V_SYS_ALL) { + if (*watchdogFlags & WDFLAG_POWER_ON_V_SYS_ALL) + { enableVSysAllPowerRail(); *watchdogFlags ^= WDFLAG_POWER_ON_V_SYS_ALL; SET_RABI_IN_UINT(details->m_resetActionBits, RABI__V_SYS_ALL_ON__UNRESET); } /* check ADC values */ - if (*watchdogFlags & WDFLAG_ADC_READY) { + if (*watchdogFlags & WDFLAG_ADC_READY) + { /* ensure ADC values are in spec */ *watchdogFlags ^= WDFLAG_ADC_READY; } /* check if hercules has given a valid kick */ - if (*watchdogFlags & WDFLAG_HERCULES_KICK) { + if (*watchdogFlags & WDFLAG_HERCULES_KICK) + { *watchdogFlags ^= WDFLAG_HERCULES_KICK; - } else { - if (*watchdogOpts & WDOPT_MONITOR_HERCULES) { + } + else + { + if (*watchdogOpts & WDOPT_MONITOR_HERCULES) + { // reset the hercules setHerculesReset(); @@ -272,7 +290,8 @@ int watchdog_monitor(HerculesComms__State* hState, *watchdogFlags |= WDFLAG_UNRESET_HERCULES; // if the issue was due to a comms breakdown, reset the comms state - if (NULL != hState) { + if (NULL != hState) + { HerculesComms__Status hcStatus = HerculesComms__resetState(hState); //!< @todo Replace with returning watchdog error code once that is implemented. @@ -280,7 +299,9 @@ int watchdog_monitor(HerculesComms__State* hState, } *writeIOExpander = TRUE; - } else { + } + else + { // missed a kick, but don't reset the hercules. } } @@ -290,19 +311,18 @@ int watchdog_monitor(HerculesComms__State* hState, return 0; } - - void watchdog_build_hercules_telem(const I2C_Sensors__Readings *i2cReadings, - const AdcValues* adcValues, + const AdcValues *adcValues, BOOL hasDeployed, - uint8_t* telbuf, + uint8_t *telbuf, size_t telbufSize) { DEBUG_LOG_NULL_CHECK_RETURN(i2cReadings, "Parameter is NULL", /* nothing, b/c void return */); DEBUG_LOG_NULL_CHECK_RETURN(adcValues, "Parameter is NULL", /* nothing, b/c void return */); DEBUG_LOG_NULL_CHECK_RETURN(telbuf, "Parameter is NULL", /* nothing, b/c void return */); - if (telbufSize < 16) { + if (telbufSize < 16) + { DPRINTF_ERR("telbufSize is too small: required = %d, actual = %d\n", 16, telbufSize); return; } @@ -316,7 +336,7 @@ void watchdog_build_hercules_telem(const I2C_Sensors__Readings *i2cReadings, // [6,7] won't be able to read lander power in mission mode telbuf[6] = (uint8_t)(adcValues->vLanderSense); telbuf[7] = (uint8_t)(adcValues->vLanderSense >> 8); - telbuf[8] = (uint8_t)(adcValues->battTemp >> 4); + telbuf[8] = (uint8_t)(adcValues->battRT >> 4); telbuf[9] = hasDeployed ? 1 : 0; telbuf[10] = (uint8_t)(i2cReadings->raw_battery_charge[0]); telbuf[11] = (uint8_t)(i2cReadings->raw_battery_charge[1]); @@ -331,7 +351,6 @@ uint16_t watchdog_get_wd_int_flat_duration(void) return wdIntTimeBetweenLastEdges; } - /* * Pins that need an ISR: * @@ -356,42 +375,48 @@ uint16_t watchdog_get_wd_int_flat_duration(void) /* Port 1 handler */ #if 1 #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) -#pragma vector=PORT1_VECTOR -__interrupt void port1_isr_handler(void) { +#pragma vector = PORT1_VECTOR +__interrupt void port1_isr_handler(void) +{ #elif defined(__GNUC__) -void __attribute__ ((interrupt(PORT1_VECTOR))) port1_isr_handler (void) { +void __attribute__((interrupt(PORT1_VECTOR))) port1_isr_handler(void) +{ #else #error Compiler not supported! #endif uint16_t now = *timeCountCentisecondsPtr; - switch(__even_in_range(P1IV, P1IV__P1IFG7)) { - case P1IV__P1IFG3: // P1.3: WD_INT - if (lookingForWdIntFallingEdge) { - EventQueue__put(EVENT__TYPE__WD_INT_FALLING_EDGE); - lookingForWdIntFallingEdge = FALSE; - enableWdIntRisingEdgeInterrupt(); - } else { - EventQueue__put(EVENT__TYPE__WD_INT_RISING_EDGE); - lookingForWdIntFallingEdge = TRUE; - enableWdIntFallingEdgeInterrupt(); - } + switch (__even_in_range(P1IV, P1IV__P1IFG7)) + { + case P1IV__P1IFG3: // P1.3: WD_INT + if (lookingForWdIntFallingEdge) + { + EventQueue__put(EVENT__TYPE__WD_INT_FALLING_EDGE); + lookingForWdIntFallingEdge = FALSE; + enableWdIntRisingEdgeInterrupt(); + } + else + { + EventQueue__put(EVENT__TYPE__WD_INT_RISING_EDGE); + lookingForWdIntFallingEdge = TRUE; + enableWdIntFallingEdgeInterrupt(); + } - wdIntTimeBetweenLastEdges = now - wdIntLastEdgeTime; - wdIntLastEdgeTime = now; + wdIntTimeBetweenLastEdges = now - wdIntLastEdgeTime; + wdIntLastEdgeTime = now; - // exit LPM - __low_power_mode_off_on_exit(); - break; - default: // default: ignore - break; + // exit LPM + __low_power_mode_off_on_exit(); + break; + default: // default: ignore + break; } } #endif #if 0 /* Port 3 handler */ #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) -#pragma vector=PORT3_VECTOR +#pragma vector = PORT3_VECTOR __interrupt void port3_isr_handler(void) { #elif defined(__GNUC__) void __attribute__ ((interrupt(PORT3_VECTOR))) port3_isr_handler (void) { @@ -408,27 +433,29 @@ void __attribute__ ((interrupt(PORT3_VECTOR))) port3_isr_handler (void) { /* Timer 1 handler */ #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector = TIMER0_A1_VECTOR -__interrupt void Timer0_A1_ISR(void) { +__interrupt void Timer0_A1_ISR(void) +{ #elif defined(__GNUC__) -void __attribute__ ((interrupt(TIMER0_A1_VECTOR))) Timer0_A1_ISR (void) { +void __attribute__((interrupt(TIMER0_A1_VECTOR))) Timer0_A1_ISR(void) +{ #else #error Compiler not supported! #endif - switch (__even_in_range(TA0IV, TAIV__TAIFG)) { - case TAIV__TACCR1: - *timeCountCentisecondsPtr = *timeCountCentisecondsPtr + 1; - - // Offset the count value we're looking for by by the number of timer ticks in one centisecond - TA0CCR1 += 94; - break; - - case TAIV__TAIFG: /* timer tick overflowed */ - EventQueue__put(EVENT__TYPE__TIMER_TICK); - __low_power_mode_off_on_exit(); - break; - - default: - break; + switch (__even_in_range(TA0IV, TAIV__TAIFG)) + { + case TAIV__TACCR1: + *timeCountCentisecondsPtr = *timeCountCentisecondsPtr + 1; + + // Offset the count value we're looking for by by the number of timer ticks in one centisecond + TA0CCR1 += 94; + break; + + case TAIV__TAIFG: /* timer tick overflowed */ + EventQueue__put(EVENT__TYPE__TIMER_TICK); + __low_power_mode_off_on_exit(); + break; + + default: + break; } } - diff --git a/Apps/FlightSoftware/fprime/CubeRover/WatchDogInterface/WatchDogInterfaceComponentAi.xml b/Apps/FlightSoftware/fprime/CubeRover/WatchDogInterface/WatchDogInterfaceComponentAi.xml index 24178f921..a60956ff1 100644 --- a/Apps/FlightSoftware/fprime/CubeRover/WatchDogInterface/WatchDogInterfaceComponentAi.xml +++ b/Apps/FlightSoftware/fprime/CubeRover/WatchDogInterface/WatchDogInterfaceComponentAi.xml @@ -118,8 +118,15 @@ - - + + + + + + + + + diff --git a/Apps/GroundSoftware/.vscode/settings.json b/Apps/GroundSoftware/.vscode/settings.json index 12bc323c2..0616f66b8 100644 --- a/Apps/GroundSoftware/.vscode/settings.json +++ b/Apps/GroundSoftware/.vscode/settings.json @@ -67,9 +67,12 @@ "d", "dataframe", "dataframes", + "DATASTANDARD", "datastandards", "datastream", "Dataview", + "DEBUGBGP", + "DEBUGRESET", "deser", "deserialization", "dgram", diff --git a/Apps/GroundSoftware/IrisBackendv3/codec/packet.py b/Apps/GroundSoftware/IrisBackendv3/codec/packet.py index 848bba0ff..e76fb4748 100644 --- a/Apps/GroundSoftware/IrisBackendv3/codec/packet.py +++ b/Apps/GroundSoftware/IrisBackendv3/codec/packet.py @@ -50,6 +50,7 @@ def parse_packet( RadioBgApiPacket, RadioUartBytePacket, RadioDirectMessagePacket, + WatchdogResetSpecificAckPacket, WatchdogHelloPacket, WatchdogRadioDebugPacket, WatchdogDebugImportantPacket, diff --git a/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/__init__.py b/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/__init__.py index 18d8343c8..4b87f9cdc 100644 --- a/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/__init__.py +++ b/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/__init__.py @@ -25,3 +25,4 @@ from .watchdog_hello import * from .watchdog_radio_debug import * from .watchdog_debug_important import * +from .watchdog_reset_specific_ack import * diff --git a/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/watchdog_detailed_status.py b/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/watchdog_detailed_status.py index 9a6ffbfd8..7d471ed6a 100644 --- a/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/watchdog_detailed_status.py +++ b/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/watchdog_detailed_status.py @@ -5,7 +5,7 @@ detailed replacement for Heartbeat. @author: Connor W. Colombo (CMU) -@last-updated: 05/01/2022 +@last-updated: 12/31/2022 """ from __future__ import annotations # Activate postponed annotations (for using classes as return type in their own methods) @@ -56,15 +56,44 @@ class CustomPayload(): # TODO: 5k table taken from old Avionics conversion sheet. not yet checked/verified. (check it) BATT_5K_THERMISTOR_LOOKUP_TABLE = { # for 5k thermistor: https://www.tdk-electronics.tdk.com/inf/50/db/ntc/NTC_Mini_sensors_S863.pdf 'degC': np.asarray([-15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155]), - 'adc': np.asarray([4242, 3970, 3670, 3352, 3023, 2695, 2378, 2077, 1801, 1552, 1330, 1137, 969, 825, 702, 598, 510, 435, 372, 319, 274, 237, 204, 177, 154, 134, 117, 103, 90, 79, 70, 62, 55, 49, 44]) + 'adc': np.asarray([3214, 3008, 2781, 2540, 2291, 2042, 1801, 1574, 1365, 1176, 1008, 861, 734, 625, 532, 453, 386, 329, 282, 242, 208, 179, 155, 134, 116, 102, 89, 78, 68, 60, 53, 47, 42, 37, 33]) } BATT_CHRG_10K_THERMISTOR_LOOKUP_TABLE = { # for 10k thermistor (NTC10k_B57863S0103F040) 'degC': np.asarray([-55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155]), 'RTH_R25': np.asarray([96.3, 67.01, 47.17, 33.65, 24.26, 17.7, 13.04, 9.707, 7.293, 5.533, 4.232, 3.265, 2.539, 1.99, 1.571, 1.249, 1.0000, 0.8057, 0.6531, 0.5327, 0.4369, 0.3603, 0.2986, 0.2488, 0.2083, 0.1752, 0.1481, 0.1258, 0.1072, 0.09177, 0.07885, 0.068, 0.05886, 0.05112, 0.04454, 0.03893, 0.03417, 0.03009, 0.02654, 0.02348, 0.02083, 0.01853, 0.01653]) } + V_LANDER_MAX = 1.10*28.0 # Maximum possible lander voltage (allowed) V_HEATER_NOM = 28.0 # NOMINAL Heater Voltage R_HEATER = 628.245 # Heater resistance (ohms) + # Correction factor for Vcc28 ADC conversion on FM1 in the cleanroom + # during RC6 at 28.0V input: + # upper 6bits = +-64ADC = +-0.567V + # At 28.0V, an ADC reading of 3158.6777 would be expected. Since only + # upper 6b are being sent, this needs to be rounded to nearest 64: 3136. + VCC28_ADC_FM1_CORRECTION_FACTOR = 3136 / 2944 + # Correction factor for VL ADC conversion on FM1 in the cleanroom + # during RC6 at 28.0V input: + # upper 7bits = +-32ADC = +-0.248V + # At 28.0V, an ADC reading of 3611.5347 would be expected. Since only + # upper 7b are being sent, this needs to be rounded to nearest 32: 3616. + VL_ADC_FM1_CORRECTION_FACTOR = 3616 / 3104 + + # Correction factor for VSA ADC conversion on FM1 in the cleanroom + # during RC6 at 28.0V input: + # upper 5bits = +-128ADC = +-0.992V + # At 28.0V, an ADC reading of 3611.5347 would be expected. Since only + # upper 5b are being sent, this needs to be rounded to nearest 128: 3584. + # yes, 2944 was observed here too (large jumps b/c so few bits) + VSA_ADC_FM1_CORRECTION_FACTOR = 3584 / 2944 + + # Correction factor for VBS ADC conversion on FM1 in the cleanroom + # during RC5 at 23.80V VBS: + # upper 9bits = +-8ADC = +-0.054V + # At 23.80V, an ADC reading of 3558.5824 would be expected. Since only + # upper 9b are being sent, this needs to be rounded to nearest 8: 3560. + VBS_ADC_FM1_CORRECTION_FACTOR = 3560 / 2928 + __slots__: List[str] = [ '_Io_ChargingStatus1', '_Io_ChargingStatus2', @@ -167,10 +196,33 @@ def fused_est_lander_voltage(self) -> float: # TODO: Update these weights from empirical measurements of their accuracies and uncertainties dLander = 0.25 # [Volts] (uncertainty in LanderVoltage reading) dVcc28 = 0.5 # [Volts] (uncertainty in Vcc28Voltage reading) + + VLander = self.Adc_LanderVoltage + Vcc28 = self.Adc_Vcc28Voltage + + # Guard against 0: + if max(abs(VLander), abs(Vcc28)) == 0: + return 0 + + # If a significant difference exists (i.e. one sensor is likely faulty)...: + if (abs(Vcc28 - VLander) / max(abs(VLander), abs(Vcc28))) > 0.5: + # If one of them is significantly greater (50%) than the max + # possible lander voltage (i.e. way to large -- failed high), + # take the other one: + if (VLander > 1.5 * self.V_LANDER_MAX) and (Vcc28 <= 1.5 * self.V_LANDER_MAX): + return Vcc28 + if (Vcc28 > 1.5 * self.V_LANDER_MAX) and (VLander <= 1.5 * self.V_LANDER_MAX): + return VLander + # otherwise, just use the larger of the two (since the lower + # one likely failed low): + return max(VLander, Vcc28) + + # Guard against poor uncertainty settings: if (dLander+dVcc28) == 0: return 0 - else: - return self.Adc_LanderVoltage * (1.0-dLander/(dLander+dVcc28)) + self.Adc_Vcc28Voltage * (1.0-dVcc28/(dLander+dVcc28)) + + # Both sensors have consistent values, so fuse the results: + return VLander * (1.0-dLander/(dLander+dVcc28)) + Vcc28 * (1.0-dVcc28/(dLander+dVcc28)) # Computed properties for Computed Telemetry Channels: @property @@ -405,7 +457,7 @@ def Watchdog_ResetEventsList(self) -> List[str]: @property def Adc_LanderVoltage(self) -> float: - return float(self.Adc_LanderVoltageRaw) / 4095.0 * 3.3 * (232.0+2000.0)/232.0 + return self.VL_ADC_FM1_CORRECTION_FACTOR * float(self.Adc_LanderVoltageRaw) / 4095.0 * 3.3 * (232.0+2000.0)/232.0 @property def Adc_BatteryChargingTempKelvin(self) -> float: @@ -428,11 +480,12 @@ def Adc_BatteryChargingTempUncertaintyKelvin(self) -> float: # ! TODO: (pull from BACK HAL code + supporting samsung notes) return 0.0 - def battery_adc_reading_to_kelvin(self, adc_reading) -> float: + @classmethod + def battery_adc_reading_to_kelvin(cls, adc_reading) -> float: return float(np.interp( float(adc_reading), - self.BATT_5K_THERMISTOR_LOOKUP_TABLE['adc'][::-1], - self.BATT_5K_THERMISTOR_LOOKUP_TABLE['degC'][::-1] + cls.BATT_5K_THERMISTOR_LOOKUP_TABLE['adc'][::-1], + cls.BATT_5K_THERMISTOR_LOOKUP_TABLE['degC'][::-1] )) + 273.15 @property @@ -447,7 +500,7 @@ def Adc_BatteryTempUncertaintyKelvin(self) -> float: @property def Adc_FullSystemVoltage(self) -> float: - return float(self.Adc_FullSystemVoltageRaw) / 4095.0 * 3.3 * (232.0+2000.0)/232.0 + return self.VSA_ADC_FM1_CORRECTION_FACTOR * float(self.Adc_FullSystemVoltageRaw) / 4095.0 * 3.3 * (232.0+2000.0)/232.0 @property def Adc_FullSystemCurrent(self) -> float: @@ -457,7 +510,7 @@ def Adc_FullSystemCurrent(self) -> float: @property def Adc_SwitchedBatteryVoltage(self) -> float: - return float(self.Adc_SwitchedBatteryVoltageRaw) / 4095.0 * 3.3 * (274.0+2000.0)/274.0 + return self.VBS_ADC_FM1_CORRECTION_FACTOR * float(self.Adc_SwitchedBatteryVoltageRaw) / 4095.0 * 3.3 * (274.0+2000.0)/274.0 @property def Adc_2V5Voltage(self) -> float: @@ -471,7 +524,7 @@ def Adc_2V8Voltage(self) -> float: @property def Adc_Vcc28Voltage(self) -> float: - return float(self.Adc_Vcc28VoltageRaw) / 4095.0 * 3.3 * (47.0+470.0)/47.0 + return self.VCC28_ADC_FM1_CORRECTION_FACTOR * float(self.Adc_Vcc28VoltageRaw) / 4095.0 * 3.3 * (47.0+470.0)/47.0 @property def Adc_Vcc24Voltage(self) -> float: @@ -499,6 +552,7 @@ def Adc_DataFrame(self) -> DataFrame: @property def Heater_PwmLimit_DutyCyclePercent(self) -> float: + # NOTE: PwmLimit is deprecated if self.Heater_DutyCyclePeriodCycles == 0: return float('Inf') else: @@ -506,7 +560,7 @@ def Heater_PwmLimit_DutyCyclePercent(self) -> float: @property def Heater_EffectivePowerLimit(self) -> float: - # TODO: consider using V_HEATER_NOM instead of `fused_est_lander_voltage` in case `fused_est_lander_voltage` isn't accurate + # NOTE: PwmLimit is deprecated max_avail_voltage = self.fused_est_lander_voltage * \ self.Heater_PwmLimit_DutyCyclePercent / 100.0 if self.R_HEATER == 0: @@ -514,6 +568,14 @@ def Heater_EffectivePowerLimit(self) -> float: else: return max_avail_voltage**2 / self.R_HEATER + @property + def Heater_MaxPossiblePower(self) -> float: + # Maximum possible heater power + if self.R_HEATER == 0: + return float('Inf') + else: + return self.fused_est_lander_voltage**2 / self.R_HEATER + @property def Heater_SetpointKelvin(self) -> float: # ! TODO: Why are we sending 16b if Adc maxes out at 12b... Strongly consider revising. @@ -547,7 +609,6 @@ def Heater_DutyCyclePercent(self) -> float: @property def Heater_EffectiveVoltage(self) -> float: - # TODO: consider using V_HEATER_NOM instead of `fused_est_lander_voltage` in case `fused_est_lander_voltage` isn't accurate return self.fused_est_lander_voltage * self.Heater_DutyCyclePercent / 100.0 @property @@ -861,13 +922,12 @@ def __repr__(self) -> str: f"ISA: {self.Adc_FullSystemCurrent*1000:.1f}mA" "\n" "HEATER " - f"[{self.Heater_OnTempKelvin:.0f}K |" - f"{self.Heater_SetpointKelvin:.0f}K |" - f"{self.Heater_OffTempKelvin:.0f}K] \t" + f"[↑{self.Heater_OnTempKelvin:.0f}K ({self.Heater_OnValue}) | " + f"↓{self.Heater_OffTempKelvin:.0f}K ({self.Heater_OffValue})] \t" f" is {self.getEnumName('Heater_IsHeating')}, " f"Control: {self.getEnumName('Heater_ControlEnabled')} \t" - f"@ {self.Heater_EffectivePower:.3f}W / {self.Heater_EffectivePowerLimit:.3f}W \t" - f"Period: {self.Heater_DutyCyclePeriodMs:.1f}ms" + f"@ {self.Heater_EffectivePower:.3f}W / {self.Heater_MaxPossiblePower:.3f}W \t" + f"Period: {self.Heater_DutyCyclePeriodMs:.2f}ms" "\n" f"Tbatt: {self.Adc_BatteryTempKelvin:.1f}K ± {self.Adc_BatteryTempUncertaintyKelvin}K \t" f"Tchrg: {self.Adc_BatteryChargingTempKelvin:.1f}K ± {self.Adc_BatteryChargingTempUncertaintyKelvin}K \t" @@ -930,9 +990,9 @@ class WatchdogDetailedStatusPacket(WDS_PI[WDS_PI, WDS_CP]): ('Adc_2V5VoltageRaw', (5, True, 5, WD_ADC_BITS)), ('Adc_2V8VoltageRaw', (5, True, 5, WD_ADC_BITS)), ('Adc_Vcc28VoltageRaw', (6, True, 6, WD_ADC_BITS)), - ('Heater_Kp', (16, False, 0, 0)), - ('Heater_PwmLimit_DutyCycleCounter', (16, False, 0, 0)), - ('Heater_SetpointValue', (16, False, 0, 0)), + ('Heater_Kp', (16, False, 0, 0)), # Deprecated + ('Heater_PwmLimit_DutyCycleCounter', (16, False, 0, 0)), # Deprecated + ('Heater_SetpointValue', (16, False, 0, 0)), # Deprecated ('Heater_OnValue', (16, False, 0, 0)), ('Heater_OffValue', (16, False, 0, 0)), ('Heater_DutyCyclePeriodCycles', (16, False, 0, 0)), diff --git a/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/watchdog_heartbeat.py b/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/watchdog_heartbeat.py index 52d80e5f5..9953893ec 100644 --- a/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/watchdog_heartbeat.py +++ b/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/watchdog_heartbeat.py @@ -4,7 +4,7 @@ important Watchdog statuses during cis-lunar transit. @author: Connor W. Colombo (CMU) -@last-updated: 05/01/2022 +@last-updated: 12/31/2022 """ from __future__ import annotations # Activate postponed annotations (for using classes as return type in their own methods) @@ -20,6 +20,9 @@ from ..settings import ENDIANNESS_CODE from ..exceptions import PacketDecodingException +# Borrow conversions from Detailed status: +from .watchdog_detailed_status import WatchdogDetailedStatusPacketInterface + from IrisBackendv3.data_standards.module import Module @@ -62,7 +65,7 @@ class CustomPayload(): _BatteryVoltageOk: bool _BattAdcTempRaw: int - @ staticmethod + @staticmethod def despan(span: int, num_bits: int, min_val: float, @@ -112,7 +115,7 @@ def despan(span: int, return (span-span_min)/(span_max-span_min) * (max_val-min_val) + min_val - @ staticmethod + @staticmethod def span(val: float, num_bits: int, min_val: float, @@ -179,7 +182,7 @@ def CurrentMilliamps(self) -> float: @property def BattAdcTempKelvin(self) -> float: - return self.despan(self._BattAdcTempRaw, 8, 75, -12.31, span_max=233) + return WatchdogDetailedStatusPacketInterface.CustomPayload.battery_adc_reading_to_kelvin(self._BattAdcTempRaw) # Make public get, private set to signal that you can freely use these values # but modifying them directly can yield undefined behavior (specifically @@ -235,7 +238,7 @@ class WatchdogHeartbeatPacket(WHB_PI[WHB_PI, WHB_CP]): def __repr__(self) -> str: return self.custom_payload.__repr__() - @ classmethod + @classmethod def decode(cls, data: bytes, endianness_code: str = ENDIANNESS_CODE @@ -248,8 +251,11 @@ def decode(cls, f"Expected {cls.START_FLAG}, Got: {flag} ." ) # TODO: use `bitstruct.compile` on first run to speed processing time. + bitfields = [*bitstruct.unpack('u7u1u7u1u8', core_data)] + # Unshift fields: + bitfields[-1] = bitfields[-1] << 4 custom_payload = WatchdogHeartbeatPacket.CustomPayload( - *bitstruct.unpack('u7u1u7u1u8', core_data) + *bitfields ) return WatchdogHeartbeatPacket( custom_payload=custom_payload, @@ -262,7 +268,7 @@ def encode(self, **kwargs: Any) -> bytes: #!! TODO: IS NECESSARY FOR IPC (OR JUST ENCODE THAT STUFF IN A STATE) <- Not with new `Packet`-specific `__reduce__` strategy raise NotImplementedError() - @ classmethod + @classmethod def is_valid(cls, data: bytes, endianness_code: str = ENDIANNESS_CODE) -> bool: """ Determines whether the given bytes constitute a valid packet of this type. diff --git a/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/watchdog_radio_debug.py b/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/watchdog_radio_debug.py index bffb3bafb..5b618662f 100644 --- a/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/watchdog_radio_debug.py +++ b/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/watchdog_radio_debug.py @@ -9,7 +9,8 @@ """ from __future__ import annotations -from prompt_toolkit import formatted_text # Activate postponed annotations (for using classes as return type in their own methods) +# Activate postponed annotations (for using classes as return type in their own methods) +from prompt_toolkit import formatted_text from .packet import Packet, CT @@ -56,8 +57,8 @@ def __init__(self, if payloads is None: # Except possibly in future subclasses, this should normally be - # empty for an `WatchdogDebugPacket`. `payloads` needs to stay as - # an `__init__` arg to avoid violating the Liskov substitution + # empty for an `WatchdogRadioDebugPacket`. `payloads` needs to stay + # as an `__init__` arg to avoid violating the Liskov substitution # principle. payloads = EnhancedPayloadCollection() diff --git a/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/watchdog_reset_specific_ack.py b/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/watchdog_reset_specific_ack.py new file mode 100644 index 000000000..26bdf8fa5 --- /dev/null +++ b/Apps/GroundSoftware/IrisBackendv3/codec/packet_classes/watchdog_reset_specific_ack.py @@ -0,0 +1,209 @@ +""" +Defines `WatchdogResetSpecificAckPacket`, a `Packet` wrapper for a debug string +acknowledging a reset specific command and providing info about what occurred. +This packet type doesn't contain any telemetry (for now, should get converted +to a `EventPayload` eventually) and is just printed to the console. + +@author: Connor W. Colombo (CMU) +@last-updated: 01/01/2023 +""" +from __future__ import annotations + +# Activate postponed annotations (for using classes as return type in their own methods) +from prompt_toolkit import formatted_text + +from .packet import Packet, CT + +from typing import List, Any, Optional + +from scapy.utils import hexdump # type: ignore +from termcolor import colored + +from ..payload_collection import EnhancedPayloadCollection + +from ..settings import ENDIANNESS_CODE +from ..settings import settings as CodecSettings +from ..logging import logger +from ..exceptions import PacketDecodingException + +# Fixed prefix. All `RadioBgApiPacket`s start with b'DEBUG' then `RESET:`. +# Note the b'DEBUG' prefix is there b/c this is sent from the Watchdog using +# the debug messaging system. +FIXED_PREFIX: bytes = b'DEBUGRESET:' + + +class WatchdogResetSpecificAckPacketInterface(Packet[CT]): + # empty __slots__ preserves parent class __slots__ + __slots__: List[str] = [] + + +class WatchdogResetSpecificAckPacket(WatchdogResetSpecificAckPacketInterface[WatchdogResetSpecificAckPacketInterface]): + """ + Creates a data-structure to allow storing and handling a reset specific ack. + + @author: Connor W. Colombo (CMU) + @last-updated: 01/01/2023 + """ + __slots__: List[str] = [ + '_resetId', + '_resultStatusCode', + '_allowPowerOn', + '_allowDisableRS422', + '_allowDeploy', + '_allowUndeploy' + ] + + _resetId: int + _resultStatusCode: int + _allowPowerOn: bool + _allowDisableRS422: bool + _allowDeploy: bool + _allowUndeploy: bool + + def __init__(self, + payloads: Optional[EnhancedPayloadCollection] = None, + raw: Optional[bytes] = None, + endianness_code: str = ENDIANNESS_CODE + ) -> None: + + if raw is None and (payloads is None or payloads.is_empty()): + # If both `payloads` and `raw` are `None`, what even caused + # this to be generated? + logger.debug( + "A `WatchdogResetSpecificAckPacket` was constructed with no " + "`payloads` and no `raw` data. This suggests it's being " + "created from nothing as a completely empty packet. Was this " + "intentional or is this a bug?" + ) + + if payloads is None: + # Except possibly in future subclasses, this should normally be + # empty for an `WatchdogResetSpecificAckPacket`. `payloads` needs + # to stay as an `__init__` arg to avoid violating the Liskov + # substitution principle. + payloads = EnhancedPayloadCollection() + + super().__init__( + payloads=payloads, + raw=raw, + endianness_code=endianness_code + ) # passthru + + if self._raw is None: + self._raw = self.encode() + + # Strip off fixed prefix: + core_data = self._raw[len(FIXED_PREFIX):] + # Unpack fields from format: "RESET:%d -> %d with 0x%x\n" + fields = core_data.strip().split(b' ') + bad_formatting = False + if len(fields) != 5: + bad_formatting = True + else: + try: + # Formatting is correct. Extract data: + self._resetId = int(fields[0]) + self._resultStatusCode = int(fields[2]) + resetConditions = int(fields[-1], 16) + self._allowPowerOn = bool(resetConditions & 0b1000) + self._allowDisableRS422 = bool(resetConditions & 0b0100) + self._allowDeploy = bool(resetConditions & 0b0010) + self._allowUndeploy = bool(resetConditions & 0b0001) + except Exception as e: + bad_formatting = True + if bad_formatting: + # Raise an exception (so this will become an `UnsupportedPacket`): + raise PacketDecodingException( + self._raw, + ( + f"Failed to decode Reset Specific message inside " + f"`WatchdogResetSpecificAckPacket` with data " + f"`{hexdump(raw, dump=True)}` because the formatting did " + f"not match expectations." + ) + ) + + @property + def resetFieldName(self) -> str: + if self._resetId == 0: + return 'NONE' + elif not self._resetId: + return 'BAD' + else: + try: + module = CodecSettings['STANDARDS'].modules['WatchDogInterface'] + command = module.commands['WatchDogInterface_ResetSpecific'] + arg = command.args[0] + name = arg.get_enum_name(self._resetId) + return str(name) + except Exception: + return f'NOT-FOUND ({self._resetId})' + + @property + def resetResult(self) -> str: + if self._resultStatusCode == 0: + return 'NO_ERROR' + elif not self._resultStatusCode: + return 'BAD' + else: + try: + module = CodecSettings['STANDARDS'].modules['WatchdogCommandResponse'] + channel = module.telemetry['ErrorFlag'] + name = channel.get_enum_name(self._resultStatusCode) + return str(name) + except Exception: + return f'NOT-FOUND ({self._resultStatusCode})' + + @classmethod + def decode(cls, + data: bytes, + endianness_code: str = ENDIANNESS_CODE + ) -> WatchdogResetSpecificAckPacket: + return cls(raw=data, endianness_code=endianness_code) + + def encode(self, **kwargs: Any) -> bytes: + # There's no encoding to do. It's just raw data. + if self._raw is None: + return b'' + else: + return self._raw + + @classmethod + def build_minimum_packet( + cls, + payloads: EnhancedPayloadCollection, + raw: Optional[bytes], + endianness_code: str + ) -> WatchdogResetSpecificAckPacket: + """ Minimum packet is just the packet. """ + return cls( + payloads=payloads, + raw=raw, + endianness_code=endianness_code + ) + + @classmethod + def is_valid(cls, data: bytes, endianness_code: str = ENDIANNESS_CODE) -> bool: + """Valid if the packet starts with `FIXED_PREFIX`.""" + return data[:len(FIXED_PREFIX)] == FIXED_PREFIX + + def __repr__(self) -> str: + if self._raw is None or len(self._raw) < len(FIXED_PREFIX): + msg = '' + else: + msg = self._raw.decode().strip() + return ( + colored(f" {msg} ", 'white', 'on_yellow', ['bold']) + + colored(f": {self.resetFieldName} -> {self.resetResult}", 'yellow', attrs=['bold']) + + colored( + f", allowing\t " + f"(PowerOn: {'✓' if self._allowPowerOn else '𐄂'},\t " + f"Rs422Off: {'✓' if self._allowDisableRS422 else '𐄂'},\t " + f"Deploy: {'✓' if self._allowDeploy else '𐄂'},\t " + f"Undeploy: {'✓' if self._allowUndeploy else '𐄂'}).", + 'white' + ) + ) + + def __str__(self) -> str: + return self.__repr__() diff --git a/Apps/GroundSoftware/__command_aliases.py b/Apps/GroundSoftware/__command_aliases.py index c4f7f7dec..5895599dd 100644 --- a/Apps/GroundSoftware/__command_aliases.py +++ b/Apps/GroundSoftware/__command_aliases.py @@ -6,7 +6,7 @@ `pyenv exec python datastandards_lookup.py`. Created: 10/29/2021 -Last Update: 11/12/2022 +Last Update: 01/01/2023 """ from __future__ import annotations # Support things like OrderedDict[A,B] from enum import Enum @@ -360,15 +360,210 @@ class Parameter(Enum): OrderedDict(confirm='CONFIRM_REQUEST'), DataPathway.WIRED ), - 'disable-heater-control': ( + 'disable-heater-control-via-herc': ( DataPathway.WIRED, # intentionally telling the WD to tell Herc to tell the WD to enable heater control (same path as deployment command but a quick pretest) + Magic.COMMAND, + 'WatchDogInterface_ResetSpecific', + OrderedDict(reset_value='AUTO_HEATER_CONTROLLER_DISABLE'), + DataPathway.WIRED + ), + 'disable-heater-control': ( + DataPathway.WIRED, Magic.WATCHDOG_COMMAND, 'WatchDogInterface_ResetSpecific', - # Change this to whatever you want to reset. - OrderedDict(reset_value='DISABLE_HEATER_CONTROL'), + OrderedDict(reset_value='AUTO_HEATER_CONTROLLER_DISABLE'), + DataPathway.WIRED + ), + 'enable-heater-control': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_ResetSpecific', + OrderedDict(reset_value='AUTO_HEATER_CONTROLLER_ENABLE'), + DataPathway.WIRED + ), + + # Set the heater's "ON" power level to be 10%: + # NOTE: this is actually setting the TB0CCR2 on counter. + # Percentage Voltage is calculated as DutyCycle/DutyCyclePeriod (TB0CCR0), + # which this assumes is fixed at 10000 (1.25ms). + # Note, b/c P = V^2/R, P/Pmax = (V/Vmax)^2, therefore 10% power = 32% voltage = 3162/10000 + 'set-heater-to-power-10': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetHeaterDutyCycle', + OrderedDict(duty=3162), + DataPathway.WIRED + ), + # Set the heater's "ON" power level to be 20%: + # b/c P/Pmax = (V/Vmax)^2, 20% power = 45% voltage = 4472/10000 + 'set-heater-to-power-20': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetHeaterDutyCycle', + OrderedDict(duty=4472), + DataPathway.WIRED + ), + # Set the heater's "ON" power level to be 25%: + # b/c P/Pmax = (V/Vmax)^2, 25% power = 50% voltage = 5000/10000 + 'set-heater-to-power-25': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetHeaterDutyCycle', + OrderedDict(duty=5000), + DataPathway.WIRED + ), + # Set the heater's "ON" power level to be 30%: + # b/c P/Pmax = (V/Vmax)^2, 30% power = 55% voltage = 5477/10000 + 'set-heater-to-power-30': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetHeaterDutyCycle', + OrderedDict(duty=5477), + DataPathway.WIRED + ), + # Set the heater's "ON" power level to be 40%: + # b/c P/Pmax = (V/Vmax)^2, 40% power = 63% voltage = 6325/10000 + 'set-heater-to-power-40': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetHeaterDutyCycle', + OrderedDict(duty=6325), + DataPathway.WIRED + ), + # Set the heater's "ON" power level to be 50%: + # b/c P/Pmax = (V/Vmax)^2, 50% power = 71% voltage = 7071/10000 + 'set-heater-to-power-50': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetHeaterDutyCycle', + OrderedDict(duty=7071), + DataPathway.WIRED + ), + # Set the heater's "ON" power level to be 60%: + # b/c P/Pmax = (V/Vmax)^2, 60% power = 77% voltage = 7746/10000 + 'set-heater-to-power-60': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetHeaterDutyCycle', + OrderedDict(duty=7746), + DataPathway.WIRED + ), + # Set the heater's "ON" power level to be 70%: + # b/c P/Pmax = (V/Vmax)^2, 70% power = 84% voltage = 8367/10000 + 'set-heater-to-power-70': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetHeaterDutyCycle', + OrderedDict(duty=8367), + DataPathway.WIRED + ), + # Set the heater's "ON" power level to be 75%: + # b/c P/Pmax = (V/Vmax)^2, 75% power = 87% voltage = 8660/10000 + 'set-heater-to-power-75': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetHeaterDutyCycle', + OrderedDict(duty=8660), + DataPathway.WIRED + ), + # Set the heater's "ON" power level to be 80%: + # b/c P/Pmax = (V/Vmax)^2, 80% power = 89% voltage = 8944/10000 + 'set-heater-to-power-80': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetHeaterDutyCycle', + OrderedDict(duty=8944), + DataPathway.WIRED + ), + # Set the heater's "ON" power level to be 90%: + # b/c P/Pmax = (V/Vmax)^2, 90% power = 89% voltage = 9486/10000 + 'set-heater-to-power-90': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetHeaterDutyCycle', + OrderedDict(duty=9486), + DataPathway.WIRED + ), + # Set the heater's "ON" power level to be 95%: + # b/c P/Pmax = (V/Vmax)^2, 95% power = 97% voltage = 9746/10000 + 'set-heater-to-power-95': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetHeaterDutyCycle', + OrderedDict(duty=9746), + DataPathway.WIRED + ), + # Set the heater's "ON" power level to be 100%: + 'set-heater-to-power-100': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetHeaterDutyCycle', + # DON'T set to the full value of 10000 (since cutoff is 1 less) + OrderedDict(duty=9999), DataPathway.WIRED ), + # Set the heater's "ON" power level to be 0% (basically, always off no + # matter what): + 'set-heater-to-power-0': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetHeaterDutyCycle', + # DON'T set to the full value of 10000 (since cutoff is 1 less) + OrderedDict(duty=0), + DataPathway.WIRED + ), + # Set the heater's "ON" power level back to its default (8500 duty, which + # was used during EM3 TVAC). This equates to 72.2% max power or 0.889W at + # 27.80V. + 'set-heater-to-power-default': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetHeaterDutyCycle', + # DON'T set to the full value of 10000 (since cutoff is 1 less) + OrderedDict(duty=8500), + DataPathway.WIRED + ), + + 'heater-force-off': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_ResetSpecific', + OrderedDict(reset_value='HEATER_FORCE_OFF'), + DataPathway.WIRED + ), + 'heater-force-on': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_ResetSpecific', + OrderedDict(reset_value='HEATER_FORCE_ON'), + DataPathway.WIRED + ), + 'heater-force-nothing': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_ResetSpecific', + OrderedDict(reset_value='HEATER_FORCE_NOTHING'), + DataPathway.WIRED + ), + + 'set-heater-on-level': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetAutoHeaterOnValue', + OrderedDict(on=1000), + DataPathway.WIRED + ), + 'set-heater-off-level': ( + DataPathway.WIRED, + Magic.WATCHDOG_COMMAND, + 'WatchDogInterface_SetAutoHeaterOffValue', + OrderedDict(off=500), + DataPathway.WIRED + ), + + + 'reset-motors': ( DataPathway.WIRED, diff --git a/Apps/GroundSoftware/out/___bgapi_passthrough_programming_session__01GJD7DN8HYX8M8775ZMH3AKNJ.log.ansi b/Apps/GroundSoftware/out/___bgapi_passthrough_programming_session__01GJD7DN8HYX8M8775ZMH3AKNJ.log.ansi new file mode 100644 index 000000000..d754275d3 --- /dev/null +++ b/Apps/GroundSoftware/out/___bgapi_passthrough_programming_session__01GJD7DN8HYX8M8775ZMH3AKNJ.log.ansi @@ -0,0 +1,507 @@ +11-21 08:53:09.f NOTICE Starting Iris BGAPI Passthrough Programmer . . . +11-21 08:53:09.f INFO Loading and Compiling DFU file ../FlightSoftware/Radio/build/iris_wifi_radio__auto_connect.dfu . . . +11-21 08:53:12.f VERBOSE Compiled 512000B into 4000 chunks of 128B with a total ICP transmission size of 628000B. +11-21 08:53:12.f INFO Starting Serial using A7035PDL at 9600baud . . . +11-21 08:53:12.f ERROR Failed to connect to serial device. Is the device name right? Check the connection? Original error: list index out of range +11-21 08:53:12.f INFO Waiting for data from Hercules . . . +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Can't read data, serial connection not started. Try `connect_serial()`. +11-21 08:53:12.f SPAM Got: +UnsupportedPacket[0B]: + + +11-21 08:53:12.f ERROR Haven't heard anything from Hercules. Aborting. diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/Watchdog.map b/Bins/RC7/FSW/Watchdog/Debug_with_flag/Watchdog.map new file mode 100644 index 000000000..e5148798c --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/Watchdog.map @@ -0,0 +1,5138 @@ +****************************************************************************** + MSP430 Linker Unix v18.12.2 +****************************************************************************** +>> Linked Mon Jan 2 07:44:13 2023 + +OUTPUT FILE NAME: +ENTRY POINT SYMBOL: "_c_int00_noargs_mpu" address: 000046c0 + + +MEMORY CONFIGURATION + + name origin length used unused attr fill +---------------------- -------- --------- -------- -------- ---- -------- + TINYRAM 0000000a 00000016 00000000 00000016 RWIX + BSL 00001000 00000800 00000000 00000800 RWIX + INFOD 00001800 00000080 00000000 00000080 RWIX + INFOC 00001880 00000080 00000000 00000080 RWIX + INFOB 00001900 00000080 00000000 00000080 RWIX + INFOA 00001980 00000080 00000000 00000080 RWIX + RAM 00001c00 00002000 00001f64 0000009c RWIX + FRAM 00004000 0000bf80 0000911d 00002e63 RWIX + JTAGSIGNATURE 0000ff80 00000004 00000004 00000000 RWIX ffff + BSLSIGNATURE 0000ff84 00000004 00000004 00000000 RWIX ffff + IPESIGNATURE 0000ff88 00000008 00000008 00000000 RWIX ffff + INT00 0000ff90 00000002 00000000 00000002 RWIX + INT01 0000ff92 00000002 00000000 00000002 RWIX + INT02 0000ff94 00000002 00000000 00000002 RWIX + INT03 0000ff96 00000002 00000000 00000002 RWIX + INT04 0000ff98 00000002 00000000 00000002 RWIX + INT05 0000ff9a 00000002 00000000 00000002 RWIX + INT06 0000ff9c 00000002 00000000 00000002 RWIX + INT07 0000ff9e 00000002 00000000 00000002 RWIX + INT08 0000ffa0 00000002 00000000 00000002 RWIX + INT09 0000ffa2 00000002 00000000 00000002 RWIX + INT10 0000ffa4 00000002 00000000 00000002 RWIX + INT11 0000ffa6 00000002 00000000 00000002 RWIX + INT12 0000ffa8 00000002 00000000 00000002 RWIX + INT13 0000ffaa 00000002 00000000 00000002 RWIX + INT14 0000ffac 00000002 00000000 00000002 RWIX + INT15 0000ffae 00000002 00000000 00000002 RWIX + INT16 0000ffb0 00000002 00000000 00000002 RWIX + INT17 0000ffb2 00000002 00000000 00000002 RWIX + INT18 0000ffb4 00000002 00000002 00000000 RWIX + INT19 0000ffb6 00000002 00000002 00000000 RWIX + INT20 0000ffb8 00000002 00000002 00000000 RWIX + INT21 0000ffba 00000002 00000002 00000000 RWIX + INT22 0000ffbc 00000002 00000002 00000000 RWIX + INT23 0000ffbe 00000002 00000002 00000000 RWIX + INT24 0000ffc0 00000002 00000002 00000000 RWIX + INT25 0000ffc2 00000002 00000002 00000000 RWIX + INT26 0000ffc4 00000002 00000002 00000000 RWIX + INT27 0000ffc6 00000002 00000002 00000000 RWIX + INT28 0000ffc8 00000002 00000002 00000000 RWIX + INT29 0000ffca 00000002 00000002 00000000 RWIX + INT30 0000ffcc 00000002 00000002 00000000 RWIX + INT31 0000ffce 00000002 00000002 00000000 RWIX + INT32 0000ffd0 00000002 00000002 00000000 RWIX + INT33 0000ffd2 00000002 00000002 00000000 RWIX + INT34 0000ffd4 00000002 00000002 00000000 RWIX + INT35 0000ffd6 00000002 00000002 00000000 RWIX + INT36 0000ffd8 00000002 00000002 00000000 RWIX + INT37 0000ffda 00000002 00000002 00000000 RWIX + INT38 0000ffdc 00000002 00000002 00000000 RWIX + INT39 0000ffde 00000002 00000002 00000000 RWIX + INT40 0000ffe0 00000002 00000002 00000000 RWIX + INT41 0000ffe2 00000002 00000002 00000000 RWIX + INT42 0000ffe4 00000002 00000002 00000000 RWIX + INT43 0000ffe6 00000002 00000002 00000000 RWIX + INT44 0000ffe8 00000002 00000002 00000000 RWIX + INT45 0000ffea 00000002 00000002 00000000 RWIX + INT46 0000ffec 00000002 00000002 00000000 RWIX + INT47 0000ffee 00000002 00000002 00000000 RWIX + INT48 0000fff0 00000002 00000002 00000000 RWIX + INT49 0000fff2 00000002 00000002 00000000 RWIX + INT50 0000fff4 00000002 00000002 00000000 RWIX + INT51 0000fff6 00000002 00000002 00000000 RWIX + INT52 0000fff8 00000002 00000002 00000000 RWIX + INT53 0000fffa 00000002 00000002 00000000 RWIX + INT54 0000fffc 00000002 00000002 00000000 RWIX + RESET 0000fffe 00000002 00000002 00000000 RWIX + FRAM2 00010000 00034000 0000b552 00028aae RWIX + + +SECTION ALLOCATION MAP + + output attributes/ +section page origin length input sections +-------- ---- ---------- ---------- ---------------- +.TI.persistent +* 0 00004000 00000002 + 00004000 00000002 RoverStateManager.obj (.TI.persistent) + +.binit 0 00004000 00000000 + +.cio 0 00004002 00000120 UNINITIALIZED + 00004002 00000120 rts430x_lc_rd_eabi.lib : trgmsg.c.obj (.cio) + +.sysmem 0 00004124 00000008 UNINITIALIZED + 00004124 00000008 rts430x_lc_rd_eabi.lib : memory.c.obj (.sysmem) + +.ipestruct +* 0 00004400 00000000 UNINITIALIZED + +.ipe 0 00004400 00000000 UNINITIALIZED + +.ipe_const +* 0 00004400 00000000 UNINITIALIZED + +.ipe:_isr +* 0 00004400 00000000 UNINITIALIZED + +.cinit 0 0000d08c 00000092 + 0000d08c 0000006f (.cinit..data.load) [load image, compression = lzss] + 0000d0fb 00000001 --HOLE-- [fill = 0] + 0000d0fc 0000000c (__TI_handler_table) + 0000d108 00000006 (.cinit..bss.load) [load image, compression = zero_init] + 0000d10e 00000010 (__TI_cinit_table) + +.init_array +* 0 00004000 00000000 UNINITIALIZED + +.text:_isr +* 0 00004400 000002f8 + 00004400 000000ca uart.obj (.text:_isr:USCI_A0_ISR) + 000044ca 000000ca uart.obj (.text:_isr:USCI_A1_ISR) + 00004594 00000098 adc.obj (.text:_isr:ADC12_ISR) + 0000462c 00000056 watchdog.obj (.text:_isr:port1_isr_handler) + 00004682 0000003e watchdog.obj (.text:_isr:Timer0_A1_ISR) + 000046c0 00000020 rts430x_lc_rd_eabi.lib : boot.c.obj (.text:_isr:_c_int00_noargs_mpu) + 000046e0 00000010 RoverStateManager.obj (.text:_isr:_Z7WDT_ISRv) + 000046f0 00000008 rts430x_lc_rd_eabi.lib : isr_trap.asm.obj (.text:_isr:__TI_ISR_TRAP) + +.bss 0 00001c00 00000d0e UNINITIALIZED + 00001c00 00000400 RoverStateManager.obj (.bss:_ZN43_INTERNAL_21_RoverStateManager_cpp_1f51f65b4iris13uart0RxBufferE) + 00002000 00000400 RoverStateManager.obj (.bss:_ZN43_INTERNAL_21_RoverStateManager_cpp_1f51f65b4iris13uart1TxBufferE) + 00002400 00000200 RoverStateManager.obj (.bss:_ZN43_INTERNAL_21_RoverStateManager_cpp_1f51f65b4iris13uart0TxBufferE) + 00002600 00000200 RoverStateManager.obj (.bss:_ZN43_INTERNAL_21_RoverStateManager_cpp_1f51f65b4iris13uart1RxBufferE) + 00002800 000000a0 (.common:__TI_tmpnams) + 000028a0 00000050 ring_buffer.obj (.bss:ALL_RING_BUFFERS) + 000028f0 00000010 RoverStateBase.obj (.bss:ECHO_BUFFER$9) + 00002900 00000008 (.common:parmbuf) + 00002908 00000004 rts430x_lc_rd_eabi.lib : memory.c.obj (.bss) + 0000290c 00000002 time.obj (.bss) + +.data 0 0000290e 00000c82 UNINITIALIZED + 0000290e 000002cc hercules_comms.obj (.data:theState) + 00002bda 000002cc lander_comms.obj (.data:theState) + 00002ea6 00000100 debug_comms.obj (.data:PRINT_BUFFER) + 00002fa6 00000100 lander_comms.obj (.data:uartRxData$1) + 000030a6 00000100 lander_comms.obj (.data:uartTxSlipData$5) + 000031a6 000000c8 rts430x_lc_rd_eabi.lib : defs.c.obj (.data:_ftable) + 0000326e 00000078 : host_device.c.obj (.data:_device) + 000032e6 00000040 hercules_comms.obj (.data:uartRxData$1) + 00003326 00000040 hercules_comms.obj (.data:uartRxData$3) + 00003366 0000003c rts430x_lc_rd_eabi.lib : host_device.c.obj (.data:_stream) + 000033a2 0000002f RoverStateBase.obj (.data:report$10) + 000033d1 00000001 ground_msgs.obj (.data) + 000033d2 0000002f RoverStateBase.obj (.data:reportBuffer$11) + 00003401 00000001 lander_comms.obj (.data) + 00003402 00000022 i2c_sensors.obj (.data:internals) + 00003424 0000001c lander_comms.obj (.data:uartHeaderData$4) + 00003440 0000001a hercules_mpsm.obj (.data:theStateMachine) + 0000345a 0000001a uart.obj (.data:uart0State) + 00003474 0000001a uart.obj (.data:uart1State) + 0000348e 00000018 RoverStateEnteringMission.obj (.data:hb$1) + 000034a6 00000018 RoverStateMission.obj (.data:hb$1) + 000034be 00000018 RoverStateService.obj (.data:hb$1) + 000034d6 00000018 RoverStateBase.obj (.data:wdMessage$1) + 000034ee 00000014 lander_comms.obj (.data:txDurations$6) + 00003502 00000010 RoverStateBase.obj (.data:telemetrySerializationBuffer$5) + 00003512 0000000c watchdog.obj (.data) + 0000351e 00000009 debug_comms.obj (.data) + 00003527 00000001 --HOLE-- + 00003528 00000008 adc.obj (.data) + 00003530 00000008 i2c_sensors.obj (.data:tStatus$1) + 00003538 00000008 i2c_sensors.obj (.data:tStatus$2) + 00003540 00000008 i2c.obj (.data:theStatus) + 00003548 00000006 RoverStateBase.obj (.data:deployNotificationResponse$3) + 0000354e 00000006 RoverStateBase.obj (.data:response$2) + 00003554 00000006 event_queue.obj (.data:theQueue) + 0000355a 00000004 rts430x_lc_rd_eabi.lib : exit_gvars.c.obj (.data:__TI_cleanup_ptr) + 0000355e 00000004 : exit_gvars.c.obj (.data:__TI_dtors_ptr) + 00003562 00000004 : _lock.c.obj (.data:_lock) + 00003566 00000004 : _lock.c.obj (.data:_unlock) + 0000356a 00000004 blimp.obj (.data) + 0000356e 00000004 bsp.obj (.data) + 00003572 00000004 RoverStateBase.obj (.data:hb$12) + 00003576 00000004 RoverStateEnteringKeepAlive.obj (.data:hb$1) + 0000357a 00000004 slip_mpsm.obj (.data:theStateMachine) + 0000357e 00000003 RoverStateBase.obj (.data:responseSerializationBuffer$6) + 00003581 00000001 --HOLE-- + 00003582 00000002 RoverStateBase.obj (.data) + 00003584 00000002 hercules_comms.obj (.data) + 00003586 00000002 i2c_sensors.obj (.data) + 00003588 00000002 ring_buffer.obj (.data) + 0000358a 00000002 rts430x_lc_rd_eabi.lib : defs.c.obj (.data) + 0000358c 00000002 : exit.c.obj (.data) + 0000358e 00000002 : memory.c.obj (.data) + +.stack 0 0000362c 000005d4 UNINITIALIZED + 0000362c 00000004 rts430x_lc_rd_eabi.lib : boot.c.obj (.stack) + 00003630 000005d0 --HOLE-- + +$fill000 0 0000ff80 00000004 + 0000ff80 00000004 --HOLE-- [fill = ffff] + +$fill001 0 0000ff84 00000004 + 0000ff84 00000004 --HOLE-- [fill = ffff] + +$fill002 0 0000ff88 00000008 + 0000ff88 00000008 --HOLE-- [fill = ffff] + +LEA 0 0000ffb4 00000002 + 0000ffb4 00000002 rts430x_lc_rd_eabi.lib : int18.asm.obj (.int18) + +PORT8 0 0000ffb6 00000002 + 0000ffb6 00000002 rts430x_lc_rd_eabi.lib : int19.asm.obj (.int19) + +PORT7 0 0000ffb8 00000002 + 0000ffb8 00000002 rts430x_lc_rd_eabi.lib : int20.asm.obj (.int20) + +EUSCI_B3 0 0000ffba 00000002 + 0000ffba 00000002 rts430x_lc_rd_eabi.lib : int21.asm.obj (.int21) + +EUSCI_B2 0 0000ffbc 00000002 + 0000ffbc 00000002 rts430x_lc_rd_eabi.lib : int22.asm.obj (.int22) + +EUSCI_B1 0 0000ffbe 00000002 + 0000ffbe 00000002 rts430x_lc_rd_eabi.lib : int23.asm.obj (.int23) + +EUSCI_A3 0 0000ffc0 00000002 + 0000ffc0 00000002 rts430x_lc_rd_eabi.lib : int24.asm.obj (.int24) + +EUSCI_A2 0 0000ffc2 00000002 + 0000ffc2 00000002 rts430x_lc_rd_eabi.lib : int25.asm.obj (.int25) + +PORT6 0 0000ffc4 00000002 + 0000ffc4 00000002 rts430x_lc_rd_eabi.lib : int26.asm.obj (.int26) + +PORT5 0 0000ffc6 00000002 + 0000ffc6 00000002 rts430x_lc_rd_eabi.lib : int27.asm.obj (.int27) + +TIMER4_A1 +* 0 0000ffc8 00000002 + 0000ffc8 00000002 rts430x_lc_rd_eabi.lib : int28.asm.obj (.int28) + +TIMER4_A0 +* 0 0000ffca 00000002 + 0000ffca 00000002 rts430x_lc_rd_eabi.lib : int29.asm.obj (.int29) + +AES256 0 0000ffcc 00000002 + 0000ffcc 00000002 rts430x_lc_rd_eabi.lib : int30.asm.obj (.int30) + +RTC_C 0 0000ffce 00000002 + 0000ffce 00000002 rts430x_lc_rd_eabi.lib : int31.asm.obj (.int31) + +PORT4 0 0000ffd0 00000002 + 0000ffd0 00000002 rts430x_lc_rd_eabi.lib : int32.asm.obj (.int32) + +PORT3 0 0000ffd2 00000002 + 0000ffd2 00000002 rts430x_lc_rd_eabi.lib : int33.asm.obj (.int33) + +TIMER3_A1 +* 0 0000ffd4 00000002 + 0000ffd4 00000002 rts430x_lc_rd_eabi.lib : int34.asm.obj (.int34) + +TIMER3_A0 +* 0 0000ffd6 00000002 + 0000ffd6 00000002 rts430x_lc_rd_eabi.lib : int35.asm.obj (.int35) + +PORT2 0 0000ffd8 00000002 + 0000ffd8 00000002 rts430x_lc_rd_eabi.lib : int36.asm.obj (.int36) + +TIMER2_A1 +* 0 0000ffda 00000002 + 0000ffda 00000002 rts430x_lc_rd_eabi.lib : int37.asm.obj (.int37) + +TIMER2_A0 +* 0 0000ffdc 00000002 + 0000ffdc 00000002 rts430x_lc_rd_eabi.lib : int38.asm.obj (.int38) + +PORT1 0 0000ffde 00000002 + 0000ffde 00000002 watchdog.obj (.int39) + +TIMER1_A1 +* 0 0000ffe0 00000002 + 0000ffe0 00000002 rts430x_lc_rd_eabi.lib : int40.asm.obj (.int40) + +TIMER1_A0 +* 0 0000ffe2 00000002 + 0000ffe2 00000002 rts430x_lc_rd_eabi.lib : int41.asm.obj (.int41) + +DMA 0 0000ffe4 00000002 + 0000ffe4 00000002 rts430x_lc_rd_eabi.lib : int42.asm.obj (.int42) + +EUSCI_A1 0 0000ffe6 00000002 + 0000ffe6 00000002 uart.obj (.int43) + +TIMER0_A1 +* 0 0000ffe8 00000002 + 0000ffe8 00000002 watchdog.obj (.int44) + +TIMER0_A0 +* 0 0000ffea 00000002 + 0000ffea 00000002 rts430x_lc_rd_eabi.lib : int45.asm.obj (.int45) + +ADC12_B 0 0000ffec 00000002 + 0000ffec 00000002 adc.obj (.int46) + +EUSCI_B0 0 0000ffee 00000002 + 0000ffee 00000002 rts430x_lc_rd_eabi.lib : int47.asm.obj (.int47) + +EUSCI_A0 0 0000fff0 00000002 + 0000fff0 00000002 uart.obj (.int48) + +WDT 0 0000fff2 00000002 + 0000fff2 00000002 RoverStateManager.obj (.int49) + +TIMER0_B1 +* 0 0000fff4 00000002 + 0000fff4 00000002 rts430x_lc_rd_eabi.lib : int50.asm.obj (.int50) + +TIMER0_B0 +* 0 0000fff6 00000002 + 0000fff6 00000002 rts430x_lc_rd_eabi.lib : int51.asm.obj (.int51) + +COMP_E 0 0000fff8 00000002 + 0000fff8 00000002 rts430x_lc_rd_eabi.lib : int52.asm.obj (.int52) + +UNMI 0 0000fffa 00000002 + 0000fffa 00000002 rts430x_lc_rd_eabi.lib : int53.asm.obj (.int53) + +SYSNMI 0 0000fffc 00000002 + 0000fffc 00000002 rts430x_lc_rd_eabi.lib : int54.asm.obj (.int54) + +.reset 0 0000fffe 00000002 + 0000fffe 00000002 rts430x_lc_rd_eabi.lib : boot.c.obj (.reset) + +.const 0 000046f8 00008993 + 000046f8 000026f2 RoverStateBase.obj (.const:.string) + 00006dea 00000c46 RoverStateEnteringMission.obj (.const:.string) + 00007a30 00000970 RoverStateEnteringKeepAlive.obj (.const:.string) + 000083a0 000008e0 RoverStateInit.obj (.const:.string) + 00008c80 000007f2 i2c_sensors.obj (.const:.string) + 00009472 00000640 RoverStateMission.obj (.const:.string) + 00009ab2 00000590 RoverStateService.obj (.const:.string) + 0000a042 00000478 watchdog_cmd_msgs.obj (.const:.string) + 0000a4ba 000003f4 hercules_comms.obj (.const:.string) + 0000a8ae 000003f2 bsp.obj (.const:.string) + 0000aca0 000003d0 RoverStateKeepAlive.obj (.const:.string) + 0000b070 00000364 RoverStateManager.obj (.const:.string) + 0000b3d4 0000034c RoverStateEnteringService.obj (.const:.string) + 0000b720 000002e8 blimp.obj (.const:.string) + 0000ba08 0000024e lander_comms.obj (.const:.string) + 0000bc56 00000222 hercules_mpsm.obj (.const:.string) + 0000be78 0000021c watchdog.obj (.const:.string) + 0000c094 0000021a uart.obj (.const:.string) + 0000c2ae 00000140 debug_comms.obj (.const:.string) + 0000c3ee 000000fa i2c.obj (.const:.string) + 0000c4e8 000000e8 RoverStateService.obj (.const:_ZTVN4iris17RoverStateServiceE) + 0000c5d0 000000e8 RoverStateKeepAlive.obj (.const:_ZTVN4iris19RoverStateKeepAliveE) + 0000c6b8 000000e8 RoverStateEnteringService.obj (.const:_ZTVN4iris25RoverStateEnteringServiceE) + 0000c7a0 000000e8 RoverStateEnteringKeepAlive.obj (.const:_ZTVN4iris27RoverStateEnteringKeepAliveE) + 0000c888 000000e4 RoverStateBase.obj (.const:_ZTVN4iris14RoverStateBaseE) + 0000c96c 000000e4 RoverStateInit.obj (.const:_ZTVN4iris14RoverStateInitE) + 0000ca50 000000e4 RoverStateMission.obj (.const:_ZTVN4iris17RoverStateMissionE) + 0000cb34 000000e4 RoverStateEnteringMission.obj (.const:_ZTVN4iris25RoverStateEnteringMissionE) + 0000cc18 000000a6 RoverState.obj (.const:.string) + 0000ccbe 00000076 ground_msgs.obj (.const:.string) + 0000cd34 0000006a ip_udp.obj (.const:.string) + 0000cd9e 0000004a event_queue.obj (.const:.string) + 0000cde8 0000003a adc.obj (.const:.string) + 0000ce22 00000028 RoverState.obj (.const) + 0000ce4a 00000025 rts430x_lc_rd_eabi.lib : typeinfo.c.obj (.const:.typeinfo:_ZTSN10__cxxabiv120__si_class_type_infoE) + 0000ce6f 00000001 lander_comms.obj (.const) + 0000ce70 00000025 RoverStateEnteringKeepAlive.obj (.const:.typeinfo:_ZTSN4iris27RoverStateEnteringKeepAliveE) + 0000ce95 00000001 --HOLE-- [fill = 0] + 0000ce96 00000023 RoverStateEnteringMission.obj (.const:.typeinfo:_ZTSN4iris25RoverStateEnteringMissionE) + 0000ceb9 00000001 --HOLE-- [fill = 0] + 0000ceba 00000023 RoverStateEnteringService.obj (.const:.typeinfo:_ZTSN4iris25RoverStateEnteringServiceE) + 0000cedd 00000001 --HOLE-- [fill = 0] + 0000cede 00000022 rts430x_lc_rd_eabi.lib : typeinfo.c.obj (.const:.typeinfo:_ZTSN10__cxxabiv117__class_type_infoE) + 0000cf00 0000001d RoverStateKeepAlive.obj (.const:.typeinfo:_ZTSN4iris19RoverStateKeepAliveE) + 0000cf1d 00000001 --HOLE-- [fill = 0] + 0000cf1e 0000001b RoverStateMission.obj (.const:.typeinfo:_ZTSN4iris17RoverStateMissionE) + 0000cf39 00000001 --HOLE-- [fill = 0] + 0000cf3a 0000001b RoverStateService.obj (.const:.typeinfo:_ZTSN4iris17RoverStateServiceE) + 0000cf55 00000001 --HOLE-- [fill = 0] + 0000cf56 00000018 wd_int_mpsm.obj (.const:.string) + 0000cf6e 00000018 RoverStateBase.obj (.const:.typeinfo:_ZTSN4iris14RoverStateBaseE) + 0000cf86 00000018 RoverStateInit.obj (.const:.typeinfo:_ZTSN4iris14RoverStateInitE) + 0000cf9e 00000014 rts430x_lc_rd_eabi.lib : _printfi_min.c.obj (.const:.string) + 0000cfb2 00000014 uart.obj (.const:uart0Registers) + 0000cfc6 00000014 uart.obj (.const:uart1Registers) + 0000cfda 00000010 rts430x_lc_rd_eabi.lib : typeinfo.c.obj (.const:_ZTVN10__cxxabiv117__class_type_infoE) + 0000cfea 00000010 : typeinfo.c.obj (.const:_ZTVN10__cxxabiv120__si_class_type_infoE) + 0000cffa 0000000d : stdlib_typeinfo.cpp.obj (.const:.typeinfo:_ZTSSt9type_info) + 0000d007 00000001 --HOLE-- [fill = 0] + 0000d008 0000000c : typeinfo.c.obj (.const:.typeinfo:_ZTIN10__cxxabiv117__class_type_infoE) + 0000d014 0000000c : typeinfo.c.obj (.const:.typeinfo:_ZTIN10__cxxabiv120__si_class_type_infoE) + 0000d020 0000000c RoverStateInit.obj (.const:.typeinfo:_ZTIN4iris14RoverStateInitE) + 0000d02c 0000000c RoverStateMission.obj (.const:.typeinfo:_ZTIN4iris17RoverStateMissionE) + 0000d038 0000000c RoverStateService.obj (.const:.typeinfo:_ZTIN4iris17RoverStateServiceE) + 0000d044 0000000c RoverStateKeepAlive.obj (.const:.typeinfo:_ZTIN4iris19RoverStateKeepAliveE) + 0000d050 0000000c RoverStateEnteringMission.obj (.const:.typeinfo:_ZTIN4iris25RoverStateEnteringMissionE) + 0000d05c 0000000c RoverStateEnteringService.obj (.const:.typeinfo:_ZTIN4iris25RoverStateEnteringServiceE) + 0000d068 0000000c RoverStateEnteringKeepAlive.obj (.const:.typeinfo:_ZTIN4iris27RoverStateEnteringKeepAliveE) + 0000d074 00000008 RoverStateBase.obj (.const:.typeinfo:_ZTIN4iris14RoverStateBaseE) + 0000d07c 00000008 rts430x_lc_rd_eabi.lib : stdlib_typeinfo.cpp.obj (.const:.typeinfo:_ZTISt9type_info) + 0000d084 00000007 RoverStateBase.obj (.const:.string:ECHO_HEADER$7) + +.text 0 00010000 0000b552 + 00010000 00000908 ground_msgs.obj (.text:GroundMsgs__generateDetailedReport) + 00010908 00000604 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase26doConditionalResetSpecificERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__ResponsebbbbRb) + 00010f0c 00000494 RoverStateEnteringMission.obj (.text:_ZN4iris25RoverStateEnteringMission8spinOnceERNS_12RoverContextE) + 000113a0 000003ee RoverStateBase.obj (.text:_ZN4iris14RoverStateBase22performWatchdogCommandERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001178e 00000350 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase21initiateNextI2cActionERNS_12RoverContextE) + 00011ade 000002ee bsp.obj (.text:initializeGpios) + 00011dcc 000002e8 watchdog.obj (.text:watchdog_monitor) + 000120b4 00000288 hercules_mpsm.obj (.text:HerculesMpsm__checkForValidHeader) + 0001233c 0000027c RoverStateMission.obj (.text:_ZN4iris17RoverStateMission15handleTimerTickERNS_12RoverContextE) + 000125b8 00000204 i2c_sensors.obj (.text:I2C_Sensors__getActionStatus) + 000127bc 000001fa ip_udp.obj (.text:IpUdp__generateAndSerializeIpUdpHeadersForData) + 000129b6 000001f4 RoverStateService.obj (.text:_ZN4iris17RoverStateService15handleTimerTickERNS_12RoverContextE) + 00012baa 000001d8 i2c_sensors.obj (.text:I2C_Sensors__spinOnce) + 00012d82 000001ce watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeBody) + 00012f50 000001c2 RoverStateInit.obj (.text:_ZN4iris14RoverStateInit12transitionToERNS_12RoverContextE) + 00013112 0000019c RoverStateBase.obj (.text:_ZN4iris14RoverStateBase17landerMsgCallbackEPhjPv) + 000132ae 00000186 RoverStateEnteringMission.obj (.text:_ZN4iris25RoverStateEnteringMission15handleTimerTickERNS_12RoverContextE) + 00013434 0000017a hercules_comms.obj (.text:HerculesComms__tryGetMessage) + 000135ae 00000162 lander_comms.obj (.text:LanderComms__txData) + 00013710 00000160 uart.obj (.text:UART__initState) + 00013870 0000015e RoverStateBase.obj (.text:_ZN4iris14RoverStateBase26handleDownlinkFromHerculesERNS_12RoverContextEP16HercMsgs__HeaderPhj) + 000139ce 00000144 watchdog.obj (.text:watchdog_build_hercules_telem) + 00013b12 00000140 RoverStateManager.obj (.text:_ZN4iris17RoverStateManager4initEv) + 00013c52 0000013e RoverStateBase.obj (.text:_ZN4iris14RoverStateBase19enableHerculesCommsERNS_12RoverContextE) + 00013d90 0000013a RoverStateManager.obj (.text:_ZN4iris17RoverStateManager11handleEventE11Event__Type) + 00013eca 00000138 hercules_msgs.obj (.text:HercMsgs__serializeHeader) + 00014002 00000132 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase26sendDetailedReportToLanderERNS_12RoverContextEb) + 00014134 00000132 rts430x_lc_rd_eabi.lib : _printfi_min.c.obj (.text:_setfield) + 00014266 00000120 lander_comms.obj (.text:LanderComms__tryGetMessage) + 00014386 00000120 RoverStateEnteringKeepAlive.obj (.text:_ZN4iris27RoverStateEnteringKeepAlive15handleTimerTickERNS_12RoverContextE) + 000144a6 0000011c watchdog.obj (.text:watchdog_init) + 000145c2 0000010c bsp.obj (.text:getResetReasonString) + 000146ce 0000010a RoverStateKeepAlive.obj (.text:_ZN4iris19RoverStateKeepAlive8spinOnceERNS_12RoverContextE) + 000147d8 00000108 rts430x_lc_rd_eabi.lib : memory.c.obj (.text:aligned_alloc) + 000148e0 00000100 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase23handleDebugFromHerculesERNS_12RoverContextEP16HercMsgs__HeaderPhj) + 000149e0 000000fc i2c_sensors.obj (.text:I2C_Sensors__writeIoExpanderPortDirectionsBlocking) + 00014adc 000000fc lander_comms.obj (.text:LanderComms__txDataUntilSendOrTimeout) + 00014bd8 000000fa i2c_sensors.obj (.text:I2C_Sensors__readRegNonBlocking) + 00014cd2 000000f0 i2c_sensors.obj (.text:I2C_Sensors__writeIoExpanderBlocking) + 00014dc2 000000f0 rts430x_lc_rd_eabi.lib : fputs.c.obj (.text:fputs) + 00014eb2 000000e8 RoverStateMission.obj (.text:_ZN4iris17RoverStateMission8spinOnceERNS_12RoverContextE) + 00014f9a 000000e8 RoverStateService.obj (.text:_ZN4iris17RoverStateService8spinOnceERNS_12RoverContextE) + 00015082 000000e8 RoverStateEnteringKeepAlive.obj (.text:_ZN4iris27RoverStateEnteringKeepAlive37transitionToWaitingForIoExpanderWriteERNS_12RoverContextE) + 0001516a 000000e6 ground_msgs.obj (.text:GroundMsgs__generateFullEarthHeartbeat) + 00015250 000000e4 uart.obj (.text:UART__flushTx) + 00015334 000000de rts430x_lc_rd_eabi.lib : setvbuf.c.obj (.text:setvbuf) + 00015412 000000dc : _printfi_min.c.obj (.text:__TI_printfi_minimal) + 000154ee 000000da : _printfi_min.c.obj (.text:_pproc_diouxp) + 000155c8 000000da : memory.c.obj (.text:free) + 000156a2 000000d4 hercules_comms.obj (.text:HerculesComms__txHerculesMsg) + 00015776 000000ca RoverStateManager.obj (.text:_ZN4iris17RoverStateManager11spinForeverEv) + 00015840 000000c8 lander_comms.obj (.text:LanderComms__slipEncodeAndTransmitBuffer) + 00015908 000000c2 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase13heaterControlERNS_12RoverContextE) + 000159ca 000000bc bsp.obj (.text:readOnChipInputs) + 00015a86 000000ba RoverStateEnteringKeepAlive.obj (.text:_ZN4iris27RoverStateEnteringKeepAlive8spinOnceERNS_12RoverContextE) + 00015b40 000000b8 slip_encode.obj (.text:SlipEncode__encode) + 00015bf8 000000b6 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase12echoToLanderERNS_12RoverContextEhPKh) + 00015cae 000000b6 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase24handleStrokeFromHerculesERNS_12RoverContextEP16HercMsgs__Header) + 00015d64 000000b4 i2c.obj (.text:I2C__spinOnce) + 00015e18 000000b0 i2c_sensors.obj (.text:I2C_Sensors__writeRegNonBlocking) + 00015ec8 000000b0 ip_udp.obj (.text:udp_checksum) + 00015f78 000000a8 ground_msgs.obj (.text:GroundMsgs__generateFlightEarthHeartbeat) + 00016020 000000a4 uart.obj (.text:UART__transmit) + 000160c4 000000a0 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase19herculesMsgCallbackEP16HercMsgs__HeaderPhjPv) + 00016164 0000009a rts430x_lc_rd_eabi.lib : hostlseek.c.obj (.text:HOSTlseek) + 000161fe 0000009a RoverStateBase.obj (.text:_ZN4iris14RoverStateBase23handleResetFromHerculesERNS_12RoverContextEP16HercMsgs__Header) + 00016298 00000098 cmd_msgs.obj (.text:CmdMsgs__deserializeHeader) + 00016330 00000094 RoverStateMission.obj (.text:_ZN4iris17RoverStateMission19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response) + 000163c4 00000090 hercules_comms.obj (.text:HerculesComms__resetState) + 00016454 00000090 RoverStateEnteringMission.obj (.text:_ZN4iris25RoverStateEnteringMission38transitionToWaitingForIoExpanderWrite1ERNS_12RoverContextE) + 000164e4 0000008a RoverStateBase.obj (.text:_ZN4iris14RoverStateBase18pumpMsgsFromLanderERNS_12RoverContextE) + 0001656e 0000008a RoverStateBase.obj (.text:_ZN4iris14RoverStateBase18sendLanderResponseERNS_12RoverContextER19WdCmdMsgs__Response) + 000165f8 00000088 i2c_sensors.obj (.text:I2C_Sensors__currentMsb) + 00016680 00000088 RoverStateManager.obj (.text:_ZN4iris17RoverStateManager26getStateObjectForStateEnumENS_10RoverStateE) + 00016708 00000086 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__serializeGroundResponse) + 0001678e 00000084 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeDangForceBattStateBody) + 00016812 00000084 RoverStateManager.obj (.text:_ZN4iris17RoverStateManagerC1EPKc) + 00016896 00000084 RoverStateEnteringMission.obj (.text:_ZN4iris25RoverStateEnteringMission38transitionToWaitingForIoExpanderWrite2ERNS_12RoverContextE) + 0001691a 00000082 serialization.obj (.text:Serialization__deserializeAs32Bit) + 0001699c 00000082 serialization.obj (.text:Serialization__serializeAs64Bit) + 00016a1e 00000082 slip_mpsm.obj (.text:SlipMpsm__process) + 00016aa0 00000082 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeMessage) + 00016b22 00000082 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase15handleWdIntEdgeEbRNS_12RoverContextE) + 00016ba4 00000082 RoverStateEnteringMission.obj (.text:_ZN4iris25RoverStateEnteringMission38transitionToWaitingForIoExpanderWrite3ERNS_12RoverContextE) + 00016c26 00000080 RoverState.obj (.text:_ZN4iris13stateToStringENS_10RoverStateE) + 00016ca6 00000080 RoverStateManager.obj (.text:_ZN4iris17RoverStateManager22transitionUntilSettledENS_10RoverStateE) + 00016d26 0000007e rts430x_lc_rd_eabi.lib : _io_perm.c.obj (.text:__TI_wrt_ok) + 00016da4 0000007a i2c_sensors.obj (.text:I2C_Sensors__chargeMsb) + 00016e1e 0000007a slip_mpsm.obj (.text:SlipMpsm__appendData) + 00016e98 00000078 RoverStateEnteringMission.obj (.text:_ZN4iris25RoverStateEnteringMission40transitionToWaitingForFuelGaugeOrTimeoutERNS_12RoverContextE) + 00016f10 00000076 debug_comms.obj (.text:DebugComms__tryPrintfToLanderNonblocking) + 00016f86 00000076 RoverStateEnteringMission.obj (.text:_ZN4iris25RoverStateEnteringMission19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response) + 00016ffc 00000076 RoverStateEnteringService.obj (.text:_ZN4iris25RoverStateEnteringService19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response) + 00017072 00000076 RoverStateEnteringKeepAlive.obj (.text:_ZN4iris27RoverStateEnteringKeepAlive19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response) + 000170e8 00000076 rts430x_lc_rd_eabi.lib : copy_decompress_lzss.c.obj (.text:decompress:lzss:__TI_decompress_lzss) + 0001715e 00000074 : hostrename.c.obj (.text:HOSTrename) + 000171d2 00000074 lander_comms.obj (.text:LanderComms__determineSlipEncodedSize) + 00017246 00000074 rts430x_lc_rd_eabi.lib : fclose.c.obj (.text:__TI_closefile) + 000172ba 00000072 i2c_sensors.obj (.text:I2C_Sensors__ioExpanderWritePort0) + 0001732c 00000072 serialization.obj (.text:Serialization__serializeAs32Bit) + 0001739e 00000070 rts430x_lc_rd_eabi.lib : hostopen.c.obj (.text:HOSTopen) + 0001740e 00000070 i2c_sensors.obj (.text:I2C_Sensors__ioExpanderInitPort0) + 0001747e 00000070 rts430x_lc_rd_eabi.lib : memory.c.obj (.text:split) + 000174ee 0000006e watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeEchoBody) + 0001755c 0000006c rts430x_lc_rd_eabi.lib : hostwrite.c.obj (.text:HOSTwrite) + 000175c8 0000006c hercules_mpsm.obj (.text:HerculesMpsm__process) + 00017634 0000006c ring_buffer.obj (.text:RingBuffer__init) + 000176a0 0000006c adc.obj (.text:adc_init) + 0001770c 0000006a rts430x_lc_rd_eabi.lib : hostread.c.obj (.text:HOSTread) + 00017776 0000006a i2c_sensors.obj (.text:I2C_Sensors__ioExpanderReadPort1) + 000177e0 0000006a i2c_sensors.obj (.text:I2C_Sensors__readControl) + 0001784a 0000006a blimp.obj (.text:blimp_latchResetHigh) + 000178b4 0000006a blimp.obj (.text:blimp_latchResetLow) + 0001791e 0000006a rts430x_lc_rd_eabi.lib : fseek.c.obj (.text:fseek) + 00017988 0000006a ip_udp.obj (.text:ip_checksum) + 000179f2 00000068 serialization.obj (.text:Serialization__serializeAs16Bit) + 00017a5a 00000066 hercules_comms.obj (.text:HerculesComms__uninitialize) + 00017ac0 00000066 hercules_mpsm.obj (.text:HerculesMpsm__initMsg) + 00017b26 00000066 i2c_sensors.obj (.text:I2C_Sensors__ioExpanderInitPort1) + 00017b8c 00000066 i2c_sensors.obj (.text:I2C_Sensors__ioExpanderWritePort1) + 00017bf2 00000066 uart.obj (.text:UART__receive) + 00017c58 00000066 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeSetDebugCommsStateBody) + 00017cbe 00000066 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeSetVSAEStateBody) + 00017d24 00000066 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase26doGndCmdSetDebugCommsStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 00017d8a 00000064 hercules_mpsm.obj (.text:HerculesMpsm__appendData) + 00017dee 00000064 serialization.obj (.text:Serialization__deserializeAs16Bit) + 00017e52 00000064 rts430x_lc_rd_eabi.lib : fflush.c.obj (.text:__TI_doflush) + 00017eb6 00000064 blimp.obj (.text:blimp_initialize) + 00017f1a 00000064 blimp.obj (.text:blimp_latchSetHigh) + 00017f7e 00000064 blimp.obj (.text:blimp_latchSetLow) + 00017fe2 00000062 i2c_sensors.obj (.text:I2C_Sensors__lowPower) + 00018044 00000062 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase24doGndCmdLatchSetPulseLowERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 000180a6 00000062 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase26doGndCmdLatchResetPulseLowERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 00018108 00000062 RoverStateMission.obj (.text:_ZN4iris17RoverStateMission14doGndCmdDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001816a 00000060 serialization.obj (.text:Serialization__serializeAs8Bit) + 000181ca 0000005c hercules_comms.obj (.text:HerculesComms__init) + 00018226 0000005c i2c_sensors.obj (.text:I2C_Sensors__accumulatedChargeLsb) + 00018282 0000005c lander_comms.obj (.text:LanderComms__init) + 000182de 0000005c serialization.obj (.text:Serialization__deserializeAs8Bit) + 0001833a 0000005c watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeClearResetMemoryBody) + 00018396 0000005a blimp.obj (.text:blimp_latchResetOff) + 000183f0 0000005a rts430x_lc_rd_eabi.lib : close.c.obj (.text:close) + 0001844a 0000005a : getdevice.c.obj (.text:getdevice) + 000184a4 00000058 i2c_sensors.obj (.text:I2C_Sensors__accumulatedChargeMsb) + 000184fc 00000058 rts430x_lc_rd_eabi.lib : fflush.c.obj (.text:fflush) + 00018554 00000056 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase20pumpMsgsFromHerculesERNS_12RoverContextE) + 000185aa 00000056 blimp.obj (.text:blimp_latchSetOff) + 00018600 00000054 rts430x_lc_rd_eabi.lib : autoinit.c.obj (.text:__TI_auto_init_nobinit_nopinit_hold_wdt:__TI_auto_init_nobinit_nopinit_hold_wdt) + 00018654 00000052 i2c_sensors.obj (.text:I2C_Sensors__currentLsb) + 000186a6 00000052 i2c_sensors.obj (.text:I2C_Sensors__gaugeTempMsb) + 000186f8 00000052 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase20doGndCmdSetVSAEStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001874a 00000052 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase24doGndCmdSetChargeEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001879c 00000052 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase25doGndCmdSetLatchBattStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 000187ee 00000052 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase26doGndCmdDangForceBattStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 00018840 00000050 i2c_sensors.obj (.text:I2C_Sensors__chargeLsb) + 00018890 00000050 i2c_sensors.obj (.text:I2C_Sensors__gaugeTempLsb) + 000188e0 00000050 i2c_sensors.obj (.text:I2C_Sensors__voltageLsb) + 00018930 00000050 i2c_sensors.obj (.text:I2C_Sensors__voltageMsb) + 00018980 00000050 i2c.obj (.text:I2C__txRegAddress) + 000189d0 00000050 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeSwitchConnModeBody) + 00018a20 00000050 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase14txDownlinkDataERNS_12RoverContextEPvjb) + 00018a70 0000004e rts430x_lc_rd_eabi.lib : hostclose.c.obj (.text:HOSTclose) + 00018abe 0000004e uart.obj (.text:UART__init1) + 00018b0c 0000004e watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeLatchResetPulseLowBody) + 00018b5a 0000004e watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeLatchSetPulseLowBody) + 00018ba8 0000004e watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeResetSpecificBody) + 00018bf6 0000004e watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeSetBattCtrlEnStateBody) + 00018c44 0000004e watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeSetBattEnStateBody) + 00018c92 0000004e watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeSetChargeEnStateBody) + 00018ce0 0000004e watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeSetChargeRegEnStateBody) + 00018d2e 0000004e watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeSetLatchBattStateBody) + 00018d7c 0000004c hercules_mpsm.obj (.text:HerculesMpsm__reset) + 00018dc8 0000004c RoverStateMission.obj (.text:_ZN4iris17RoverStateMission22performWatchdogCommandERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 00018e14 0000004c RoverStateService.obj (.text:_ZN4iris17RoverStateService22performWatchdogCommandERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 00018e60 0000004a i2c_sensors.obj (.text:I2C_Sensors__writeControl) + 00018eaa 0000004a uart.obj (.text:UART__init0) + 00018ef4 0000004a rts430x_lc_rd_eabi.lib : exit.c.obj (.text:exit) + 00018f3e 00000048 uart.obj (.text:UART__checkIfSendable) + 00018f86 00000048 RoverStateKeepAlive.obj (.text:_ZN4iris19RoverStateKeepAlive12transitionToERNS_12RoverContextE) + 00018fce 00000048 rts430x_lc_rd_eabi.lib : _printfi_min.c.obj (.text:_pproc_str) + 00019016 00000046 : hostunlink.c.obj (.text:HOSTunlink) + 0001905c 00000046 hercules_comms.obj (.text:HerculesComms__txDownlinkData) + 000190a2 00000046 hercules_comms.obj (.text:HerculesComms__txUplinkMsg) + 000190e8 00000044 debug_comms.obj (.text:DebugComms__tryStringBufferToLanderNonblocking) + 0001912c 00000044 ip_udp.obj (.text:IpUdp__identifyDataInUdpPacket) + 00019170 00000044 rts430x_lc_rd_eabi.lib : sprintf.c.obj (.text:sprintf) + 000191b4 00000042 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase22doGndCmdSetBattEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 000191f6 00000042 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase27doGndCmdSetChargeRegEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 00019238 00000042 bsp.obj (.text:clockInit) + 0001927a 00000040 event_queue.obj (.text:EventQueue__get) + 000192ba 00000040 hercules_comms.obj (.text:HerculesComms__txResponseMsg) + 000192fa 00000040 i2c.obj (.text:I2C__write) + 0001933a 00000040 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeDeployBody) + 0001937a 00000040 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeEnterKeepAliveModeBody) + 000193ba 00000040 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeEnterServiceModeBody) + 000193fa 00000040 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeEnterSleepModeBody) + 0001943a 00000040 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializePrepForDeployBody) + 0001947a 00000040 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeRequestDetailedReportBody) + 000194ba 00000040 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeSetAutoHeaterOffValueBody) + 000194fa 00000040 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeSetAutoHeaterOnValueBody) + 0001953a 00000040 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeSetHeaterDutyCycleBody) + 0001957a 00000040 watchdog_cmd_msgs.obj (.text:WdCmdMsgs__deserializeSetHeaterDutyCyclePeriodBody) + 000195ba 0000003e i2c.obj (.text:I2C__read) + 000195f8 0000003e uart.obj (.text:UART__checkRxRbErrors) + 00019636 0000003e RoverStateBase.obj (.text:_ZN4iris14RoverStateBase33handleRadioPowerCycleRadioCommandERNS_12RoverContextE) + 00019674 0000003e RoverStateBase.obj (.text:_ZN4iris14RoverStateBase36handleRadioPowerCycleHerculesCommandERNS_12RoverContextE) + 000196b2 0000003e bsp.obj (.text:enableHeater) + 000196f0 0000003e rts430x_lc_rd_eabi.lib : lsl32.asm.obj (.text:l_lsl_const) + 0001972e 0000003e : lseek.c.obj (.text:lseek) + 0001976c 0000003c event_queue.obj (.text:EventQueue__initialize) + 000197a8 0000003c ring_buffer.obj (.text:RingBuffer__get) + 000197e4 0000003c ring_buffer.obj (.text:RingBuffer__peekAt) + 00019820 0000003c ring_buffer.obj (.text:RingBuffer__put) + 0001985c 0000003c RoverStateBase.obj (.text:_ZN4iris14RoverStateBase26doGndCmdSetHeaterDutyCycleERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 00019898 0000003c rts430x_lc_rd_eabi.lib : write.c.obj (.text:write) + 000198d4 0000003a ring_buffer.obj (.text:RingBuffer__putOverwrite) + 0001990e 0000003a RoverStateService.obj (.text:_ZN4iris17RoverStateService24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 00019948 0000003a RoverStateEnteringService.obj (.text:_ZN4iris25RoverStateEnteringService26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 00019982 0000003a rts430x_lc_rd_eabi.lib : lsr64.c.obj (.text:__mspabi_srlll) + 000199bc 0000003a : vsprintf.c.obj (.text:vsprintf) + 000199f6 00000038 hercules_comms.obj (.text:HerculesComms__transmitBuffer) + 00019a2e 00000038 hercules_mpsm.obj (.text:HerculesMpsm__checkRb) + 00019a66 00000038 lander_comms.obj (.text:LanderComms__transmitBuffer) + 00019a9e 00000038 uart.obj (.text:UART__uninit0) + 00019ad6 00000038 RoverStateEnteringKeepAlive.obj (.text:_ZN4iris27RoverStateEnteringKeepAlive25transitionToFinishUpSetupERNS_12RoverContextE) + 00019b0e 00000036 uart.obj (.text:UART__checkRxZerosMaxCountSinceLastCheck) + 00019b44 00000036 uart.obj (.text:UART__uart1Init) + 00019b7a 00000036 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase12doGndCmdEchoERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 00019bb0 00000036 RoverStateMission.obj (.text:_ZN4iris17RoverStateMission12transitionToERNS_12RoverContextE) + 00019be6 00000036 rts430x_lc_rd_eabi.lib : fopen.c.obj (.text:__TI_cleanup) + 00019c1c 00000036 : trgmsg.c.obj (.text:__TI_writemsg) + 00019c52 00000034 uart.obj (.text:UART__uart0Init) + 00019c86 00000034 adc.obj (.text:adcCheckVoltageLevels) + 00019cba 00000034 blimp.obj (.text:blimp_latchBattUpdate) + 00019cee 00000034 blimp.obj (.text:blimp_normalBoot) + 00019d22 00000032 i2c_sensors.obj (.text:I2C_Sensors__initiateWriteIoExpander) + 00019d54 00000032 i2c.obj (.text:I2C__getTransactionStatus) + 00019d86 00000032 RoverStateKeepAlive.obj (.text:_ZN4iris19RoverStateKeepAlive15handleTimerTickERNS_12RoverContextE) + 00019db8 00000032 RoverStateEnteringKeepAlive.obj (.text:_ZN4iris27RoverStateEnteringKeepAlive18handleHerculesDataERNS_12RoverContextE) + 00019dea 00000032 rts430x_lc_rd_eabi.lib : trgmsg.c.obj (.text:__TI_readmsg) + 00019e1c 00000032 blimp.obj (.text:blimp_bstat_dangerous_forceHigh) + 00019e4e 00000032 blimp.obj (.text:blimp_bstat_dangerous_forceLow) + 00019e80 00000032 blimp.obj (.text:blimp_bstat_safe_restoreInput) + 00019eb2 00000032 blimp.obj (.text:blimp_vSysAllEnOff) + 00019ee4 00000032 rts430x_lc_rd_eabi.lib : strncpy.c.obj (.text:strncpy) + 00019f16 00000030 debug_comms.obj (.text:DebugComms__flush) + 00019f46 00000030 i2c.obj (.text:I2C__rxStart) + 00019f76 00000030 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase25handleRadioGotWifiCommandERNS_12RoverContextE) + 00019fa6 00000030 RoverStateMission.obj (.text:_ZN4iris17RoverStateMission24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 00019fd6 00000030 RoverStateService.obj (.text:_ZN4iris17RoverStateService26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001a006 00000030 blimp.obj (.text:blimp_bstat) + 0001a036 00000030 rts430x_lc_rd_eabi.lib : unlink.c.obj (.text:unlink) + 0001a066 0000002e hercules_comms.obj (.text:HerculesComms__flushTx) + 0001a094 0000002e hercules_mpsm.obj (.text:HerculesMpsm__peekRb) + 0001a0c2 0000002e i2c_sensors.obj (.text:I2C_Sensors__initiateIoExpanderInitialization) + 0001a0f0 0000002e i2c.obj (.text:I2C__init) + 0001a11e 0000002e lander_comms.obj (.text:LanderComms__flushTx) + 0001a14c 0000002e RoverStateBase.obj (.text:_ZN4iris14RoverStateBase24doGndCmdClearResetMemoryERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001a17a 0000002e RoverStateInit.obj (.text:_ZN4iris14RoverStateInitC1ENS_10RoverStateEPKc) + 0001a1a8 0000002e blimp.obj (.text:blimp_chargerEnOff) + 0001a1d6 0000002e blimp.obj (.text:blimp_latchResetPulseLow) + 0001a204 0000002e blimp.obj (.text:blimp_latchSetPulseLow) + 0001a232 0000002e blimp.obj (.text:blimp_vSysAllEnForceLow) + 0001a260 0000002e blimp.obj (.text:blimp_vSysAllEnOn) + 0001a28e 0000002e rts430x_lc_rd_eabi.lib : getdevice.c.obj (.text:finddevice) + 0001a2bc 0000002e main.obj (.text:main) + 0001a2ea 0000002c i2c_sensors.obj (.text:I2C_Sensors__getIoExpanderPortDirections) + 0001a316 0000002c i2c.obj (.text:I2C__waitForStop) + 0001a342 0000002c RoverStateBase.obj (.text:_ZN4iris14RoverStateBase32doGndCmdSetHeaterDutyCyclePeriodERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001a36e 0000002c RoverStateMission.obj (.text:_ZN4iris17RoverStateMissionC1Ev) + 0001a39a 0000002c RoverStateEnteringMission.obj (.text:_ZN4iris25RoverStateEnteringMission29transitionToWaitingForI2cDoneERNS_12RoverContextE) + 0001a3c6 0000002c MSPMPU_INIT_LIB_CCS_msp430_large_code_restricted_data.lib : mpu_init.o (.text:__mpu_init) + 0001a3f2 0000002c rts430x_lc_rd_eabi.lib : memory.c.obj (.text:free_list_insert) + 0001a41e 0000002a i2c.obj (.text:I2C__txData) + 0001a448 0000002a RoverStateBase.obj (.text:_ZN4iris14RoverStateBase28doGndCmdSetAutoHeaterOnValueERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001a472 0000002a RoverStateBase.obj (.text:_ZN4iris14RoverStateBase29doGndCmdSetAutoHeaterOffValueERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001a49c 0000002a RoverStateEnteringKeepAlive.obj (.text:_ZN4iris27RoverStateEnteringKeepAlive12transitionToERNS_12RoverContextE) + 0001a4c6 0000002a blimp.obj (.text:blimp_chargerEnForceHigh) + 0001a4f0 0000002a blimp.obj (.text:blimp_chargerEnOn) + 0001a51a 0000002a rts430x_lc_rd_eabi.lib : memory.c.obj (.text:free_list_remove) + 0001a544 00000028 slip_mpsm.obj (.text:SlipMpsm__initMsg) + 0001a56c 00000028 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase21doGndCmdResetSpecificERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001a594 00000028 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase22handleUplinkFromLanderERNS_12RoverContextEPhj) + 0001a5bc 00000026 event_queue.obj (.text:EventQueue__put) + 0001a5e2 00000026 i2c.obj (.text:I2C__checkAck) + 0001a608 00000026 i2c.obj (.text:I2C__confirmStart) + 0001a62e 00000026 i2c.obj (.text:I2C__rxDataAndStop) + 0001a654 00000026 i2c.obj (.text:I2C__txStart) + 0001a67a 00000026 RoverStateMission.obj (.text:_ZN4iris17RoverStateMission13heaterControlERNS_12RoverContextE) + 0001a6a0 00000026 bsp.obj (.text:setHerculesReset) + 0001a6c6 00000024 i2c_sensors.obj (.text:I2C_Sensors__initiateGaugeReadings) + 0001a6ea 00000024 i2c_sensors.obj (.text:I2C_Sensors__initiateReadControl) + 0001a70e 00000024 RoverStateEnteringMission.obj (.text:_ZN4iris25RoverStateEnteringMissionC1Ev) + 0001a732 00000024 RoverStateEnteringService.obj (.text:_ZN4iris25RoverStateEnteringService24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001a756 00000024 RoverStateEnteringService.obj (.text:_ZN4iris25RoverStateEnteringServiceC1ENS_10RoverStateE) + 0001a77a 00000024 RoverStateEnteringService.obj (.text:_ZN4iris25RoverStateEnteringServiceC1Ev) + 0001a79e 00000024 RoverStateEnteringKeepAlive.obj (.text:_ZN4iris27RoverStateEnteringKeepAlive26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001a7c2 00000024 RoverStateEnteringKeepAlive.obj (.text:_ZN4iris27RoverStateEnteringKeepAliveC1ENS_10RoverStateE) + 0001a7e6 00000024 RoverStateEnteringKeepAlive.obj (.text:_ZN4iris27RoverStateEnteringKeepAliveC1Ev) + 0001a80a 00000024 rts430x_lc_rd_eabi.lib : copy_zero_init.c.obj (.text:decompress:ZI:__TI_zero_init) + 0001a82e 00000024 bsp.obj (.text:disableHeater) + 0001a852 00000024 bsp.obj (.text:disableUart0Pins) + 0001a876 00000022 i2c_sensors.obj (.text:I2C_Sensors__initiateReadIoExpander) + 0001a898 00000022 i2c_sensors.obj (.text:I2C_Sensors__initiateWriteLowPower) + 0001a8ba 00000022 i2c.obj (.text:I2C__stop) + 0001a8dc 00000022 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase29doGndCmdRequestDetailedReportERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001a8fe 00000022 RoverStateService.obj (.text:_ZN4iris17RoverStateServiceC1Ev) + 0001a920 00000022 RoverStateKeepAlive.obj (.text:_ZN4iris19RoverStateKeepAliveC1Ev) + 0001a942 00000022 RoverStateEnteringMission.obj (.text:_ZN4iris25RoverStateEnteringMission41transitionToWatitingForWifiReadyOrTimeoutERNS_12RoverContextE) + 0001a964 00000020 i2c_sensors.obj (.text:I2C_Sensors__initiateFuelGaugeInitialization) + 0001a984 00000020 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase21handleWdIntRisingEdgeERNS_12RoverContextE) + 0001a9a4 00000020 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase22handleWdIntFallingEdgeERNS_12RoverContextE) + 0001a9c4 00000020 RoverStateBase.obj (.text:_ZN4iris14RoverStateBaseC1ENS_10RoverStateE) + 0001a9e4 00000020 rts430x_lc_rd_eabi.lib : sprintf.c.obj (.text:_outs) + 0001aa04 00000020 : vsprintf.c.obj (.text:_outs) + 0001aa24 0000001e i2c_sensors.obj (.text:I2C_Sensors__clearLastAction) + 0001aa42 0000001e i2c_sensors.obj (.text:I2C_Sensors__writeIoExpanderCurrentValuesBlocking) + 0001aa60 0000001e ring_buffer.obj (.text:RingBuffer__full) + 0001aa7e 0000001e RoverStateBase.obj (.text:_ZN4iris14RoverStateBase14doGndCmdDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001aa9c 0000001e RoverStateBase.obj (.text:_ZN4iris14RoverStateBase16handleLanderDataERNS_12RoverContextE) + 0001aaba 0000001e RoverStateBase.obj (.text:_ZN4iris14RoverStateBase18handleHerculesDataERNS_12RoverContextE) + 0001aad8 0000001e RoverStateBase.obj (.text:_ZN4iris14RoverStateBase21doGndCmdPrepForDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001aaf6 0000001e RoverStateBase.obj (.text:_ZN4iris14RoverStateBase22doGndCmdEnterSleepModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001ab14 0000001e RoverStateBase.obj (.text:_ZN4iris14RoverStateBase24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001ab32 0000001e RoverStateBase.obj (.text:_ZN4iris14RoverStateBase26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001ab50 0000001e RoverStateBase.obj (.text:_ZN4iris14RoverStateBase26doGndCmdSetBattCtrlEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001ab6e 0000001e RoverStateInit.obj (.text:_ZN4iris14RoverStateInit14handleHighTempERNS_12RoverContextE) + 0001ab8c 0000001e RoverStateInit.obj (.text:_ZN4iris14RoverStateInit15handleTimerTickERNS_12RoverContextE) + 0001abaa 0000001e RoverStateInit.obj (.text:_ZN4iris14RoverStateInit16handleLanderDataERNS_12RoverContextE) + 0001abc8 0000001e RoverStateInit.obj (.text:_ZN4iris14RoverStateInit16handlePowerIssueERNS_12RoverContextE) + 0001abe6 0000001e RoverStateInit.obj (.text:_ZN4iris14RoverStateInit18handleHerculesDataERNS_12RoverContextE) + 0001ac04 0000001e RoverStateInit.obj (.text:_ZN4iris14RoverStateInit19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response) + 0001ac22 0000001e RoverStateInit.obj (.text:_ZN4iris14RoverStateInit8spinOnceERNS_12RoverContextE) + 0001ac40 0000001e RoverStateKeepAlive.obj (.text:_ZN4iris19RoverStateKeepAlive18handleHerculesDataERNS_12RoverContextE) + 0001ac5e 0000001e RoverStateEnteringMission.obj (.text:_ZN4iris25RoverStateEnteringMission12transitionToERNS_12RoverContextE) + 0001ac7c 0000001e RoverStateEnteringService.obj (.text:_ZN4iris25RoverStateEnteringService12transitionToERNS_12RoverContextE) + 0001ac9a 0000001e blimp.obj (.text:blimp_battEnOff) + 0001acb8 0000001e blimp.obj (.text:blimp_latchBattOff) + 0001acd6 0000001e blimp.obj (.text:blimp_regEnOff) + 0001acf4 0000001e bsp.obj (.text:enableUart1Pins) + 0001ad12 0000001e rts430x_lc_rd_eabi.lib : memccpy.c.obj (.text:memccpy) + 0001ad30 0000001e bsp.obj (.text:releaseHerculesReset) + 0001ad4e 0000001c RoverStateBase.obj (.text:_ZN4iris14RoverStateBase22doGndCmdSwitchConnModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001ad6a 0000001c rts430x_lc_rd_eabi.lib : strchr.c.obj (.text:strchr) + 0001ad86 0000001c : strcmp.c.obj (.text:strcmp) + 0001ada2 0000001a hercules_comms.obj (.text:HerculesComms__isInitialized) + 0001adbc 0000001a uart.obj (.text:UART__isInitialized) + 0001add6 0000001a wd_int_mpsm.obj (.text:WdIntMpsm__processEdge) + 0001adf0 0000001a RoverStateMission.obj (.text:_ZN4iris17RoverStateMission20canEnterLowPowerModeERNS_12RoverContextE) + 0001ae0a 0000001a RoverStateService.obj (.text:_ZN4iris17RoverStateService12transitionToERNS_12RoverContextE) + 0001ae24 0000001a RoverStateService.obj (.text:_ZN4iris17RoverStateService20canEnterLowPowerModeERNS_12RoverContextE) + 0001ae3e 0000001a RoverStateKeepAlive.obj (.text:_ZN4iris19RoverStateKeepAlive20canEnterLowPowerModeERNS_12RoverContextE) + 0001ae58 0000001a RoverStateEnteringService.obj (.text:_ZN4iris25RoverStateEnteringService18handleHerculesDataERNS_12RoverContextE) + 0001ae72 0000001a rts430x_lc_rd_eabi.lib : assert.c.obj (.text:_abort_msg) + 0001ae8c 0000001a blimp.obj (.text:blimp_battEnOn) + 0001aea6 0000001a blimp.obj (.text:blimp_latchBattOn) + 0001aec0 0000001a bsp.obj (.text:enableUart0Pins) + 0001aeda 00000018 ring_buffer.obj (.text:RingBuffer__empty) + 0001aef2 00000018 ring_buffer.obj (.text:RingBuffer__freeCount) + 0001af0a 00000018 RoverStateService.obj (.text:_ZN4iris17RoverStateService21doGndCmdPrepForDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001af22 00000018 RoverStateKeepAlive.obj (.text:_ZN4iris19RoverStateKeepAlive24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001af3a 00000018 RoverStateKeepAlive.obj (.text:_ZN4iris19RoverStateKeepAlive26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb) + 0001af52 00000018 blimp.obj (.text:blimp_regEnOn) + 0001af6a 00000018 bsp.obj (.text:powerOffRadio) + 0001af82 00000018 rts430x_lc_rd_eabi.lib : mult16_f5hw.asm.obj (.text) + 0001af9a 00000018 bsp.obj (.text:setFPGAReset) + 0001afb2 00000016 i2c_sensors.obj (.text:I2C_Sensors__initiateWriteIoExpanderCurrentValues) + 0001afc8 00000016 rts430x_lc_rd_eabi.lib : typeinfo.c.obj (.text:_ZN10__cxxabiv120__si_class_type_infoD0Ev) + 0001afde 00000016 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase14handleHighTempERNS_12RoverContextE) + 0001aff4 00000016 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase28handleRadioExitStasisCommandERNS_12RoverContextE) + 0001b00a 00000016 RoverStateMission.obj (.text:_ZN4iris17RoverStateMission16handlePowerIssueERNS_12RoverContextE) + 0001b020 00000016 RoverStateService.obj (.text:_ZN4iris17RoverStateService16handlePowerIssueERNS_12RoverContextE) + 0001b036 00000016 RoverStateKeepAlive.obj (.text:_ZN4iris19RoverStateKeepAlive16handlePowerIssueERNS_12RoverContextE) + 0001b04c 00000016 RoverStateEnteringMission.obj (.text:_ZN4iris25RoverStateEnteringMission16handlePowerIssueERNS_12RoverContextE) + 0001b062 00000016 RoverStateEnteringService.obj (.text:_ZN4iris25RoverStateEnteringService16handlePowerIssueERNS_12RoverContextE) + 0001b078 00000016 RoverStateEnteringKeepAlive.obj (.text:_ZN4iris27RoverStateEnteringKeepAlive16handlePowerIssueERNS_12RoverContextE) + 0001b08e 00000016 RoverStateEnteringKeepAlive.obj (.text:_ZN4iris27RoverStateEnteringKeepAlive22handleUplinkFromLanderERNS_12RoverContextEPhj) + 0001b0a4 00000016 bsp.obj (.text:disable3V3PowerRail) + 0001b0ba 00000016 bsp.obj (.text:enableWdIntFallingEdgeInterrupt) + 0001b0d0 00000016 bsp.obj (.text:enableWdIntRisingEdgeInterrupt) + 0001b0e6 00000016 bsp.obj (.text:fpgaCameraSelectLo) + 0001b0fc 00000016 rts430x_lc_rd_eabi.lib : memory.c.obj (.text:heap_start) + 0001b112 00000016 : memchr.c.obj (.text:memchr) + 0001b128 00000016 : memset.c.obj (.text:memset) + 0001b13e 00000016 bsp.obj (.text:powerOnRadio) + 0001b154 00000016 bsp.obj (.text:releaseFPGAReset) + 0001b16a 00000016 rts430x_lc_rd_eabi.lib : div16u.asm.obj (.text) + 0001b180 00000016 bsp.obj (.text:setRadioReset) + 0001b196 00000016 bsp.obj (.text:startChargingBatteries) + 0001b1ac 00000016 bsp.obj (.text:unsetDeploy) + 0001b1c2 00000014 debug_comms.obj (.text:DebugComms__registerHerculesComms) + 0001b1d6 00000014 debug_comms.obj (.text:DebugComms__registerLanderComms) + 0001b1ea 00000014 debug_comms.obj (.text:DebugComms__setEnabled) + 0001b1fe 00000014 ring_buffer.obj (.text:RingBuffer__clear) + 0001b212 00000014 ring_buffer.obj (.text:RingBuffer__usedCount) + 0001b226 00000014 rts430x_lc_rd_eabi.lib : typeinfo.c.obj (.text:_ZN10__cxxabiv117__class_type_infoD0Ev) + 0001b23a 00000014 RoverStateBase.obj (.text:_ZN4iris14RoverStateBase8getStateEv) + 0001b24e 00000014 rts430x_lc_rd_eabi.lib : sprintf.c.obj (.text:_outc) + 0001b262 00000014 : vsprintf.c.obj (.text:_outc) + 0001b276 00000014 : memcpy.c.obj (.text:memcpy) + 0001b28a 00000014 bsp.obj (.text:powerOffFpga) + 0001b29e 00000014 bsp.obj (.text:powerOffHercules) + 0001b2b2 00000014 bsp.obj (.text:powerOffMotors) + 0001b2c6 00000014 bsp.obj (.text:releaseRadioReset) + 0001b2da 00000012 i2c_sensors.obj (.text:I2C_Sensors__stop) + 0001b2ec 00000012 rts430x_lc_rd_eabi.lib : copy_decompress_none.c.obj (.text:decompress:none:__TI_decompress_none) + 0001b2fe 00000012 bsp.obj (.text:enable3V3PowerRail) + 0001b310 00000012 adc.obj (.text:isAdcSampleDone) + 0001b322 00000012 rts430x_lc_rd_eabi.lib : strcpy.c.obj (.text:strcpy) + 0001b334 00000010 bsp.obj (.text:fpgaCameraSelectHi) + 0001b344 00000010 bsp.obj (.text:getWdIntState) + 0001b354 00000010 main.obj (.text:hook_sp_check) + 0001b364 00000010 rts430x_lc_rd_eabi.lib : lsr32.asm.obj (.text:l_lsr) + 0001b374 00000010 bsp.obj (.text:powerOnFpga) + 0001b384 00000010 bsp.obj (.text:powerOnHercules) + 0001b394 00000010 bsp.obj (.text:powerOnMotors) + 0001b3a4 00000010 bsp.obj (.text:setDeploy) + 0001b3b4 0000000e i2c_sensors.obj (.text:I2C_Sensors__init) + 0001b3c2 0000000e rts430x_lc_rd_eabi.lib : typeinfo.c.obj (.text:_ZN10__cxxabiv117__class_type_infoD1Ev) + 0001b3d0 0000000e : typeinfo.c.obj (.text:_ZN10__cxxabiv120__si_class_type_infoD1Ev) + 0001b3de 0000000e RoverStateBase.obj (.text:_ZN4iris14RoverStateBase29handleRadioEnterStasisCommandERNS_12RoverContextE) + 0001b3ec 0000000e blimp.obj (.text:blimp_batteryState) + 0001b3fa 0000000e rts430x_lc_rd_eabi.lib : strlen.c.obj (.text:strlen) + 0001b408 0000000e watchdog.obj (.text:watchdog_get_wd_int_flat_duration) + 0001b416 0000000c RoverStateBase.obj (.text:_ZN4iris14RoverStateBase20canEnterLowPowerModeERNS_12RoverContextE) + 0001b422 0000000c RoverStateInit.obj (.text:_ZN4iris14RoverStateInit20canEnterLowPowerModeERNS_12RoverContextE) + 0001b42e 0000000c RoverStateEnteringMission.obj (.text:_ZN4iris25RoverStateEnteringMission20canEnterLowPowerModeERNS_12RoverContextE) + 0001b43a 0000000c RoverStateEnteringService.obj (.text:_ZN4iris25RoverStateEnteringService28nextStateAfterSetupCompletesEv) + 0001b446 0000000c RoverStateEnteringService.obj (.text:_ZN4iris25RoverStateEnteringService8spinOnceERNS_12RoverContextE) + 0001b452 0000000c RoverStateEnteringKeepAlive.obj (.text:_ZN4iris27RoverStateEnteringKeepAlive20canEnterLowPowerModeERNS_12RoverContextE) + 0001b45e 0000000c RoverStateEnteringKeepAlive.obj (.text:_ZN4iris27RoverStateEnteringKeepAlive28nextStateAfterSetupCompletesEv) + 0001b46a 0000000a rts430x_lc_rd_eabi.lib : new.cpp.obj (.text:_ZdlPv) + 0001b474 0000000a bsp.obj (.text:disableBatteries) + 0001b47e 0000000a bsp.obj (.text:enableBatteries) + 0001b488 0000000a bsp.obj (.text:releaseMotorsReset) + 0001b492 0000000a rts430x_lc_rd_eabi.lib : lsl16.asm.obj (.text) + 0001b49c 0000000a : lsr16.asm.obj (.text) + 0001b4a6 0000000a bsp.obj (.text:setMotorsReset) + 0001b4b0 0000000a bsp.obj (.text:stopChargingBatteries) + 0001b4ba 00000008 rts430x_lc_rd_eabi.lib : pure_virt.c.obj (.text:__cxa_pure_virtual) + 0001b4c2 00000008 : memory.c.obj (.text:malloc) + 0001b4ca 00000008 bsp.obj (.text:releaseMotor1Reset) + 0001b4d2 00000008 bsp.obj (.text:releaseMotor2Reset) + 0001b4da 00000008 bsp.obj (.text:releaseMotor3Reset) + 0001b4e2 00000008 bsp.obj (.text:releaseMotor4Reset) + 0001b4ea 00000008 bsp.obj (.text:setMotor1Reset) + 0001b4f2 00000008 bsp.obj (.text:setMotor2Reset) + 0001b4fa 00000008 bsp.obj (.text:setMotor3Reset) + 0001b502 00000008 bsp.obj (.text:setMotor4Reset) + 0001b50a 00000006 i2c_sensors.obj (.text:I2C_Sensors__clearIoExpanderPort0OutputBits) + 0001b510 00000006 i2c_sensors.obj (.text:I2C_Sensors__clearIoExpanderPort1OutputBits) + 0001b516 00000006 i2c_sensors.obj (.text:I2C_Sensors__setIoExpanderPort0OutputBits) + 0001b51c 00000006 i2c_sensors.obj (.text:I2C_Sensors__setIoExpanderPort1OutputBits) + 0001b522 00000006 time.obj (.text:Time__getPointerToCentisecondCount) + 0001b528 00000006 time.obj (.text:Time__getTimeInCentiseconds) + 0001b52e 00000006 rts430x_lc_rd_eabi.lib : exit.c.obj (.text:abort) + 0001b534 00000006 bsp.obj (.text:disableVSysAllPowerRail) + 0001b53a 00000006 bsp.obj (.text:enableVSysAllPowerRail) + 0001b540 00000004 rts430x_lc_rd_eabi.lib : new.cpp.obj (.text:_ZdlPvj) + 0001b544 00000004 : error.c.obj (.text:__abort_execution) + 0001b548 00000004 : pre_init.c.obj (.text:_system_pre_init) + 0001b54c 00000002 : stdlib_typeinfo.cpp.obj (.text:_ZNSt9type_infoD1Ev) + 0001b54e 00000002 : _lock.c.obj (.text:_nop) + 0001b550 00000002 : startup.c.obj (.text:_system_post_cinit) + +MODULE SUMMARY + + Module code ro data rw data + ------ ---- ------- ------- + ./src/ + watchdog.obj 1514 544 12 + main.obj 62 0 0 + +--+---------------------------------+-------+---------+---------+ + Total: 1576 544 12 + + ./src/comms/ + i2c_sensors.obj 4092 2034 52 + watchdog_cmd_msgs.obj 2608 1144 0 + lander_comms.obj 1404 591 1277 + hercules_comms.obj 1260 1012 846 + ground_msgs.obj 2710 118 1 + hercules_mpsm.obj 1136 546 26 + ip_udp.obj 856 106 0 + debug_comms.obj 294 320 265 + hercules_msgs.obj 312 0 0 + slip_mpsm.obj 292 0 4 + slip_encode.obj 184 0 0 + cmd_msgs.obj 152 0 0 + wd_int_mpsm.obj 26 24 0 + +--+---------------------------------+-------+---------+---------+ + Total: 15326 5895 2471 + + ./src/drivers/ + bsp.obj 2096 1010 4 + uart.obj 1778 582 52 + blimp.obj 1534 744 4 + i2c.obj 802 250 8 + adc.obj 330 60 8 + +--+---------------------------------+-------+---------+---------+ + Total: 6540 2646 76 + + ./src/event/ + event_queue.obj 162 74 6 + +--+---------------------------------+-------+---------+---------+ + Total: 162 74 6 + + ./src/stateMachine/ + RoverStateBase.obj 8266 10237 171 + RoverStateEnteringMission.obj 2384 3417 24 + RoverStateManager.obj 1248 870 3074 + RoverStateEnteringKeepAlive.obj 1148 2697 4 + RoverStateMission.obj 1422 1867 24 + RoverStateInit.obj 718 2536 0 + RoverStateService.obj 1046 1695 24 + RoverStateKeepAlive.obj 548 1249 0 + RoverStateEnteringService.obj 386 1123 0 + RoverState.obj 128 206 0 + +--+---------------------------------+-------+---------+---------+ + Total: 17294 25897 3321 + + ./src/utils/ + serialization.obj 766 0 0 + ring_buffer.obj 464 0 82 + time.obj 12 0 2 + +--+---------------------------------+-------+---------+---------+ + Total: 1242 0 84 + + /home/iris/ti/ccs910/ccs/ccs_base/msp430/lib/FR59xx/MSPMPU_INIT_LIB_CCS_msp430_large_code_restricted_data.lib + mpu_init.o 44 0 0 + +--+---------------------------------+-------+---------+---------+ + Total: 44 0 0 + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/rts430x_lc_rd_eabi.lib + _printfi_min.c.obj 816 20 0 + memory.c.obj 710 0 6 + trgmsg.c.obj 104 0 288 + defs.c.obj 0 0 362 + fputs.c.obj 240 0 0 + setvbuf.c.obj 222 0 0 + typeinfo.c.obj 70 127 0 + fflush.c.obj 188 0 0 + host_device.c.obj 0 0 180 + hostlseek.c.obj 154 0 0 + getdevice.c.obj 136 0 0 + _io_perm.c.obj 126 0 0 + hostopen.c.obj 112 0 8 + sprintf.c.obj 120 0 0 + copy_decompress_lzss.c.obj 118 0 0 + fclose.c.obj 116 0 0 + hostrename.c.obj 116 0 0 + vsprintf.c.obj 110 0 0 + hostwrite.c.obj 108 0 0 + fseek.c.obj 106 0 0 + hostread.c.obj 106 0 0 + close.c.obj 90 0 0 + autoinit.c.obj 84 0 0 + exit.c.obj 80 0 2 + hostclose.c.obj 78 0 0 + hostunlink.c.obj 70 0 0 + lseek.c.obj 62 0 0 + lsl32.asm.obj 62 0 0 + write.c.obj 60 0 0 + lsr64.c.obj 58 0 0 + fopen.c.obj 54 0 0 + strncpy.c.obj 50 0 0 + unlink.c.obj 48 0 0 + copy_zero_init.c.obj 36 0 0 + boot.c.obj 32 2 0 + memccpy.c.obj 30 0 0 + strchr.c.obj 28 0 0 + strcmp.c.obj 28 0 0 + assert.c.obj 26 0 0 + mult16_f5hw.asm.obj 24 0 0 + stdlib_typeinfo.cpp.obj 2 21 0 + div16u.asm.obj 22 0 0 + memchr.c.obj 22 0 0 + memset.c.obj 22 0 0 + memcpy.c.obj 20 0 0 + copy_decompress_none.c.obj 18 0 0 + strcpy.c.obj 18 0 0 + lsr32.asm.obj 16 0 0 + new.cpp.obj 14 0 0 + strlen.c.obj 14 0 0 + _lock.c.obj 2 0 8 + lsl16.asm.obj 10 0 0 + lsr16.asm.obj 10 0 0 + exit_gvars.c.obj 0 0 8 + isr_trap.asm.obj 8 0 0 + pure_virt.c.obj 8 0 0 + error.c.obj 4 0 0 + pre_init.c.obj 4 0 0 + int18.asm.obj 0 2 0 + int19.asm.obj 0 2 0 + int20.asm.obj 0 2 0 + int21.asm.obj 0 2 0 + int22.asm.obj 0 2 0 + int23.asm.obj 0 2 0 + int24.asm.obj 0 2 0 + int25.asm.obj 0 2 0 + int26.asm.obj 0 2 0 + int27.asm.obj 0 2 0 + int28.asm.obj 0 2 0 + int29.asm.obj 0 2 0 + int30.asm.obj 0 2 0 + int31.asm.obj 0 2 0 + int32.asm.obj 0 2 0 + int33.asm.obj 0 2 0 + int34.asm.obj 0 2 0 + int35.asm.obj 0 2 0 + int36.asm.obj 0 2 0 + int37.asm.obj 0 2 0 + int38.asm.obj 0 2 0 + int40.asm.obj 0 2 0 + int41.asm.obj 0 2 0 + int42.asm.obj 0 2 0 + int45.asm.obj 0 2 0 + int47.asm.obj 0 2 0 + int50.asm.obj 0 2 0 + int51.asm.obj 0 2 0 + int52.asm.obj 0 2 0 + int53.asm.obj 0 2 0 + int54.asm.obj 0 2 0 + startup.c.obj 2 0 0 + +--+---------------------------------+-------+---------+---------+ + Total: 4994 232 862 + + Heap: 0 0 8 + Stack: 0 0 1492 + Linker Generated: 0 145 0 + +--+---------------------------------+-------+---------+---------+ + Grand Total: 47178 35433 8332 + + +LINKER GENERATED COPY TABLES + +__TI_cinit_table @ 0000d10e records: 2, size/record: 8, table size: 16 + .data: load addr=0000d08c, load size=0000006f bytes, run addr=0000290e, run size=00000c82 bytes, compression=lzss + .bss: load addr=0000d108, load size=00000006 bytes, run addr=00001c00, run size=00000d0e bytes, compression=zero_init + + +LINKER GENERATED HANDLER TABLE + +__TI_handler_table @ 0000d0fc records: 3, size/record: 4, table size: 12 + index: 0, handler: __TI_zero_init + index: 1, handler: __TI_decompress_lzss + index: 2, handler: __TI_decompress_none + + +GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name + +address name +------- ---- +00000800 ADC12CTL0 +00000801 ADC12CTL0_H +00000800 ADC12CTL0_L +00000802 ADC12CTL1 +00000803 ADC12CTL1_H +00000802 ADC12CTL1_L +00000804 ADC12CTL2 +00000805 ADC12CTL2_H +00000804 ADC12CTL2_L +00000806 ADC12CTL3 +00000807 ADC12CTL3_H +00000806 ADC12CTL3_L +0000080a ADC12HI +0000080b ADC12HI_H +0000080a ADC12HI_L +00000812 ADC12IER0 +00000813 ADC12IER0_H +00000812 ADC12IER0_L +00000814 ADC12IER1 +00000815 ADC12IER1_H +00000814 ADC12IER1_L +00000816 ADC12IER2 +00000817 ADC12IER2_H +00000816 ADC12IER2_L +0000080c ADC12IFGR0 +0000080d ADC12IFGR0_H +0000080c ADC12IFGR0_L +0000080e ADC12IFGR1 +0000080f ADC12IFGR1_H +0000080e ADC12IFGR1_L +00000810 ADC12IFGR2 +00000811 ADC12IFGR2_H +00000810 ADC12IFGR2_L +00000818 ADC12IV +00000819 ADC12IV_H +00000818 ADC12IV_L +00000808 ADC12LO +00000809 ADC12LO_H +00000808 ADC12LO_L +00000820 ADC12MCTL0 +00000821 ADC12MCTL0_H +00000820 ADC12MCTL0_L +00000822 ADC12MCTL1 +00000834 ADC12MCTL10 +00000835 ADC12MCTL10_H +00000834 ADC12MCTL10_L +00000836 ADC12MCTL11 +00000837 ADC12MCTL11_H +00000836 ADC12MCTL11_L +00000838 ADC12MCTL12 +00000839 ADC12MCTL12_H +00000838 ADC12MCTL12_L +0000083a ADC12MCTL13 +0000083b ADC12MCTL13_H +0000083a ADC12MCTL13_L +0000083c ADC12MCTL14 +0000083d ADC12MCTL14_H +0000083c ADC12MCTL14_L +0000083e ADC12MCTL15 +0000083f ADC12MCTL15_H +0000083e ADC12MCTL15_L +00000840 ADC12MCTL16 +00000841 ADC12MCTL16_H +00000840 ADC12MCTL16_L +00000842 ADC12MCTL17 +00000843 ADC12MCTL17_H +00000842 ADC12MCTL17_L +00000844 ADC12MCTL18 +00000845 ADC12MCTL18_H +00000844 ADC12MCTL18_L +00000846 ADC12MCTL19 +00000847 ADC12MCTL19_H +00000846 ADC12MCTL19_L +00000823 ADC12MCTL1_H +00000822 ADC12MCTL1_L +00000824 ADC12MCTL2 +00000848 ADC12MCTL20 +00000849 ADC12MCTL20_H +00000848 ADC12MCTL20_L +0000084a ADC12MCTL21 +0000084b ADC12MCTL21_H +0000084a ADC12MCTL21_L +0000084c ADC12MCTL22 +0000084d ADC12MCTL22_H +0000084c ADC12MCTL22_L +0000084e ADC12MCTL23 +0000084f ADC12MCTL23_H +0000084e ADC12MCTL23_L +00000850 ADC12MCTL24 +00000851 ADC12MCTL24_H +00000850 ADC12MCTL24_L +00000852 ADC12MCTL25 +00000853 ADC12MCTL25_H +00000852 ADC12MCTL25_L +00000854 ADC12MCTL26 +00000855 ADC12MCTL26_H +00000854 ADC12MCTL26_L +00000856 ADC12MCTL27 +00000857 ADC12MCTL27_H +00000856 ADC12MCTL27_L +00000858 ADC12MCTL28 +00000859 ADC12MCTL28_H +00000858 ADC12MCTL28_L +0000085a ADC12MCTL29 +0000085b ADC12MCTL29_H +0000085a ADC12MCTL29_L +00000825 ADC12MCTL2_H +00000824 ADC12MCTL2_L +00000826 ADC12MCTL3 +0000085c ADC12MCTL30 +0000085d ADC12MCTL30_H +0000085c ADC12MCTL30_L +0000085e ADC12MCTL31 +0000085f ADC12MCTL31_H +0000085e ADC12MCTL31_L +00000827 ADC12MCTL3_H +00000826 ADC12MCTL3_L +00000828 ADC12MCTL4 +00000829 ADC12MCTL4_H +00000828 ADC12MCTL4_L +0000082a ADC12MCTL5 +0000082b ADC12MCTL5_H +0000082a ADC12MCTL5_L +0000082c ADC12MCTL6 +0000082d ADC12MCTL6_H +0000082c ADC12MCTL6_L +0000082e ADC12MCTL7 +0000082f ADC12MCTL7_H +0000082e ADC12MCTL7_L +00000830 ADC12MCTL8 +00000831 ADC12MCTL8_H +00000830 ADC12MCTL8_L +00000832 ADC12MCTL9 +00000833 ADC12MCTL9_H +00000832 ADC12MCTL9_L +00000860 ADC12MEM0 +00000861 ADC12MEM0_H +00000860 ADC12MEM0_L +00000862 ADC12MEM1 +00000874 ADC12MEM10 +00000875 ADC12MEM10_H +00000874 ADC12MEM10_L +00000876 ADC12MEM11 +00000877 ADC12MEM11_H +00000876 ADC12MEM11_L +00000878 ADC12MEM12 +00000879 ADC12MEM12_H +00000878 ADC12MEM12_L +0000087a ADC12MEM13 +0000087b ADC12MEM13_H +0000087a ADC12MEM13_L +0000087c ADC12MEM14 +0000087d ADC12MEM14_H +0000087c ADC12MEM14_L +0000087e ADC12MEM15 +0000087f ADC12MEM15_H +0000087e ADC12MEM15_L +00000880 ADC12MEM16 +00000881 ADC12MEM16_H +00000880 ADC12MEM16_L +00000882 ADC12MEM17 +00000883 ADC12MEM17_H +00000882 ADC12MEM17_L +00000884 ADC12MEM18 +00000885 ADC12MEM18_H +00000884 ADC12MEM18_L +00000886 ADC12MEM19 +00000887 ADC12MEM19_H +00000886 ADC12MEM19_L +00000863 ADC12MEM1_H +00000862 ADC12MEM1_L +00000864 ADC12MEM2 +00000888 ADC12MEM20 +00000889 ADC12MEM20_H +00000888 ADC12MEM20_L +0000088a ADC12MEM21 +0000088b ADC12MEM21_H +0000088a ADC12MEM21_L +0000088c ADC12MEM22 +0000088d ADC12MEM22_H +0000088c ADC12MEM22_L +0000088e ADC12MEM23 +0000088f ADC12MEM23_H +0000088e ADC12MEM23_L +00000890 ADC12MEM24 +00000891 ADC12MEM24_H +00000890 ADC12MEM24_L +00000892 ADC12MEM25 +00000893 ADC12MEM25_H +00000892 ADC12MEM25_L +00000894 ADC12MEM26 +00000895 ADC12MEM26_H +00000894 ADC12MEM26_L +00000896 ADC12MEM27 +00000897 ADC12MEM27_H +00000896 ADC12MEM27_L +00000898 ADC12MEM28 +00000899 ADC12MEM28_H +00000898 ADC12MEM28_L +0000089a ADC12MEM29 +0000089b ADC12MEM29_H +0000089a ADC12MEM29_L +00000865 ADC12MEM2_H +00000864 ADC12MEM2_L +00000866 ADC12MEM3 +0000089c ADC12MEM30 +0000089d ADC12MEM30_H +0000089c ADC12MEM30_L +0000089e ADC12MEM31 +0000089f ADC12MEM31_H +0000089e ADC12MEM31_L +00000867 ADC12MEM3_H +00000866 ADC12MEM3_L +00000868 ADC12MEM4 +00000869 ADC12MEM4_H +00000868 ADC12MEM4_L +0000086a ADC12MEM5 +0000086b ADC12MEM5_H +0000086a ADC12MEM5_L +0000086c ADC12MEM6 +0000086d ADC12MEM6_H +0000086c ADC12MEM6_L +0000086e ADC12MEM7 +0000086f ADC12MEM7_H +0000086e ADC12MEM7_L +00000870 ADC12MEM8 +00000871 ADC12MEM8_H +00000870 ADC12MEM8_L +00000872 ADC12MEM9 +00000873 ADC12MEM9_H +00000872 ADC12MEM9_L +00004594 ADC12_ISR +000009c0 AESACTL0 +000009c1 AESACTL0_H +000009c0 AESACTL0_L +000009c2 AESACTL1 +000009c3 AESACTL1_H +000009c2 AESACTL1_L +000009c8 AESADIN +000009c9 AESADIN_H +000009c8 AESADIN_L +000009ca AESADOUT +000009cb AESADOUT_H +000009ca AESADOUT_L +000009c6 AESAKEY +000009c7 AESAKEY_H +000009c6 AESAKEY_L +000009c4 AESASTAT +000009c5 AESASTAT_H +000009c4 AESASTAT_L +000009cc AESAXDIN +000009cd AESAXDIN_H +000009cc AESAXDIN_L +000009ce AESAXIN +000009cf AESAXIN_H +000009ce AESAXIN_L +000004be BCD2BIN +000004bf BCD2BIN_H +000004be BCD2BIN_L +000004bc BIN2BCD +000004bd BIN2BCD_H +000004bc BIN2BCD_L +0001b52e C$$EXIT +00019c4e C$$IO$$ +0000043e CAPTIO0CTL +0000043f CAPTIO0CTL_H +0000043e CAPTIO0CTL_L +0000047e CAPTIO1CTL +0000047f CAPTIO1CTL_H +0000047e CAPTIO1CTL_L +000008c0 CECTL0 +000008c1 CECTL0_H +000008c0 CECTL0_L +000008c2 CECTL1 +000008c3 CECTL1_H +000008c2 CECTL1_L +000008c4 CECTL2 +000008c5 CECTL2_H +000008c4 CECTL2_L +000008c6 CECTL3 +000008c7 CECTL3_H +000008c6 CECTL3_L +000008cc CEINT +000008cd CEINT_H +000008cc CEINT_L +000008ce CEIV +000008cf CEIV_H +000008ce CEIV_L +00000996 CRC16DIRBW0 +00000997 CRC16DIRBW0_H +00000996 CRC16DIRBW0_L +00000990 CRC16DIW0 +00000991 CRC16DIW0_H +00000990 CRC16DIW0_L +00000998 CRC16INIRESW0 +00000999 CRC16INIRESW0_H +00000998 CRC16INIRESW0_L +0000099e CRC16RESRW0 +0000099f CRC16RESRW0_H +0000099e CRC16RESRW0_L +00000986 CRC32DIRBW0 +00000987 CRC32DIRBW0_H +00000986 CRC32DIRBW0_L +00000984 CRC32DIRBW1 +00000985 CRC32DIRBW1_H +00000984 CRC32DIRBW1_L +00000980 CRC32DIW0 +00000981 CRC32DIW0_H +00000980 CRC32DIW0_L +00000982 CRC32DIW1 +00000983 CRC32DIW1_H +00000982 CRC32DIW1_L +00000988 CRC32INIRESW0 +00000989 CRC32INIRESW0_H +00000988 CRC32INIRESW0_L +0000098a CRC32INIRESW1 +0000098b CRC32INIRESW1_H +0000098a CRC32INIRESW1_L +0000098e CRC32RESRW0 +0000098f CRC32RESRW0_H +0000098e CRC32RESRW0_L +0000098c CRC32RESRW1 +0000098d CRC32RESRW1_H +0000098c CRC32RESRW1_L +00000150 CRCDI +00000152 CRCDIRB +00000153 CRCDIRB_H +00000152 CRCDIRB_L +00000151 CRCDI_H +00000150 CRCDI_L +00000154 CRCINIRES +00000155 CRCINIRES_H +00000154 CRCINIRES_L +00000156 CRCRESR +00000157 CRCRESR_H +00000156 CRCRESR_L +00000160 CSCTL0 +00000161 CSCTL0_H +00000160 CSCTL0_L +00000162 CSCTL1 +00000163 CSCTL1_H +00000162 CSCTL1_L +00000164 CSCTL2 +00000165 CSCTL2_H +00000164 CSCTL2_L +00000166 CSCTL3 +00000167 CSCTL3_H +00000166 CSCTL3_L +00000168 CSCTL4 +00000169 CSCTL4_H +00000168 CSCTL4_L +0000016a CSCTL5 +0000016b CSCTL5_H +0000016a CSCTL5_L +0000016c CSCTL6 +0000016d CSCTL6_H +0000016c CSCTL6_L +00016298 CmdMsgs__deserializeHeader +00000510 DMA0CTL +00000511 DMA0CTL_H +00000510 DMA0CTL_L +00000516 DMA0DA +00000518 DMA0DAH +00000516 DMA0DAL +00000512 DMA0SA +00000514 DMA0SAH +00000512 DMA0SAL +0000051a DMA0SZ +0000051b DMA0SZ_H +0000051a DMA0SZ_L +00000520 DMA1CTL +00000521 DMA1CTL_H +00000520 DMA1CTL_L +00000526 DMA1DA +00000528 DMA1DAH +00000526 DMA1DAL +00000522 DMA1SA +00000524 DMA1SAH +00000522 DMA1SAL +0000052a DMA1SZ +0000052b DMA1SZ_H +0000052a DMA1SZ_L +00000530 DMA2CTL +00000531 DMA2CTL_H +00000530 DMA2CTL_L +00000536 DMA2DA +00000538 DMA2DAH +00000536 DMA2DAL +00000532 DMA2SA +00000534 DMA2SAH +00000532 DMA2SAL +0000053a DMA2SZ +0000053b DMA2SZ_H +0000053a DMA2SZ_L +00000540 DMA3CTL +00000541 DMA3CTL_H +00000540 DMA3CTL_L +00000546 DMA3DA +00000548 DMA3DAH +00000546 DMA3DAL +00000542 DMA3SA +00000544 DMA3SAH +00000542 DMA3SAL +0000054a DMA3SZ +0000054b DMA3SZ_H +0000054a DMA3SZ_L +00000550 DMA4CTL +00000551 DMA4CTL_H +00000550 DMA4CTL_L +00000556 DMA4DA +00000558 DMA4DAH +00000556 DMA4DAL +00000552 DMA4SA +00000554 DMA4SAH +00000552 DMA4SAL +0000055a DMA4SZ +0000055b DMA4SZ_H +0000055a DMA4SZ_L +00000560 DMA5CTL +00000561 DMA5CTL_H +00000560 DMA5CTL_L +00000566 DMA5DA +00000568 DMA5DAH +00000566 DMA5DAL +00000562 DMA5SA +00000564 DMA5SAH +00000562 DMA5SAL +0000056a DMA5SZ +0000056b DMA5SZ_H +0000056a DMA5SZ_L +00000500 DMACTL0 +00000501 DMACTL0_H +00000500 DMACTL0_L +00000502 DMACTL1 +00000503 DMACTL1_H +00000502 DMACTL1_L +00000504 DMACTL2 +00000505 DMACTL2_H +00000504 DMACTL2_L +00000508 DMACTL4 +00000509 DMACTL4_H +00000508 DMACTL4_L +0000050e DMAIV +0000050f DMAIV_H +0000050e DMAIV_L +00019f16 DebugComms__flush +0001b1c2 DebugComms__registerHerculesComms +0001b1d6 DebugComms__registerLanderComms +0001b1ea DebugComms__setEnabled +00016f10 DebugComms__tryPrintfToLanderNonblocking +000190e8 DebugComms__tryStringBufferToLanderNonblocking +0001927a EventQueue__get +0001976c EventQueue__initialize +0001a5bc EventQueue__put +00000140 FRCTL0 +00000141 FRCTL0_H +00000140 FRCTL0_L +00000144 GCCTL0 +00000145 GCCTL0_H +00000144 GCCTL0_L +00000146 GCCTL1 +00000147 GCCTL1_H +00000146 GCCTL1_L +00010000 GroundMsgs__generateDetailedReport +00015f78 GroundMsgs__generateFlightEarthHeartbeat +0001516a GroundMsgs__generateFullEarthHeartbeat +00018a70 HOSTclose +00016164 HOSTlseek +0001739e HOSTopen +0001770c HOSTread +0001715e HOSTrename +00019016 HOSTunlink +0001755c HOSTwrite +00013eca HercMsgs__serializeHeader +0001a066 HerculesComms__flushTx +000181ca HerculesComms__init +0001ada2 HerculesComms__isInitialized +000163c4 HerculesComms__resetState +00013434 HerculesComms__tryGetMessage +0001905c HerculesComms__txDownlinkData +000192ba HerculesComms__txResponseMsg +000190a2 HerculesComms__txUplinkMsg +00017a5a HerculesComms__uninitialize +00017ac0 HerculesMpsm__initMsg +000175c8 HerculesMpsm__process +00018d7c HerculesMpsm__reset +0001b50a I2C_Sensors__clearIoExpanderPort0OutputBits +0001b510 I2C_Sensors__clearIoExpanderPort1OutputBits +0001aa24 I2C_Sensors__clearLastAction +000125b8 I2C_Sensors__getActionStatus +0001a2ea I2C_Sensors__getIoExpanderPortDirections +0001b3b4 I2C_Sensors__init +0001a964 I2C_Sensors__initiateFuelGaugeInitialization +0001a6c6 I2C_Sensors__initiateGaugeReadings +0001a0c2 I2C_Sensors__initiateIoExpanderInitialization +0001a6ea I2C_Sensors__initiateReadControl +0001a876 I2C_Sensors__initiateReadIoExpander +00019d22 I2C_Sensors__initiateWriteIoExpander +0001afb2 I2C_Sensors__initiateWriteIoExpanderCurrentValues +0001a898 I2C_Sensors__initiateWriteLowPower +0001b516 I2C_Sensors__setIoExpanderPort0OutputBits +0001b51c I2C_Sensors__setIoExpanderPort1OutputBits +00012baa I2C_Sensors__spinOnce +0001b2da I2C_Sensors__stop +00014cd2 I2C_Sensors__writeIoExpanderBlocking +0001aa42 I2C_Sensors__writeIoExpanderCurrentValuesBlocking +000149e0 I2C_Sensors__writeIoExpanderPortDirectionsBlocking +00019d54 I2C__getTransactionStatus +0001a0f0 I2C__init +000195ba I2C__read +00015d64 I2C__spinOnce +0001a8ba I2C__stop +000192fa I2C__write +000127bc IpUdp__generateAndSerializeIpUdpHeadersForData +0001912c IpUdp__identifyDataInUdpPacket +00000a80 LEACAP +00000a82 LEACAPH +00000a80 LEACAPL +00000a98 LEACMA +00000a9a LEACMAH +00000a98 LEACMAL +00000a9c LEACMCTL +00000a9e LEACMCTLH +00000a9c LEACMCTLL +00000aa8 LEACMDSTAT +00000aaa LEACMDSTATH +00000aa8 LEACMDSTATL +00000a84 LEACNF0 +00000a86 LEACNF0H +00000a84 LEACNF0L +00000a88 LEACNF1 +00000a8a LEACNF1H +00000a88 LEACNF1L +00000a8c LEACNF2 +00000a8e LEACNF2H +00000a8c LEACNF2L +00000ab4 LEADSTSTAT +00000ab6 LEADSTSTATH +00000ab4 LEADSTSTATL +00000af4 LEAIE +00000af6 LEAIEH +00000af4 LEAIEL +00000af8 LEAIFG +00000afa LEAIFGH +00000af8 LEAIFGL +00000af0 LEAIFGSET +00000af2 LEAIFGSETH +00000af0 LEAIFGSETL +00000afc LEAIV +00000afe LEAIVH +00000afc LEAIVL +00000a90 LEAMB +00000a92 LEAMBH +00000a90 LEAMBL +00000a94 LEAMT +00000a96 LEAMTH +00000a94 LEAMTL +00000ad0 LEAPMCB +00000ad2 LEAPMCBH +00000ad0 LEAPMCBL +00000ac0 LEAPMCTL +00000ac2 LEAPMCTLH +00000ac0 LEAPMCTLL +00000ac4 LEAPMDST +00000ac6 LEAPMDSTH +00000ac4 LEAPMDSTL +00000acc LEAPMS0 +00000ace LEAPMS0H +00000acc LEAPMS0L +00000ac8 LEAPMS1 +00000aca LEAPMS1H +00000ac8 LEAPMS1L +00000ab0 LEAS0STAT +00000ab2 LEAS0STATH +00000ab0 LEAS0STATL +00000aac LEAS1STAT +00000aae LEAS1STATH +00000aac LEAS1STATL +0001a11e LanderComms__flushTx +00018282 LanderComms__init +00014266 LanderComms__tryGetMessage +000135ae LanderComms__txData +00014adc LanderComms__txDataUntilSendOrTimeout +000004c4 MAC +000004da MAC32H +000004db MAC32H_H +000004da MAC32H_L +000004d8 MAC32L +000004d9 MAC32L_H +000004d8 MAC32L_L +000004c6 MACS +000004de MACS32H +000004df MACS32H_H +000004de MACS32H_L +000004dc MACS32L +000004dd MACS32L_H +000004dc MACS32L_L +000004c7 MACS_H +000004c6 MACS_L +000004c5 MAC_H +000004c4 MAC_L +000005a0 MPUCTL0 +000005a1 MPUCTL0_H +000005a0 MPUCTL0_L +000005a2 MPUCTL1 +000005a3 MPUCTL1_H +000005a2 MPUCTL1_L +000005aa MPUIPC0 +000005ab MPUIPC0_H +000005aa MPUIPC0_L +000005ae MPUIPSEGB1 +000005af MPUIPSEGB1_H +000005ae MPUIPSEGB1_L +000005ac MPUIPSEGB2 +000005ad MPUIPSEGB2_H +000005ac MPUIPSEGB2_L +000005a8 MPUSAM +000005a9 MPUSAM_H +000005a8 MPUSAM_L +000005a6 MPUSEGB1 +000005a7 MPUSEGB1_H +000005a6 MPUSEGB1_L +000005a4 MPUSEGB2 +000005a5 MPUSEGB2_H +000005a4 MPUSEGB2_L +000004c0 MPY +000004ec MPY32CTL0 +000004ed MPY32CTL0_H +000004ec MPY32CTL0_L +000004d2 MPY32H +000004d3 MPY32H_H +000004d2 MPY32H_L +000004d0 MPY32L +000004d1 MPY32L_H +000004d0 MPY32L_L +000004c2 MPYS +000004d6 MPYS32H +000004d7 MPYS32H_H +000004d6 MPYS32H_L +000004d4 MPYS32L +000004d5 MPYS32L_H +000004d4 MPYS32L_L +000004c3 MPYS_H +000004c2 MPYS_L +000004c1 MPY_H +000004c0 MPY_L +000004c8 OP2 +000004e2 OP2H +000004e3 OP2H_H +000004e2 OP2H_L +000004e0 OP2L +000004e1 OP2L_H +000004e0 OP2L_L +000004c9 OP2_H +000004c8 OP2_L +00000204 P1DIR +0000021a P1IE +00000218 P1IES +0000021c P1IFG +00000200 P1IN +0000020e P1IV +0000020f P1IV_H +0000020e P1IV_L +00000202 P1OUT +00000206 P1REN +0000020a P1SEL0 +0000020c P1SEL1 +00000216 P1SELC +00000205 P2DIR +0000021b P2IE +00000219 P2IES +0000021d P2IFG +00000201 P2IN +0000021e P2IV +0000021f P2IV_H +0000021e P2IV_L +00000203 P2OUT +00000207 P2REN +0000020b P2SEL0 +0000020d P2SEL1 +00000217 P2SELC +00000224 P3DIR +0000023a P3IE +00000238 P3IES +0000023c P3IFG +00000220 P3IN +0000022e P3IV +0000022f P3IV_H +0000022e P3IV_L +00000222 P3OUT +00000226 P3REN +0000022a P3SEL0 +0000022c P3SEL1 +00000236 P3SELC +00000225 P4DIR +0000023b P4IE +00000239 P4IES +0000023d P4IFG +00000221 P4IN +0000023e P4IV +0000023f P4IV_H +0000023e P4IV_L +00000223 P4OUT +00000227 P4REN +0000022b P4SEL0 +0000022d P4SEL1 +00000237 P4SELC +00000244 P5DIR +0000025a P5IE +00000258 P5IES +0000025c P5IFG +00000240 P5IN +0000024e P5IV +0000024f P5IV_H +0000024e P5IV_L +00000242 P5OUT +00000246 P5REN +0000024a P5SEL0 +0000024c P5SEL1 +00000256 P5SELC +00000245 P6DIR +0000025b P6IE +00000259 P6IES +0000025d P6IFG +00000241 P6IN +0000025e P6IV +0000025f P6IV_H +0000025e P6IV_L +00000243 P6OUT +00000247 P6REN +0000024b P6SEL0 +0000024d P6SEL1 +00000257 P6SELC +00000264 P7DIR +0000027a P7IE +00000278 P7IES +0000027c P7IFG +00000260 P7IN +0000026e P7IV +0000026f P7IV_H +0000026e P7IV_L +00000262 P7OUT +00000266 P7REN +0000026a P7SEL0 +0000026c P7SEL1 +00000276 P7SELC +00000265 P8DIR +0000027b P8IE +00000279 P8IES +0000027d P8IFG +00000261 P8IN +0000027e P8IV +0000027f P8IV_H +0000027e P8IV_L +00000263 P8OUT +00000267 P8REN +0000026b P8SEL0 +0000026d P8SEL1 +00000277 P8SELC +00000204 PADIR +00000205 PADIR_H +00000204 PADIR_L +0000021a PAIE +00000218 PAIES +00000219 PAIES_H +00000218 PAIES_L +0000021b PAIE_H +0000021a PAIE_L +0000021c PAIFG +0000021d PAIFG_H +0000021c PAIFG_L +00000200 PAIN +00000201 PAIN_H +00000200 PAIN_L +00000202 PAOUT +00000203 PAOUT_H +00000202 PAOUT_L +00000206 PAREN +00000207 PAREN_H +00000206 PAREN_L +0000020a PASEL0 +0000020b PASEL0_H +0000020a PASEL0_L +0000020c PASEL1 +0000020d PASEL1_H +0000020c PASEL1_L +00000216 PASELC +00000217 PASELC_H +00000216 PASELC_L +00000224 PBDIR +00000225 PBDIR_H +00000224 PBDIR_L +0000023a PBIE +00000238 PBIES +00000239 PBIES_H +00000238 PBIES_L +0000023b PBIE_H +0000023a PBIE_L +0000023c PBIFG +0000023d PBIFG_H +0000023c PBIFG_L +00000220 PBIN +00000221 PBIN_H +00000220 PBIN_L +00000222 PBOUT +00000223 PBOUT_H +00000222 PBOUT_L +00000226 PBREN +00000227 PBREN_H +00000226 PBREN_L +0000022a PBSEL0 +0000022b PBSEL0_H +0000022a PBSEL0_L +0000022c PBSEL1 +0000022d PBSEL1_H +0000022c PBSEL1_L +00000236 PBSELC +00000237 PBSELC_H +00000236 PBSELC_L +00000244 PCDIR +00000245 PCDIR_H +00000244 PCDIR_L +0000025a PCIE +00000258 PCIES +00000259 PCIES_H +00000258 PCIES_L +0000025b PCIE_H +0000025a PCIE_L +0000025c PCIFG +0000025d PCIFG_H +0000025c PCIFG_L +00000240 PCIN +00000241 PCIN_H +00000240 PCIN_L +00000242 PCOUT +00000243 PCOUT_H +00000242 PCOUT_L +00000246 PCREN +00000247 PCREN_H +00000246 PCREN_L +0000024a PCSEL0 +0000024b PCSEL0_H +0000024a PCSEL0_L +0000024c PCSEL1 +0000024d PCSEL1_H +0000024c PCSEL1_L +00000256 PCSELC +00000257 PCSELC_H +00000256 PCSELC_L +00000264 PDDIR +00000265 PDDIR_H +00000264 PDDIR_L +0000027a PDIE +00000278 PDIES +00000279 PDIES_H +00000278 PDIES_L +0000027b PDIE_H +0000027a PDIE_L +0000027c PDIFG +0000027d PDIFG_H +0000027c PDIFG_L +00000260 PDIN +00000261 PDIN_H +00000260 PDIN_L +00000262 PDOUT +00000263 PDOUT_H +00000262 PDOUT_L +00000266 PDREN +00000267 PDREN_H +00000266 PDREN_L +0000026a PDSEL0 +0000026b PDSEL0_H +0000026a PDSEL0_L +0000026c PDSEL1 +0000026d PDSEL1_H +0000026c PDSEL1_L +00000276 PDSELC +00000277 PDSELC_H +00000276 PDSELC_L +00000324 PJDIR +00000325 PJDIR_H +00000324 PJDIR_L +00000320 PJIN +00000321 PJIN_H +00000320 PJIN_L +00000322 PJOUT +00000323 PJOUT_H +00000322 PJOUT_L +00000326 PJREN +00000327 PJREN_H +00000326 PJREN_L +0000032a PJSEL0 +0000032b PJSEL0_H +0000032a PJSEL0_L +0000032c PJSEL1 +0000032d PJSEL1_H +0000032c PJSEL1_L +00000336 PJSELC +00000337 PJSELC_H +00000336 PJSELC_L +00000130 PM5CTL0 +00000131 PM5CTL0_H +00000130 PM5CTL0_L +00000120 PMMCTL0 +00000121 PMMCTL0_H +00000120 PMMCTL0_L +0000012a PMMIFG +0000012b PMMIFG_H +0000012a PMMIFG_L +00000158 RCCTL0 +00000159 RCCTL0_H +00000158 RCCTL0_L +000001b0 REFCTL0 +000001b1 REFCTL0_H +000001b0 REFCTL0_L +000004e4 RES0 +000004e5 RES0_H +000004e4 RES0_L +000004e6 RES1 +000004e7 RES1_H +000004e6 RES1_L +000004e8 RES2 +000004e9 RES2_H +000004e8 RES2_L +000004ea RES3 +000004eb RES3_H +000004ea RES3_L +000004cc RESHI +000004cd RESHI_H +000004cc RESHI_L +000004ca RESLO +000004cb RESLO_H +000004ca RESLO_L +000004ac RT0PS +000004ad RT1PS +000004ba RTCADOWDAY +000004bb RTCADOWDAY_H +000004ba RTCADOWDAY_L +000004b8 RTCAMINHR +000004b9 RTCAMINHR_H +000004b8 RTCAMINHR_L +000004b0 RTCCNT1 +000004b0 RTCCNT12 +000004b1 RTCCNT12_H +000004b0 RTCCNT12_L +000004b1 RTCCNT2 +000004b2 RTCCNT3 +000004b2 RTCCNT34 +000004b3 RTCCNT34_H +000004b2 RTCCNT34_L +000004b3 RTCCNT4 +000004a0 RTCCTL0 +000004a1 RTCCTL0_H +000004a0 RTCCTL0_L +000004a2 RTCCTL13 +000004a3 RTCCTL13_H +000004a2 RTCCTL13_L +000004b4 RTCDATE +000004b5 RTCDATE_H +000004b4 RTCDATE_L +000004ae RTCIV +000004af RTCIV_H +000004ae RTCIV_L +000004a4 RTCOCAL +000004a5 RTCOCAL_H +000004a4 RTCOCAL_L +000004ac RTCPS +000004a8 RTCPS0CTL +000004a9 RTCPS0CTL_H +000004a8 RTCPS0CTL_L +000004aa RTCPS1CTL +000004ab RTCPS1CTL_H +000004aa RTCPS1CTL_L +000004ad RTCPS_H +000004ac RTCPS_L +000004a6 RTCTCMP +000004a7 RTCTCMP_H +000004a6 RTCTCMP_L +000004b0 RTCTIM0 +000004b1 RTCTIM0_H +000004b0 RTCTIM0_L +000004b2 RTCTIM1 +000004b3 RTCTIM1_H +000004b2 RTCTIM1_L +000004b6 RTCYEAR +000004b7 RTCYEAR_H +000004b6 RTCYEAR_L +0001b1fe RingBuffer__clear +0001aeda RingBuffer__empty +0001aef2 RingBuffer__freeCount +0001aa60 RingBuffer__full +000197a8 RingBuffer__get +000197a8 RingBuffer__getOverwrite +00017634 RingBuffer__init +000197e4 RingBuffer__peekAt +00019820 RingBuffer__put +000198d4 RingBuffer__putOverwrite +0001b212 RingBuffer__usedCount +00000100 SFRIE1 +00000101 SFRIE1_H +00000100 SFRIE1_L +00000102 SFRIFG1 +00000103 SFRIFG1_H +00000102 SFRIFG1_L +00000104 SFRRPCR +00000105 SFRRPCR_H +00000104 SFRRPCR_L +000004ce SUMEXT +000004cf SUMEXT_H +000004ce SUMEXT_L +00000180 SYSCTL +00000181 SYSCTL_H +00000180 SYSCTL_L +00000186 SYSJMBC +00000187 SYSJMBC_H +00000186 SYSJMBC_L +00000188 SYSJMBI0 +00000189 SYSJMBI0_H +00000188 SYSJMBI0_L +0000018a SYSJMBI1 +0000018b SYSJMBI1_H +0000018a SYSJMBI1_L +0000018c SYSJMBO0 +0000018d SYSJMBO0_H +0000018c SYSJMBO0_L +0000018e SYSJMBO1 +0000018f SYSJMBO1_H +0000018e SYSJMBO1_L +0000019e SYSRSTIV +0000019f SYSRSTIV_H +0000019e SYSRSTIV_L +0000019c SYSSNIV +0000019d SYSSNIV_H +0000019c SYSSNIV_L +0000019a SYSUNIV +0000019b SYSUNIV_H +0000019a SYSUNIV_L +00017dee Serialization__deserializeAs16Bit +0001691a Serialization__deserializeAs32Bit +000182de Serialization__deserializeAs8Bit +000179f2 Serialization__serializeAs16Bit +0001732c Serialization__serializeAs32Bit +0001699c Serialization__serializeAs64Bit +0001816a Serialization__serializeAs8Bit +00015b40 SlipEncode__encode +0001a544 SlipMpsm__initMsg +00016a1e SlipMpsm__process +00000352 TA0CCR0 +00000353 TA0CCR0_H +00000352 TA0CCR0_L +00000354 TA0CCR1 +00000355 TA0CCR1_H +00000354 TA0CCR1_L +00000356 TA0CCR2 +00000357 TA0CCR2_H +00000356 TA0CCR2_L +00000342 TA0CCTL0 +00000343 TA0CCTL0_H +00000342 TA0CCTL0_L +00000344 TA0CCTL1 +00000345 TA0CCTL1_H +00000344 TA0CCTL1_L +00000346 TA0CCTL2 +00000347 TA0CCTL2_H +00000346 TA0CCTL2_L +00000340 TA0CTL +00000341 TA0CTL_H +00000340 TA0CTL_L +00000360 TA0EX0 +00000361 TA0EX0_H +00000360 TA0EX0_L +0000036e TA0IV +0000036f TA0IV_H +0000036e TA0IV_L +00000350 TA0R +00000351 TA0R_H +00000350 TA0R_L +00000392 TA1CCR0 +00000393 TA1CCR0_H +00000392 TA1CCR0_L +00000394 TA1CCR1 +00000395 TA1CCR1_H +00000394 TA1CCR1_L +00000396 TA1CCR2 +00000397 TA1CCR2_H +00000396 TA1CCR2_L +00000382 TA1CCTL0 +00000383 TA1CCTL0_H +00000382 TA1CCTL0_L +00000384 TA1CCTL1 +00000385 TA1CCTL1_H +00000384 TA1CCTL1_L +00000386 TA1CCTL2 +00000387 TA1CCTL2_H +00000386 TA1CCTL2_L +00000380 TA1CTL +00000381 TA1CTL_H +00000380 TA1CTL_L +000003a0 TA1EX0 +000003a1 TA1EX0_H +000003a0 TA1EX0_L +000003ae TA1IV +000003af TA1IV_H +000003ae TA1IV_L +00000390 TA1R +00000391 TA1R_H +00000390 TA1R_L +00000412 TA2CCR0 +00000413 TA2CCR0_H +00000412 TA2CCR0_L +00000414 TA2CCR1 +00000415 TA2CCR1_H +00000414 TA2CCR1_L +00000402 TA2CCTL0 +00000403 TA2CCTL0_H +00000402 TA2CCTL0_L +00000404 TA2CCTL1 +00000405 TA2CCTL1_H +00000404 TA2CCTL1_L +00000400 TA2CTL +00000401 TA2CTL_H +00000400 TA2CTL_L +00000420 TA2EX0 +00000421 TA2EX0_H +00000420 TA2EX0_L +0000042e TA2IV +0000042f TA2IV_H +0000042e TA2IV_L +00000410 TA2R +00000411 TA2R_H +00000410 TA2R_L +00000452 TA3CCR0 +00000453 TA3CCR0_H +00000452 TA3CCR0_L +00000454 TA3CCR1 +00000455 TA3CCR1_H +00000454 TA3CCR1_L +00000442 TA3CCTL0 +00000443 TA3CCTL0_H +00000442 TA3CCTL0_L +00000444 TA3CCTL1 +00000445 TA3CCTL1_H +00000444 TA3CCTL1_L +00000440 TA3CTL +00000441 TA3CTL_H +00000440 TA3CTL_L +00000460 TA3EX0 +00000461 TA3EX0_H +00000460 TA3EX0_L +0000046e TA3IV +0000046f TA3IV_H +0000046e TA3IV_L +00000450 TA3R +00000451 TA3R_H +00000450 TA3R_L +000007d2 TA4CCR0 +000007d3 TA4CCR0_H +000007d2 TA4CCR0_L +000007d4 TA4CCR1 +000007d5 TA4CCR1_H +000007d4 TA4CCR1_L +000007d6 TA4CCR2 +000007d7 TA4CCR2_H +000007d6 TA4CCR2_L +000007c2 TA4CCTL0 +000007c3 TA4CCTL0_H +000007c2 TA4CCTL0_L +000007c4 TA4CCTL1 +000007c5 TA4CCTL1_H +000007c4 TA4CCTL1_L +000007c6 TA4CCTL2 +000007c7 TA4CCTL2_H +000007c6 TA4CCTL2_L +000007c0 TA4CTL +000007c1 TA4CTL_H +000007c0 TA4CTL_L +000007e0 TA4EX0 +000007e1 TA4EX0_H +000007e0 TA4EX0_L +000007ee TA4IV +000007ef TA4IV_H +000007ee TA4IV_L +000007d0 TA4R +000007d1 TA4R_H +000007d0 TA4R_L +000003d2 TB0CCR0 +000003d3 TB0CCR0_H +000003d2 TB0CCR0_L +000003d4 TB0CCR1 +000003d5 TB0CCR1_H +000003d4 TB0CCR1_L +000003d6 TB0CCR2 +000003d7 TB0CCR2_H +000003d6 TB0CCR2_L +000003d8 TB0CCR3 +000003d9 TB0CCR3_H +000003d8 TB0CCR3_L +000003da TB0CCR4 +000003db TB0CCR4_H +000003da TB0CCR4_L +000003dc TB0CCR5 +000003dd TB0CCR5_H +000003dc TB0CCR5_L +000003de TB0CCR6 +000003df TB0CCR6_H +000003de TB0CCR6_L +000003c2 TB0CCTL0 +000003c3 TB0CCTL0_H +000003c2 TB0CCTL0_L +000003c4 TB0CCTL1 +000003c5 TB0CCTL1_H +000003c4 TB0CCTL1_L +000003c6 TB0CCTL2 +000003c7 TB0CCTL2_H +000003c6 TB0CCTL2_L +000003c8 TB0CCTL3 +000003c9 TB0CCTL3_H +000003c8 TB0CCTL3_L +000003ca TB0CCTL4 +000003cb TB0CCTL4_H +000003ca TB0CCTL4_L +000003cc TB0CCTL5 +000003cd TB0CCTL5_H +000003cc TB0CCTL5_L +000003ce TB0CCTL6 +000003cf TB0CCTL6_H +000003ce TB0CCTL6_L +000003c0 TB0CTL +000003c1 TB0CTL_H +000003c0 TB0CTL_L +000003e0 TB0EX0 +000003e1 TB0EX0_H +000003e0 TB0EX0_L +000003ee TB0IV +000003ef TB0IV_H +000003ee TB0IV_L +000003d0 TB0R +000003d1 TB0R_H +000003d0 TB0R_L +0001b522 Time__getPointerToCentisecondCount +0001b528 Time__getTimeInCentiseconds +00004682 Timer0_A1_ISR +00018f3e UART__checkIfSendable +000195f8 UART__checkRxRbErrors +00019b0e UART__checkRxZerosMaxCountSinceLastCheck +00015250 UART__flushTx +00018eaa UART__init0 +00018abe UART__init1 +0001adbc UART__isInitialized +00017bf2 UART__receive +00016020 UART__transmit +00019a9e UART__uninit0 +000005d0 UCA0ABCTL +000005d1 UCA0ABCTL_H +000005d0 UCA0ABCTL_L +000005c6 UCA0BRW +000005c7 UCA0BRW_H +000005c6 UCA0BRW_L +000005c0 UCA0CTLW0 +000005c1 UCA0CTLW0_H +000005c0 UCA0CTLW0_L +000005c2 UCA0CTLW1 +000005c3 UCA0CTLW1_H +000005c2 UCA0CTLW1_L +000005da UCA0IE +000005db UCA0IE_H +000005da UCA0IE_L +000005dc UCA0IFG +000005dd UCA0IFG_H +000005dc UCA0IFG_L +000005d2 UCA0IRCTL +000005d3 UCA0IRCTL_H +000005d2 UCA0IRCTL_L +000005de UCA0IV +000005df UCA0IV_H +000005de UCA0IV_L +000005c8 UCA0MCTLW +000005c9 UCA0MCTLW_H +000005c8 UCA0MCTLW_L +000005cc UCA0RXBUF +000005cd UCA0RXBUF_H +000005cc UCA0RXBUF_L +000005ca UCA0STATW +000005cb UCA0STATW_H +000005ca UCA0STATW_L +000005ce UCA0TXBUF +000005cf UCA0TXBUF_H +000005ce UCA0TXBUF_L +000005f0 UCA1ABCTL +000005f1 UCA1ABCTL_H +000005f0 UCA1ABCTL_L +000005e6 UCA1BRW +000005e7 UCA1BRW_H +000005e6 UCA1BRW_L +000005e0 UCA1CTLW0 +000005e1 UCA1CTLW0_H +000005e0 UCA1CTLW0_L +000005e2 UCA1CTLW1 +000005e3 UCA1CTLW1_H +000005e2 UCA1CTLW1_L +000005fa UCA1IE +000005fb UCA1IE_H +000005fa UCA1IE_L +000005fc UCA1IFG +000005fd UCA1IFG_H +000005fc UCA1IFG_L +000005f2 UCA1IRCTL +000005f3 UCA1IRCTL_H +000005f2 UCA1IRCTL_L +000005fe UCA1IV +000005ff UCA1IV_H +000005fe UCA1IV_L +000005e8 UCA1MCTLW +000005e9 UCA1MCTLW_H +000005e8 UCA1MCTLW_L +000005ec UCA1RXBUF +000005ed UCA1RXBUF_H +000005ec UCA1RXBUF_L +000005ea UCA1STATW +000005eb UCA1STATW_H +000005ea UCA1STATW_L +000005ee UCA1TXBUF +000005ef UCA1TXBUF_H +000005ee UCA1TXBUF_L +00000610 UCA2ABCTL +00000611 UCA2ABCTL_H +00000610 UCA2ABCTL_L +00000606 UCA2BRW +00000607 UCA2BRW_H +00000606 UCA2BRW_L +00000600 UCA2CTLW0 +00000601 UCA2CTLW0_H +00000600 UCA2CTLW0_L +00000602 UCA2CTLW1 +00000603 UCA2CTLW1_H +00000602 UCA2CTLW1_L +0000061a UCA2IE +0000061b UCA2IE_H +0000061a UCA2IE_L +0000061c UCA2IFG +0000061d UCA2IFG_H +0000061c UCA2IFG_L +00000612 UCA2IRCTL +00000613 UCA2IRCTL_H +00000612 UCA2IRCTL_L +0000061e UCA2IV +0000061f UCA2IV_H +0000061e UCA2IV_L +00000608 UCA2MCTLW +00000609 UCA2MCTLW_H +00000608 UCA2MCTLW_L +0000060c UCA2RXBUF +0000060d UCA2RXBUF_H +0000060c UCA2RXBUF_L +0000060a UCA2STATW +0000060b UCA2STATW_H +0000060a UCA2STATW_L +0000060e UCA2TXBUF +0000060f UCA2TXBUF_H +0000060e UCA2TXBUF_L +00000630 UCA3ABCTL +00000631 UCA3ABCTL_H +00000630 UCA3ABCTL_L +00000626 UCA3BRW +00000627 UCA3BRW_H +00000626 UCA3BRW_L +00000620 UCA3CTLW0 +00000621 UCA3CTLW0_H +00000620 UCA3CTLW0_L +00000622 UCA3CTLW1 +00000623 UCA3CTLW1_H +00000622 UCA3CTLW1_L +0000063a UCA3IE +0000063b UCA3IE_H +0000063a UCA3IE_L +0000063c UCA3IFG +0000063d UCA3IFG_H +0000063c UCA3IFG_L +00000632 UCA3IRCTL +00000633 UCA3IRCTL_H +00000632 UCA3IRCTL_L +0000063e UCA3IV +0000063f UCA3IV_H +0000063e UCA3IV_L +00000628 UCA3MCTLW +00000629 UCA3MCTLW_H +00000628 UCA3MCTLW_L +0000062c UCA3RXBUF +0000062d UCA3RXBUF_H +0000062c UCA3RXBUF_L +0000062a UCA3STATW +0000062b UCA3STATW_H +0000062a UCA3STATW_L +0000062e UCA3TXBUF +0000062f UCA3TXBUF_H +0000062e UCA3TXBUF_L +0000065e UCB0ADDMASK +0000065f UCB0ADDMASK_H +0000065e UCB0ADDMASK_L +0000065c UCB0ADDRX +0000065d UCB0ADDRX_H +0000065c UCB0ADDRX_L +00000646 UCB0BRW +00000647 UCB0BRW_H +00000646 UCB0BRW_L +00000640 UCB0CTLW0 +00000641 UCB0CTLW0_H +00000640 UCB0CTLW0_L +00000642 UCB0CTLW1 +00000643 UCB0CTLW1_H +00000642 UCB0CTLW1_L +00000654 UCB0I2COA0 +00000655 UCB0I2COA0_H +00000654 UCB0I2COA0_L +00000656 UCB0I2COA1 +00000657 UCB0I2COA1_H +00000656 UCB0I2COA1_L +00000658 UCB0I2COA2 +00000659 UCB0I2COA2_H +00000658 UCB0I2COA2_L +0000065a UCB0I2COA3 +0000065b UCB0I2COA3_H +0000065a UCB0I2COA3_L +00000660 UCB0I2CSA +00000661 UCB0I2CSA_H +00000660 UCB0I2CSA_L +0000066a UCB0IE +0000066b UCB0IE_H +0000066a UCB0IE_L +0000066c UCB0IFG +0000066d UCB0IFG_H +0000066c UCB0IFG_L +0000066e UCB0IV +0000066f UCB0IV_H +0000066e UCB0IV_L +0000064c UCB0RXBUF +0000064d UCB0RXBUF_H +0000064c UCB0RXBUF_L +00000648 UCB0STATW +00000649 UCB0STATW_H +00000648 UCB0STATW_L +0000064a UCB0TBCNT +0000064b UCB0TBCNT_H +0000064a UCB0TBCNT_L +0000064e UCB0TXBUF +0000064f UCB0TXBUF_H +0000064e UCB0TXBUF_L +0000069e UCB1ADDMASK +0000069f UCB1ADDMASK_H +0000069e UCB1ADDMASK_L +0000069c UCB1ADDRX +0000069d UCB1ADDRX_H +0000069c UCB1ADDRX_L +00000686 UCB1BRW +00000687 UCB1BRW_H +00000686 UCB1BRW_L +00000680 UCB1CTLW0 +00000681 UCB1CTLW0_H +00000680 UCB1CTLW0_L +00000682 UCB1CTLW1 +00000683 UCB1CTLW1_H +00000682 UCB1CTLW1_L +00000694 UCB1I2COA0 +00000695 UCB1I2COA0_H +00000694 UCB1I2COA0_L +00000696 UCB1I2COA1 +00000697 UCB1I2COA1_H +00000696 UCB1I2COA1_L +00000698 UCB1I2COA2 +00000699 UCB1I2COA2_H +00000698 UCB1I2COA2_L +0000069a UCB1I2COA3 +0000069b UCB1I2COA3_H +0000069a UCB1I2COA3_L +000006a0 UCB1I2CSA +000006a1 UCB1I2CSA_H +000006a0 UCB1I2CSA_L +000006aa UCB1IE +000006ab UCB1IE_H +000006aa UCB1IE_L +000006ac UCB1IFG +000006ad UCB1IFG_H +000006ac UCB1IFG_L +000006ae UCB1IV +000006af UCB1IV_H +000006ae UCB1IV_L +0000068c UCB1RXBUF +0000068d UCB1RXBUF_H +0000068c UCB1RXBUF_L +00000688 UCB1STATW +00000689 UCB1STATW_H +00000688 UCB1STATW_L +0000068a UCB1TBCNT +0000068b UCB1TBCNT_H +0000068a UCB1TBCNT_L +0000068e UCB1TXBUF +0000068f UCB1TXBUF_H +0000068e UCB1TXBUF_L +000006de UCB2ADDMASK +000006df UCB2ADDMASK_H +000006de UCB2ADDMASK_L +000006dc UCB2ADDRX +000006dd UCB2ADDRX_H +000006dc UCB2ADDRX_L +000006c6 UCB2BRW +000006c7 UCB2BRW_H +000006c6 UCB2BRW_L +000006c0 UCB2CTLW0 +000006c1 UCB2CTLW0_H +000006c0 UCB2CTLW0_L +000006c2 UCB2CTLW1 +000006c3 UCB2CTLW1_H +000006c2 UCB2CTLW1_L +000006d4 UCB2I2COA0 +000006d5 UCB2I2COA0_H +000006d4 UCB2I2COA0_L +000006d6 UCB2I2COA1 +000006d7 UCB2I2COA1_H +000006d6 UCB2I2COA1_L +000006d8 UCB2I2COA2 +000006d9 UCB2I2COA2_H +000006d8 UCB2I2COA2_L +000006da UCB2I2COA3 +000006db UCB2I2COA3_H +000006da UCB2I2COA3_L +000006e0 UCB2I2CSA +000006e1 UCB2I2CSA_H +000006e0 UCB2I2CSA_L +000006ea UCB2IE +000006eb UCB2IE_H +000006ea UCB2IE_L +000006ec UCB2IFG +000006ed UCB2IFG_H +000006ec UCB2IFG_L +000006ee UCB2IV +000006ef UCB2IV_H +000006ee UCB2IV_L +000006cc UCB2RXBUF +000006cd UCB2RXBUF_H +000006cc UCB2RXBUF_L +000006c8 UCB2STATW +000006c9 UCB2STATW_H +000006c8 UCB2STATW_L +000006ca UCB2TBCNT +000006cb UCB2TBCNT_H +000006ca UCB2TBCNT_L +000006ce UCB2TXBUF +000006cf UCB2TXBUF_H +000006ce UCB2TXBUF_L +0000071e UCB3ADDMASK +0000071f UCB3ADDMASK_H +0000071e UCB3ADDMASK_L +0000071c UCB3ADDRX +0000071d UCB3ADDRX_H +0000071c UCB3ADDRX_L +00000706 UCB3BRW +00000707 UCB3BRW_H +00000706 UCB3BRW_L +00000700 UCB3CTLW0 +00000701 UCB3CTLW0_H +00000700 UCB3CTLW0_L +00000702 UCB3CTLW1 +00000703 UCB3CTLW1_H +00000702 UCB3CTLW1_L +00000714 UCB3I2COA0 +00000715 UCB3I2COA0_H +00000714 UCB3I2COA0_L +00000716 UCB3I2COA1 +00000717 UCB3I2COA1_H +00000716 UCB3I2COA1_L +00000718 UCB3I2COA2 +00000719 UCB3I2COA2_H +00000718 UCB3I2COA2_L +0000071a UCB3I2COA3 +0000071b UCB3I2COA3_H +0000071a UCB3I2COA3_L +00000720 UCB3I2CSA +00000721 UCB3I2CSA_H +00000720 UCB3I2CSA_L +0000072a UCB3IE +0000072b UCB3IE_H +0000072a UCB3IE_L +0000072c UCB3IFG +0000072d UCB3IFG_H +0000072c UCB3IFG_L +0000072e UCB3IV +0000072f UCB3IV_H +0000072e UCB3IV_L +0000070c UCB3RXBUF +0000070d UCB3RXBUF_H +0000070c UCB3RXBUF_L +00000708 UCB3STATW +00000709 UCB3STATW_H +00000708 UCB3STATW_L +0000070a UCB3TBCNT +0000070b UCB3TBCNT_H +0000070a UCB3TBCNT_L +0000070e UCB3TXBUF +0000070f UCB3TXBUF_H +0000070e UCB3TXBUF_L +00004400 USCI_A0_ISR +000044ca USCI_A1_ISR +0000015c WDTCTL +0000015d WDTCTL_H +0000015c WDTCTL_L +00012d82 WdCmdMsgs__deserializeBody +00016aa0 WdCmdMsgs__deserializeMessage +00016708 WdCmdMsgs__serializeGroundResponse +0001add6 WdIntMpsm__processEdge +00004002 _CIOBUF_ +000046e0 _Z7WDT_ISRv +0001b226 _ZN10__cxxabiv117__class_type_infoD0Ev +0001b3c2 _ZN10__cxxabiv117__class_type_infoD1Ev +0001b3c2 _ZN10__cxxabiv117__class_type_infoD2Ev +0001afc8 _ZN10__cxxabiv120__si_class_type_infoD0Ev +0001b3d0 _ZN10__cxxabiv120__si_class_type_infoD1Ev +0001b3d0 _ZN10__cxxabiv120__si_class_type_infoD2Ev +00016c26 _ZN4iris13stateToStringENS_10RoverStateE +00019b7a _ZN4iris14RoverStateBase12doGndCmdEchoERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00015bf8 _ZN4iris14RoverStateBase12echoToLanderERNS_12RoverContextEhPKh +00015908 _ZN4iris14RoverStateBase13heaterControlERNS_12RoverContextE +0001aa7e _ZN4iris14RoverStateBase14doGndCmdDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001afde _ZN4iris14RoverStateBase14handleHighTempERNS_12RoverContextE +00018a20 _ZN4iris14RoverStateBase14txDownlinkDataERNS_12RoverContextEPvjb +00016b22 _ZN4iris14RoverStateBase15handleWdIntEdgeEbRNS_12RoverContextE +0001aa9c _ZN4iris14RoverStateBase16handleLanderDataERNS_12RoverContextE +00013112 _ZN4iris14RoverStateBase17landerMsgCallbackEPhjPv +0001aaba _ZN4iris14RoverStateBase18handleHerculesDataERNS_12RoverContextE +000164e4 _ZN4iris14RoverStateBase18pumpMsgsFromLanderERNS_12RoverContextE +0001656e _ZN4iris14RoverStateBase18sendLanderResponseERNS_12RoverContextER19WdCmdMsgs__Response +00013c52 _ZN4iris14RoverStateBase19enableHerculesCommsERNS_12RoverContextE +000160c4 _ZN4iris14RoverStateBase19herculesMsgCallbackEP16HercMsgs__HeaderPhjPv +0001b416 _ZN4iris14RoverStateBase20canEnterLowPowerModeERNS_12RoverContextE +000186f8 _ZN4iris14RoverStateBase20doGndCmdSetVSAEStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00018554 _ZN4iris14RoverStateBase20pumpMsgsFromHerculesERNS_12RoverContextE +0001aad8 _ZN4iris14RoverStateBase21doGndCmdPrepForDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001a56c _ZN4iris14RoverStateBase21doGndCmdResetSpecificERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001a984 _ZN4iris14RoverStateBase21handleWdIntRisingEdgeERNS_12RoverContextE +0001178e _ZN4iris14RoverStateBase21initiateNextI2cActionERNS_12RoverContextE +0001aaf6 _ZN4iris14RoverStateBase22doGndCmdEnterSleepModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +000191b4 _ZN4iris14RoverStateBase22doGndCmdSetBattEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001ad4e _ZN4iris14RoverStateBase22doGndCmdSwitchConnModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001a594 _ZN4iris14RoverStateBase22handleUplinkFromLanderERNS_12RoverContextEPhj +0001a9a4 _ZN4iris14RoverStateBase22handleWdIntFallingEdgeERNS_12RoverContextE +000113a0 _ZN4iris14RoverStateBase22performWatchdogCommandERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +000148e0 _ZN4iris14RoverStateBase23handleDebugFromHerculesERNS_12RoverContextEP16HercMsgs__HeaderPhj +000161fe _ZN4iris14RoverStateBase23handleResetFromHerculesERNS_12RoverContextEP16HercMsgs__Header +0001a14c _ZN4iris14RoverStateBase24doGndCmdClearResetMemoryERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001ab14 _ZN4iris14RoverStateBase24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00018044 _ZN4iris14RoverStateBase24doGndCmdLatchSetPulseLowERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001874a _ZN4iris14RoverStateBase24doGndCmdSetChargeEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00015cae _ZN4iris14RoverStateBase24handleStrokeFromHerculesERNS_12RoverContextEP16HercMsgs__Header +0001879c _ZN4iris14RoverStateBase25doGndCmdSetLatchBattStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00019f76 _ZN4iris14RoverStateBase25handleRadioGotWifiCommandERNS_12RoverContextE +00010908 _ZN4iris14RoverStateBase26doConditionalResetSpecificERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__ResponsebbbbRb +000187ee _ZN4iris14RoverStateBase26doGndCmdDangForceBattStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001ab32 _ZN4iris14RoverStateBase26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +000180a6 _ZN4iris14RoverStateBase26doGndCmdLatchResetPulseLowERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001ab50 _ZN4iris14RoverStateBase26doGndCmdSetBattCtrlEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00017d24 _ZN4iris14RoverStateBase26doGndCmdSetDebugCommsStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001985c _ZN4iris14RoverStateBase26doGndCmdSetHeaterDutyCycleERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00013870 _ZN4iris14RoverStateBase26handleDownlinkFromHerculesERNS_12RoverContextEP16HercMsgs__HeaderPhj +00014002 _ZN4iris14RoverStateBase26sendDetailedReportToLanderERNS_12RoverContextEb +000191f6 _ZN4iris14RoverStateBase27doGndCmdSetChargeRegEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001a448 _ZN4iris14RoverStateBase28doGndCmdSetAutoHeaterOnValueERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001aff4 _ZN4iris14RoverStateBase28handleRadioExitStasisCommandERNS_12RoverContextE +0001a8dc _ZN4iris14RoverStateBase29doGndCmdRequestDetailedReportERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001a472 _ZN4iris14RoverStateBase29doGndCmdSetAutoHeaterOffValueERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001b3de _ZN4iris14RoverStateBase29handleRadioEnterStasisCommandERNS_12RoverContextE +0001a342 _ZN4iris14RoverStateBase32doGndCmdSetHeaterDutyCyclePeriodERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00019636 _ZN4iris14RoverStateBase33handleRadioPowerCycleRadioCommandERNS_12RoverContextE +00019674 _ZN4iris14RoverStateBase36handleRadioPowerCycleHerculesCommandERNS_12RoverContextE +0001b23a _ZN4iris14RoverStateBase8getStateEv +0001a9c4 _ZN4iris14RoverStateBaseC1ENS_10RoverStateE +0001a9c4 _ZN4iris14RoverStateBaseC2ENS_10RoverStateE +00012f50 _ZN4iris14RoverStateInit12transitionToERNS_12RoverContextE +0001ab6e _ZN4iris14RoverStateInit14handleHighTempERNS_12RoverContextE +0001ab8c _ZN4iris14RoverStateInit15handleTimerTickERNS_12RoverContextE +0001abaa _ZN4iris14RoverStateInit16handleLanderDataERNS_12RoverContextE +0001abc8 _ZN4iris14RoverStateInit16handlePowerIssueERNS_12RoverContextE +0001abe6 _ZN4iris14RoverStateInit18handleHerculesDataERNS_12RoverContextE +0001ac04 _ZN4iris14RoverStateInit19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response +0001b422 _ZN4iris14RoverStateInit20canEnterLowPowerModeERNS_12RoverContextE +0001ac22 _ZN4iris14RoverStateInit8spinOnceERNS_12RoverContextE +0001a17a _ZN4iris14RoverStateInitC1ENS_10RoverStateEPKc +0001a17a _ZN4iris14RoverStateInitC2ENS_10RoverStateEPKc +00013d90 _ZN4iris17RoverStateManager11handleEventE11Event__Type +00015776 _ZN4iris17RoverStateManager11spinForeverEv +00016ca6 _ZN4iris17RoverStateManager22transitionUntilSettledENS_10RoverStateE +00016680 _ZN4iris17RoverStateManager26getStateObjectForStateEnumENS_10RoverStateE +00013b12 _ZN4iris17RoverStateManager4initEv +00016812 _ZN4iris17RoverStateManagerC1EPKc +00016812 _ZN4iris17RoverStateManagerC2EPKc +00019bb0 _ZN4iris17RoverStateMission12transitionToERNS_12RoverContextE +0001a67a _ZN4iris17RoverStateMission13heaterControlERNS_12RoverContextE +00018108 _ZN4iris17RoverStateMission14doGndCmdDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001233c _ZN4iris17RoverStateMission15handleTimerTickERNS_12RoverContextE +0001b00a _ZN4iris17RoverStateMission16handlePowerIssueERNS_12RoverContextE +00016330 _ZN4iris17RoverStateMission19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response +0001adf0 _ZN4iris17RoverStateMission20canEnterLowPowerModeERNS_12RoverContextE +00018dc8 _ZN4iris17RoverStateMission22performWatchdogCommandERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00019fa6 _ZN4iris17RoverStateMission24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00014eb2 _ZN4iris17RoverStateMission8spinOnceERNS_12RoverContextE +0001a36e _ZN4iris17RoverStateMissionC1Ev +0001a36e _ZN4iris17RoverStateMissionC2Ev +0001ae0a _ZN4iris17RoverStateService12transitionToERNS_12RoverContextE +000129b6 _ZN4iris17RoverStateService15handleTimerTickERNS_12RoverContextE +0001b020 _ZN4iris17RoverStateService16handlePowerIssueERNS_12RoverContextE +0001ae24 _ZN4iris17RoverStateService20canEnterLowPowerModeERNS_12RoverContextE +0001af0a _ZN4iris17RoverStateService21doGndCmdPrepForDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00018e14 _ZN4iris17RoverStateService22performWatchdogCommandERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001990e _ZN4iris17RoverStateService24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00019fd6 _ZN4iris17RoverStateService26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00014f9a _ZN4iris17RoverStateService8spinOnceERNS_12RoverContextE +0001a8fe _ZN4iris17RoverStateServiceC1Ev +0001a8fe _ZN4iris17RoverStateServiceC2Ev +00018f86 _ZN4iris19RoverStateKeepAlive12transitionToERNS_12RoverContextE +00019d86 _ZN4iris19RoverStateKeepAlive15handleTimerTickERNS_12RoverContextE +0001b036 _ZN4iris19RoverStateKeepAlive16handlePowerIssueERNS_12RoverContextE +0001ac40 _ZN4iris19RoverStateKeepAlive18handleHerculesDataERNS_12RoverContextE +0001ae3e _ZN4iris19RoverStateKeepAlive20canEnterLowPowerModeERNS_12RoverContextE +0001af22 _ZN4iris19RoverStateKeepAlive24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001af3a _ZN4iris19RoverStateKeepAlive26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +000146ce _ZN4iris19RoverStateKeepAlive8spinOnceERNS_12RoverContextE +0001a920 _ZN4iris19RoverStateKeepAliveC1Ev +0001a920 _ZN4iris19RoverStateKeepAliveC2Ev +0001ac5e _ZN4iris25RoverStateEnteringMission12transitionToERNS_12RoverContextE +000132ae _ZN4iris25RoverStateEnteringMission15handleTimerTickERNS_12RoverContextE +0001b04c _ZN4iris25RoverStateEnteringMission16handlePowerIssueERNS_12RoverContextE +00016f86 _ZN4iris25RoverStateEnteringMission19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response +0001b42e _ZN4iris25RoverStateEnteringMission20canEnterLowPowerModeERNS_12RoverContextE +0001a39a _ZN4iris25RoverStateEnteringMission29transitionToWaitingForI2cDoneERNS_12RoverContextE +00016454 _ZN4iris25RoverStateEnteringMission38transitionToWaitingForIoExpanderWrite1ERNS_12RoverContextE +00016896 _ZN4iris25RoverStateEnteringMission38transitionToWaitingForIoExpanderWrite2ERNS_12RoverContextE +00016ba4 _ZN4iris25RoverStateEnteringMission38transitionToWaitingForIoExpanderWrite3ERNS_12RoverContextE +00016e98 _ZN4iris25RoverStateEnteringMission40transitionToWaitingForFuelGaugeOrTimeoutERNS_12RoverContextE +0001a942 _ZN4iris25RoverStateEnteringMission41transitionToWatitingForWifiReadyOrTimeoutERNS_12RoverContextE +00010f0c _ZN4iris25RoverStateEnteringMission8spinOnceERNS_12RoverContextE +0001a70e _ZN4iris25RoverStateEnteringMissionC1Ev +0001a70e _ZN4iris25RoverStateEnteringMissionC2Ev +0001ac7c _ZN4iris25RoverStateEnteringService12transitionToERNS_12RoverContextE +0001b062 _ZN4iris25RoverStateEnteringService16handlePowerIssueERNS_12RoverContextE +0001ae58 _ZN4iris25RoverStateEnteringService18handleHerculesDataERNS_12RoverContextE +00016ffc _ZN4iris25RoverStateEnteringService19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response +0001a732 _ZN4iris25RoverStateEnteringService24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00019948 _ZN4iris25RoverStateEnteringService26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001b43a _ZN4iris25RoverStateEnteringService28nextStateAfterSetupCompletesEv +0001b446 _ZN4iris25RoverStateEnteringService8spinOnceERNS_12RoverContextE +0001a756 _ZN4iris25RoverStateEnteringServiceC1ENS_10RoverStateE +0001a77a _ZN4iris25RoverStateEnteringServiceC1Ev +0001a756 _ZN4iris25RoverStateEnteringServiceC2ENS_10RoverStateE +0001a77a _ZN4iris25RoverStateEnteringServiceC2Ev +0001a49c _ZN4iris27RoverStateEnteringKeepAlive12transitionToERNS_12RoverContextE +00014386 _ZN4iris27RoverStateEnteringKeepAlive15handleTimerTickERNS_12RoverContextE +0001b078 _ZN4iris27RoverStateEnteringKeepAlive16handlePowerIssueERNS_12RoverContextE +00019db8 _ZN4iris27RoverStateEnteringKeepAlive18handleHerculesDataERNS_12RoverContextE +00017072 _ZN4iris27RoverStateEnteringKeepAlive19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response +0001b452 _ZN4iris27RoverStateEnteringKeepAlive20canEnterLowPowerModeERNS_12RoverContextE +0001b08e _ZN4iris27RoverStateEnteringKeepAlive22handleUplinkFromLanderERNS_12RoverContextEPhj +00019ad6 _ZN4iris27RoverStateEnteringKeepAlive25transitionToFinishUpSetupERNS_12RoverContextE +0001a79e _ZN4iris27RoverStateEnteringKeepAlive26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001b45e _ZN4iris27RoverStateEnteringKeepAlive28nextStateAfterSetupCompletesEv +00015082 _ZN4iris27RoverStateEnteringKeepAlive37transitionToWaitingForIoExpanderWriteERNS_12RoverContextE +00015a86 _ZN4iris27RoverStateEnteringKeepAlive8spinOnceERNS_12RoverContextE +0001a7c2 _ZN4iris27RoverStateEnteringKeepAliveC1ENS_10RoverStateE +0001a7e6 _ZN4iris27RoverStateEnteringKeepAliveC1Ev +0001a7c2 _ZN4iris27RoverStateEnteringKeepAliveC2ENS_10RoverStateE +0001a7e6 _ZN4iris27RoverStateEnteringKeepAliveC2Ev +0001b54c _ZNSt9type_infoD1Ev +0001b54c _ZNSt9type_infoD2Ev +0001b52e _ZSt17__throw_bad_allocv +0000d008 _ZTIN10__cxxabiv117__class_type_infoE +0000d014 _ZTIN10__cxxabiv120__si_class_type_infoE +0000d074 _ZTIN4iris14RoverStateBaseE +0000d020 _ZTIN4iris14RoverStateInitE +0000d02c _ZTIN4iris17RoverStateMissionE +0000d038 _ZTIN4iris17RoverStateServiceE +0000d044 _ZTIN4iris19RoverStateKeepAliveE +0000d050 _ZTIN4iris25RoverStateEnteringMissionE +0000d05c _ZTIN4iris25RoverStateEnteringServiceE +0000d068 _ZTIN4iris27RoverStateEnteringKeepAliveE +0000d07c _ZTISt9type_info +0000cede _ZTSN10__cxxabiv117__class_type_infoE +0000ce4a _ZTSN10__cxxabiv120__si_class_type_infoE +0000cf6e _ZTSN4iris14RoverStateBaseE +0000cf86 _ZTSN4iris14RoverStateInitE +0000cf1e _ZTSN4iris17RoverStateMissionE +0000cf3a _ZTSN4iris17RoverStateServiceE +0000cf00 _ZTSN4iris19RoverStateKeepAliveE +0000ce96 _ZTSN4iris25RoverStateEnteringMissionE +0000ceba _ZTSN4iris25RoverStateEnteringServiceE +0000ce70 _ZTSN4iris27RoverStateEnteringKeepAliveE +0000cffa _ZTSSt9type_info +0000cfda _ZTVN10__cxxabiv117__class_type_infoE +0000cfea _ZTVN10__cxxabiv120__si_class_type_infoE +0000c888 _ZTVN4iris14RoverStateBaseE +0000c96c _ZTVN4iris14RoverStateInitE +0000ca50 _ZTVN4iris17RoverStateMissionE +0000c4e8 _ZTVN4iris17RoverStateServiceE +0000c5d0 _ZTVN4iris19RoverStateKeepAliveE +0000cb34 _ZTVN4iris25RoverStateEnteringMissionE +0000c6b8 _ZTVN4iris25RoverStateEnteringServiceE +0000c7a0 _ZTVN4iris27RoverStateEnteringKeepAliveE +0001b46a _ZdlPv +0001b540 _ZdlPvj +00003c00 __STACK_END +000005d4 __STACK_SIZE +00000008 __SYSMEM_SIZE +0000d10e __TI_CINIT_Base +0000d11e __TI_CINIT_Limit +0000d0fc __TI_Handler_Table_Base +0000d108 __TI_Handler_Table_Limit +000046f0 __TI_ISR_TRAP +00018600 __TI_auto_init_nobinit_nopinit_hold_wdt +00019be6 __TI_cleanup +0000355a __TI_cleanup_ptr +00017246 __TI_closefile +000170e8 __TI_decompress_lzss +0001b2ec __TI_decompress_none +00017e52 __TI_doflush +0000355e __TI_dtors_ptr +0000358c __TI_enable_exit_profile_output +0000358a __TI_ft_end +0000ffb4 __TI_int18 +0000ffb6 __TI_int19 +0000ffb8 __TI_int20 +0000ffba __TI_int21 +0000ffbc __TI_int22 +0000ffbe __TI_int23 +0000ffc0 __TI_int24 +0000ffc2 __TI_int25 +0000ffc4 __TI_int26 +0000ffc6 __TI_int27 +0000ffc8 __TI_int28 +0000ffca __TI_int29 +0000ffcc __TI_int30 +0000ffce __TI_int31 +0000ffd0 __TI_int32 +0000ffd2 __TI_int33 +0000ffd4 __TI_int34 +0000ffd6 __TI_int35 +0000ffd8 __TI_int36 +0000ffda __TI_int37 +0000ffdc __TI_int38 +0000ffde __TI_int39 +0000ffe0 __TI_int40 +0000ffe2 __TI_int41 +0000ffe4 __TI_int42 +0000ffe6 __TI_int43 +0000ffe8 __TI_int44 +0000ffea __TI_int45 +0000ffec __TI_int46 +0000ffee __TI_int47 +0000fff0 __TI_int48 +0000fff2 __TI_int49 +0000fff4 __TI_int50 +0000fff6 __TI_int51 +0000fff8 __TI_int52 +0000fffa __TI_int53 +0000fffc __TI_int54 +ffffffff __TI_pprof_out_hndl +00015412 __TI_printfi_minimal +ffffffff __TI_prof_data_size +ffffffff __TI_prof_data_start +00019dea __TI_readmsg +00002800 __TI_tmpnams +00019c1c __TI_writemsg +00016d26 __TI_wrt_ok +0001a80a __TI_zero_init +0001b544 __abort_execution +ffffffff __c_args__ +0001b4ba __cxa_pure_virtual +00000001 __mpu_enable +0001a3c6 __mpu_init +0001b16a __mspabi_divu +0001af82 __mspabi_mpyi_f5hw +0001b16a __mspabi_remu +0001b492 __mspabi_slli +00019728 __mspabi_slll_1 +00019704 __mspabi_slll_10 +00019700 __mspabi_slll_11 +000196fc __mspabi_slll_12 +000196f8 __mspabi_slll_13 +000196f4 __mspabi_slll_14 +000196f0 __mspabi_slll_15 +00019724 __mspabi_slll_2 +00019720 __mspabi_slll_3 +0001971c __mspabi_slll_4 +00019718 __mspabi_slll_5 +00019714 __mspabi_slll_6 +00019710 __mspabi_slll_7 +0001970c __mspabi_slll_8 +00019708 __mspabi_slll_9 +0001b49c __mspabi_srli +0001b364 __mspabi_srll +00019982 __mspabi_srlll +0001ae72 _abort_msg +000046c0 _c_int00_noargs_mpu +0000326e _device +000031a6 _ftable +00003562 _lock +0001b54e _nop +0000fffe _reset_vector +0000362c _stack +00003366 _stream +00004124 _sys_memory +0001b550 _system_post_cinit +0001b548 _system_pre_init +00003566 _unlock +0001b52e abort +00019c86 adcCheckVoltageLevels +000176a0 adc_init +000147d8 aligned_alloc +0001ac9a blimp_battEnOff +0001ae8c blimp_battEnOn +0001b3ec blimp_batteryState +0001a006 blimp_bstat +00019e1c blimp_bstat_dangerous_forceHigh +00019e4e blimp_bstat_dangerous_forceLow +00019e80 blimp_bstat_safe_restoreInput +0001a4c6 blimp_chargerEnForceHigh +0001a1a8 blimp_chargerEnOff +0001a4f0 blimp_chargerEnOn +00017eb6 blimp_initialize +0001acb8 blimp_latchBattOff +0001aea6 blimp_latchBattOn +00019cba blimp_latchBattUpdate +0001784a blimp_latchResetHigh +000178b4 blimp_latchResetLow +00018396 blimp_latchResetOff +0001a1d6 blimp_latchResetPulseLow +00017f1a blimp_latchSetHigh +00017f7e blimp_latchSetLow +000185aa blimp_latchSetOff +0001a204 blimp_latchSetPulseLow +00019cee blimp_normalBoot +0001acd6 blimp_regEnOff +0001af52 blimp_regEnOn +0001a232 blimp_vSysAllEnForceLow +00019eb2 blimp_vSysAllEnOff +0001a260 blimp_vSysAllEnOn +00019238 clockInit +000183f0 close +0001b0a4 disable3V3PowerRail +0001b474 disableBatteries +0001a82e disableHeater +0001a852 disableUart0Pins +0001b534 disableVSysAllPowerRail +0001b2fe enable3V3PowerRail +0001b47e enableBatteries +000196b2 enableHeater +0001aec0 enableUart0Pins +0001acf4 enableUart1Pins +0001b53a enableVSysAllPowerRail +0001b0ba enableWdIntFallingEdgeInterrupt +0001b0d0 enableWdIntRisingEdgeInterrupt +00018ef4 exit +000184fc fflush +0001a28e finddevice +0001b334 fpgaCameraSelectHi +0001b0e6 fpgaCameraSelectLo +00014dc2 fputs +00004400 fram_ipe_end +00004400 fram_ipe_start +00004000 fram_rw_start +00004400 fram_rx_start +000155c8 free +0001791e fseek +000145c2 getResetReasonString +0001b344 getWdIntState +0001844a getdevice +0001b354 hook_sp_check +00011ade initializeGpios +0001b310 isAdcSampleDone +0001972e lseek +0001a2bc main +0001b4c2 malloc +000147d8 memalign +0001ad12 memccpy +0001b112 memchr +0001b276 memcpy +0001b128 memset +0000a501 mpu_ctl0_value +00001513 mpu_sam_value +00000440 mpu_segment_border1 +00000440 mpu_segment_border2 +00002900 parmbuf +0000462c port1_isr_handler +0001b28a powerOffFpga +0001b29e powerOffHercules +0001b2b2 powerOffMotors +0001af6a powerOffRadio +0001b374 powerOnFpga +0001b384 powerOnHercules +0001b394 powerOnMotors +0001b13e powerOnRadio +000159ca readOnChipInputs +0001b154 releaseFPGAReset +0001ad30 releaseHerculesReset +0001b4ca releaseMotor1Reset +0001b4d2 releaseMotor2Reset +0001b4da releaseMotor3Reset +0001b4e2 releaseMotor4Reset +0001b488 releaseMotorsReset +0001b2c6 releaseRadioReset +0001a036 remove +0001b3a4 setDeploy +0001af9a setFPGAReset +0001a6a0 setHerculesReset +0001b4ea setMotor1Reset +0001b4f2 setMotor2Reset +0001b4fa setMotor3Reset +0001b502 setMotor4Reset +0001b4a6 setMotorsReset +0001b180 setRadioReset +00015334 setvbuf +00019170 sprintf +0001b196 startChargingBatteries +0001b4b0 stopChargingBatteries +0001ad6a strchr +0001ad86 strcmp +0001b322 strcpy +0001b3fa strlen +00019ee4 strncpy +00003554 theQueue +0001a036 unlink +0001b1ac unsetDeploy +000199bc vsprintf +000139ce watchdog_build_hercules_telem +0001b408 watchdog_get_wd_int_flat_duration +000144a6 watchdog_init +00011dcc watchdog_monitor +00019898 write + + +GLOBAL SYMBOLS: SORTED BY Symbol Address + +address name +------- ---- +00000001 __mpu_enable +00000008 __SYSMEM_SIZE +00000100 SFRIE1 +00000100 SFRIE1_L +00000101 SFRIE1_H +00000102 SFRIFG1 +00000102 SFRIFG1_L +00000103 SFRIFG1_H +00000104 SFRRPCR +00000104 SFRRPCR_L +00000105 SFRRPCR_H +00000120 PMMCTL0 +00000120 PMMCTL0_L +00000121 PMMCTL0_H +0000012a PMMIFG +0000012a PMMIFG_L +0000012b PMMIFG_H +00000130 PM5CTL0 +00000130 PM5CTL0_L +00000131 PM5CTL0_H +00000140 FRCTL0 +00000140 FRCTL0_L +00000141 FRCTL0_H +00000144 GCCTL0 +00000144 GCCTL0_L +00000145 GCCTL0_H +00000146 GCCTL1 +00000146 GCCTL1_L +00000147 GCCTL1_H +00000150 CRCDI +00000150 CRCDI_L +00000151 CRCDI_H +00000152 CRCDIRB +00000152 CRCDIRB_L +00000153 CRCDIRB_H +00000154 CRCINIRES +00000154 CRCINIRES_L +00000155 CRCINIRES_H +00000156 CRCRESR +00000156 CRCRESR_L +00000157 CRCRESR_H +00000158 RCCTL0 +00000158 RCCTL0_L +00000159 RCCTL0_H +0000015c WDTCTL +0000015c WDTCTL_L +0000015d WDTCTL_H +00000160 CSCTL0 +00000160 CSCTL0_L +00000161 CSCTL0_H +00000162 CSCTL1 +00000162 CSCTL1_L +00000163 CSCTL1_H +00000164 CSCTL2 +00000164 CSCTL2_L +00000165 CSCTL2_H +00000166 CSCTL3 +00000166 CSCTL3_L +00000167 CSCTL3_H +00000168 CSCTL4 +00000168 CSCTL4_L +00000169 CSCTL4_H +0000016a CSCTL5 +0000016a CSCTL5_L +0000016b CSCTL5_H +0000016c CSCTL6 +0000016c CSCTL6_L +0000016d CSCTL6_H +00000180 SYSCTL +00000180 SYSCTL_L +00000181 SYSCTL_H +00000186 SYSJMBC +00000186 SYSJMBC_L +00000187 SYSJMBC_H +00000188 SYSJMBI0 +00000188 SYSJMBI0_L +00000189 SYSJMBI0_H +0000018a SYSJMBI1 +0000018a SYSJMBI1_L +0000018b SYSJMBI1_H +0000018c SYSJMBO0 +0000018c SYSJMBO0_L +0000018d SYSJMBO0_H +0000018e SYSJMBO1 +0000018e SYSJMBO1_L +0000018f SYSJMBO1_H +0000019a SYSUNIV +0000019a SYSUNIV_L +0000019b SYSUNIV_H +0000019c SYSSNIV +0000019c SYSSNIV_L +0000019d SYSSNIV_H +0000019e SYSRSTIV +0000019e SYSRSTIV_L +0000019f SYSRSTIV_H +000001b0 REFCTL0 +000001b0 REFCTL0_L +000001b1 REFCTL0_H +00000200 P1IN +00000200 PAIN +00000200 PAIN_L +00000201 P2IN +00000201 PAIN_H +00000202 P1OUT +00000202 PAOUT +00000202 PAOUT_L +00000203 P2OUT +00000203 PAOUT_H +00000204 P1DIR +00000204 PADIR +00000204 PADIR_L +00000205 P2DIR +00000205 PADIR_H +00000206 P1REN +00000206 PAREN +00000206 PAREN_L +00000207 P2REN +00000207 PAREN_H +0000020a P1SEL0 +0000020a PASEL0 +0000020a PASEL0_L +0000020b P2SEL0 +0000020b PASEL0_H +0000020c P1SEL1 +0000020c PASEL1 +0000020c PASEL1_L +0000020d P2SEL1 +0000020d PASEL1_H +0000020e P1IV +0000020e P1IV_L +0000020f P1IV_H +00000216 P1SELC +00000216 PASELC +00000216 PASELC_L +00000217 P2SELC +00000217 PASELC_H +00000218 P1IES +00000218 PAIES +00000218 PAIES_L +00000219 P2IES +00000219 PAIES_H +0000021a P1IE +0000021a PAIE +0000021a PAIE_L +0000021b P2IE +0000021b PAIE_H +0000021c P1IFG +0000021c PAIFG +0000021c PAIFG_L +0000021d P2IFG +0000021d PAIFG_H +0000021e P2IV +0000021e P2IV_L +0000021f P2IV_H +00000220 P3IN +00000220 PBIN +00000220 PBIN_L +00000221 P4IN +00000221 PBIN_H +00000222 P3OUT +00000222 PBOUT +00000222 PBOUT_L +00000223 P4OUT +00000223 PBOUT_H +00000224 P3DIR +00000224 PBDIR +00000224 PBDIR_L +00000225 P4DIR +00000225 PBDIR_H +00000226 P3REN +00000226 PBREN +00000226 PBREN_L +00000227 P4REN +00000227 PBREN_H +0000022a P3SEL0 +0000022a PBSEL0 +0000022a PBSEL0_L +0000022b P4SEL0 +0000022b PBSEL0_H +0000022c P3SEL1 +0000022c PBSEL1 +0000022c PBSEL1_L +0000022d P4SEL1 +0000022d PBSEL1_H +0000022e P3IV +0000022e P3IV_L +0000022f P3IV_H +00000236 P3SELC +00000236 PBSELC +00000236 PBSELC_L +00000237 P4SELC +00000237 PBSELC_H +00000238 P3IES +00000238 PBIES +00000238 PBIES_L +00000239 P4IES +00000239 PBIES_H +0000023a P3IE +0000023a PBIE +0000023a PBIE_L +0000023b P4IE +0000023b PBIE_H +0000023c P3IFG +0000023c PBIFG +0000023c PBIFG_L +0000023d P4IFG +0000023d PBIFG_H +0000023e P4IV +0000023e P4IV_L +0000023f P4IV_H +00000240 P5IN +00000240 PCIN +00000240 PCIN_L +00000241 P6IN +00000241 PCIN_H +00000242 P5OUT +00000242 PCOUT +00000242 PCOUT_L +00000243 P6OUT +00000243 PCOUT_H +00000244 P5DIR +00000244 PCDIR +00000244 PCDIR_L +00000245 P6DIR +00000245 PCDIR_H +00000246 P5REN +00000246 PCREN +00000246 PCREN_L +00000247 P6REN +00000247 PCREN_H +0000024a P5SEL0 +0000024a PCSEL0 +0000024a PCSEL0_L +0000024b P6SEL0 +0000024b PCSEL0_H +0000024c P5SEL1 +0000024c PCSEL1 +0000024c PCSEL1_L +0000024d P6SEL1 +0000024d PCSEL1_H +0000024e P5IV +0000024e P5IV_L +0000024f P5IV_H +00000256 P5SELC +00000256 PCSELC +00000256 PCSELC_L +00000257 P6SELC +00000257 PCSELC_H +00000258 P5IES +00000258 PCIES +00000258 PCIES_L +00000259 P6IES +00000259 PCIES_H +0000025a P5IE +0000025a PCIE +0000025a PCIE_L +0000025b P6IE +0000025b PCIE_H +0000025c P5IFG +0000025c PCIFG +0000025c PCIFG_L +0000025d P6IFG +0000025d PCIFG_H +0000025e P6IV +0000025e P6IV_L +0000025f P6IV_H +00000260 P7IN +00000260 PDIN +00000260 PDIN_L +00000261 P8IN +00000261 PDIN_H +00000262 P7OUT +00000262 PDOUT +00000262 PDOUT_L +00000263 P8OUT +00000263 PDOUT_H +00000264 P7DIR +00000264 PDDIR +00000264 PDDIR_L +00000265 P8DIR +00000265 PDDIR_H +00000266 P7REN +00000266 PDREN +00000266 PDREN_L +00000267 P8REN +00000267 PDREN_H +0000026a P7SEL0 +0000026a PDSEL0 +0000026a PDSEL0_L +0000026b P8SEL0 +0000026b PDSEL0_H +0000026c P7SEL1 +0000026c PDSEL1 +0000026c PDSEL1_L +0000026d P8SEL1 +0000026d PDSEL1_H +0000026e P7IV +0000026e P7IV_L +0000026f P7IV_H +00000276 P7SELC +00000276 PDSELC +00000276 PDSELC_L +00000277 P8SELC +00000277 PDSELC_H +00000278 P7IES +00000278 PDIES +00000278 PDIES_L +00000279 P8IES +00000279 PDIES_H +0000027a P7IE +0000027a PDIE +0000027a PDIE_L +0000027b P8IE +0000027b PDIE_H +0000027c P7IFG +0000027c PDIFG +0000027c PDIFG_L +0000027d P8IFG +0000027d PDIFG_H +0000027e P8IV +0000027e P8IV_L +0000027f P8IV_H +00000320 PJIN +00000320 PJIN_L +00000321 PJIN_H +00000322 PJOUT +00000322 PJOUT_L +00000323 PJOUT_H +00000324 PJDIR +00000324 PJDIR_L +00000325 PJDIR_H +00000326 PJREN +00000326 PJREN_L +00000327 PJREN_H +0000032a PJSEL0 +0000032a PJSEL0_L +0000032b PJSEL0_H +0000032c PJSEL1 +0000032c PJSEL1_L +0000032d PJSEL1_H +00000336 PJSELC +00000336 PJSELC_L +00000337 PJSELC_H +00000340 TA0CTL +00000340 TA0CTL_L +00000341 TA0CTL_H +00000342 TA0CCTL0 +00000342 TA0CCTL0_L +00000343 TA0CCTL0_H +00000344 TA0CCTL1 +00000344 TA0CCTL1_L +00000345 TA0CCTL1_H +00000346 TA0CCTL2 +00000346 TA0CCTL2_L +00000347 TA0CCTL2_H +00000350 TA0R +00000350 TA0R_L +00000351 TA0R_H +00000352 TA0CCR0 +00000352 TA0CCR0_L +00000353 TA0CCR0_H +00000354 TA0CCR1 +00000354 TA0CCR1_L +00000355 TA0CCR1_H +00000356 TA0CCR2 +00000356 TA0CCR2_L +00000357 TA0CCR2_H +00000360 TA0EX0 +00000360 TA0EX0_L +00000361 TA0EX0_H +0000036e TA0IV +0000036e TA0IV_L +0000036f TA0IV_H +00000380 TA1CTL +00000380 TA1CTL_L +00000381 TA1CTL_H +00000382 TA1CCTL0 +00000382 TA1CCTL0_L +00000383 TA1CCTL0_H +00000384 TA1CCTL1 +00000384 TA1CCTL1_L +00000385 TA1CCTL1_H +00000386 TA1CCTL2 +00000386 TA1CCTL2_L +00000387 TA1CCTL2_H +00000390 TA1R +00000390 TA1R_L +00000391 TA1R_H +00000392 TA1CCR0 +00000392 TA1CCR0_L +00000393 TA1CCR0_H +00000394 TA1CCR1 +00000394 TA1CCR1_L +00000395 TA1CCR1_H +00000396 TA1CCR2 +00000396 TA1CCR2_L +00000397 TA1CCR2_H +000003a0 TA1EX0 +000003a0 TA1EX0_L +000003a1 TA1EX0_H +000003ae TA1IV +000003ae TA1IV_L +000003af TA1IV_H +000003c0 TB0CTL +000003c0 TB0CTL_L +000003c1 TB0CTL_H +000003c2 TB0CCTL0 +000003c2 TB0CCTL0_L +000003c3 TB0CCTL0_H +000003c4 TB0CCTL1 +000003c4 TB0CCTL1_L +000003c5 TB0CCTL1_H +000003c6 TB0CCTL2 +000003c6 TB0CCTL2_L +000003c7 TB0CCTL2_H +000003c8 TB0CCTL3 +000003c8 TB0CCTL3_L +000003c9 TB0CCTL3_H +000003ca TB0CCTL4 +000003ca TB0CCTL4_L +000003cb TB0CCTL4_H +000003cc TB0CCTL5 +000003cc TB0CCTL5_L +000003cd TB0CCTL5_H +000003ce TB0CCTL6 +000003ce TB0CCTL6_L +000003cf TB0CCTL6_H +000003d0 TB0R +000003d0 TB0R_L +000003d1 TB0R_H +000003d2 TB0CCR0 +000003d2 TB0CCR0_L +000003d3 TB0CCR0_H +000003d4 TB0CCR1 +000003d4 TB0CCR1_L +000003d5 TB0CCR1_H +000003d6 TB0CCR2 +000003d6 TB0CCR2_L +000003d7 TB0CCR2_H +000003d8 TB0CCR3 +000003d8 TB0CCR3_L +000003d9 TB0CCR3_H +000003da TB0CCR4 +000003da TB0CCR4_L +000003db TB0CCR4_H +000003dc TB0CCR5 +000003dc TB0CCR5_L +000003dd TB0CCR5_H +000003de TB0CCR6 +000003de TB0CCR6_L +000003df TB0CCR6_H +000003e0 TB0EX0 +000003e0 TB0EX0_L +000003e1 TB0EX0_H +000003ee TB0IV +000003ee TB0IV_L +000003ef TB0IV_H +00000400 TA2CTL +00000400 TA2CTL_L +00000401 TA2CTL_H +00000402 TA2CCTL0 +00000402 TA2CCTL0_L +00000403 TA2CCTL0_H +00000404 TA2CCTL1 +00000404 TA2CCTL1_L +00000405 TA2CCTL1_H +00000410 TA2R +00000410 TA2R_L +00000411 TA2R_H +00000412 TA2CCR0 +00000412 TA2CCR0_L +00000413 TA2CCR0_H +00000414 TA2CCR1 +00000414 TA2CCR1_L +00000415 TA2CCR1_H +00000420 TA2EX0 +00000420 TA2EX0_L +00000421 TA2EX0_H +0000042e TA2IV +0000042e TA2IV_L +0000042f TA2IV_H +0000043e CAPTIO0CTL +0000043e CAPTIO0CTL_L +0000043f CAPTIO0CTL_H +00000440 TA3CTL +00000440 TA3CTL_L +00000440 mpu_segment_border1 +00000440 mpu_segment_border2 +00000441 TA3CTL_H +00000442 TA3CCTL0 +00000442 TA3CCTL0_L +00000443 TA3CCTL0_H +00000444 TA3CCTL1 +00000444 TA3CCTL1_L +00000445 TA3CCTL1_H +00000450 TA3R +00000450 TA3R_L +00000451 TA3R_H +00000452 TA3CCR0 +00000452 TA3CCR0_L +00000453 TA3CCR0_H +00000454 TA3CCR1 +00000454 TA3CCR1_L +00000455 TA3CCR1_H +00000460 TA3EX0 +00000460 TA3EX0_L +00000461 TA3EX0_H +0000046e TA3IV +0000046e TA3IV_L +0000046f TA3IV_H +0000047e CAPTIO1CTL +0000047e CAPTIO1CTL_L +0000047f CAPTIO1CTL_H +000004a0 RTCCTL0 +000004a0 RTCCTL0_L +000004a1 RTCCTL0_H +000004a2 RTCCTL13 +000004a2 RTCCTL13_L +000004a3 RTCCTL13_H +000004a4 RTCOCAL +000004a4 RTCOCAL_L +000004a5 RTCOCAL_H +000004a6 RTCTCMP +000004a6 RTCTCMP_L +000004a7 RTCTCMP_H +000004a8 RTCPS0CTL +000004a8 RTCPS0CTL_L +000004a9 RTCPS0CTL_H +000004aa RTCPS1CTL +000004aa RTCPS1CTL_L +000004ab RTCPS1CTL_H +000004ac RT0PS +000004ac RTCPS +000004ac RTCPS_L +000004ad RT1PS +000004ad RTCPS_H +000004ae RTCIV +000004ae RTCIV_L +000004af RTCIV_H +000004b0 RTCCNT1 +000004b0 RTCCNT12 +000004b0 RTCCNT12_L +000004b0 RTCTIM0 +000004b0 RTCTIM0_L +000004b1 RTCCNT12_H +000004b1 RTCCNT2 +000004b1 RTCTIM0_H +000004b2 RTCCNT3 +000004b2 RTCCNT34 +000004b2 RTCCNT34_L +000004b2 RTCTIM1 +000004b2 RTCTIM1_L +000004b3 RTCCNT34_H +000004b3 RTCCNT4 +000004b3 RTCTIM1_H +000004b4 RTCDATE +000004b4 RTCDATE_L +000004b5 RTCDATE_H +000004b6 RTCYEAR +000004b6 RTCYEAR_L +000004b7 RTCYEAR_H +000004b8 RTCAMINHR +000004b8 RTCAMINHR_L +000004b9 RTCAMINHR_H +000004ba RTCADOWDAY +000004ba RTCADOWDAY_L +000004bb RTCADOWDAY_H +000004bc BIN2BCD +000004bc BIN2BCD_L +000004bd BIN2BCD_H +000004be BCD2BIN +000004be BCD2BIN_L +000004bf BCD2BIN_H +000004c0 MPY +000004c0 MPY_L +000004c1 MPY_H +000004c2 MPYS +000004c2 MPYS_L +000004c3 MPYS_H +000004c4 MAC +000004c4 MAC_L +000004c5 MAC_H +000004c6 MACS +000004c6 MACS_L +000004c7 MACS_H +000004c8 OP2 +000004c8 OP2_L +000004c9 OP2_H +000004ca RESLO +000004ca RESLO_L +000004cb RESLO_H +000004cc RESHI +000004cc RESHI_L +000004cd RESHI_H +000004ce SUMEXT +000004ce SUMEXT_L +000004cf SUMEXT_H +000004d0 MPY32L +000004d0 MPY32L_L +000004d1 MPY32L_H +000004d2 MPY32H +000004d2 MPY32H_L +000004d3 MPY32H_H +000004d4 MPYS32L +000004d4 MPYS32L_L +000004d5 MPYS32L_H +000004d6 MPYS32H +000004d6 MPYS32H_L +000004d7 MPYS32H_H +000004d8 MAC32L +000004d8 MAC32L_L +000004d9 MAC32L_H +000004da MAC32H +000004da MAC32H_L +000004db MAC32H_H +000004dc MACS32L +000004dc MACS32L_L +000004dd MACS32L_H +000004de MACS32H +000004de MACS32H_L +000004df MACS32H_H +000004e0 OP2L +000004e0 OP2L_L +000004e1 OP2L_H +000004e2 OP2H +000004e2 OP2H_L +000004e3 OP2H_H +000004e4 RES0 +000004e4 RES0_L +000004e5 RES0_H +000004e6 RES1 +000004e6 RES1_L +000004e7 RES1_H +000004e8 RES2 +000004e8 RES2_L +000004e9 RES2_H +000004ea RES3 +000004ea RES3_L +000004eb RES3_H +000004ec MPY32CTL0 +000004ec MPY32CTL0_L +000004ed MPY32CTL0_H +00000500 DMACTL0 +00000500 DMACTL0_L +00000501 DMACTL0_H +00000502 DMACTL1 +00000502 DMACTL1_L +00000503 DMACTL1_H +00000504 DMACTL2 +00000504 DMACTL2_L +00000505 DMACTL2_H +00000508 DMACTL4 +00000508 DMACTL4_L +00000509 DMACTL4_H +0000050e DMAIV +0000050e DMAIV_L +0000050f DMAIV_H +00000510 DMA0CTL +00000510 DMA0CTL_L +00000511 DMA0CTL_H +00000512 DMA0SA +00000512 DMA0SAL +00000514 DMA0SAH +00000516 DMA0DA +00000516 DMA0DAL +00000518 DMA0DAH +0000051a DMA0SZ +0000051a DMA0SZ_L +0000051b DMA0SZ_H +00000520 DMA1CTL +00000520 DMA1CTL_L +00000521 DMA1CTL_H +00000522 DMA1SA +00000522 DMA1SAL +00000524 DMA1SAH +00000526 DMA1DA +00000526 DMA1DAL +00000528 DMA1DAH +0000052a DMA1SZ +0000052a DMA1SZ_L +0000052b DMA1SZ_H +00000530 DMA2CTL +00000530 DMA2CTL_L +00000531 DMA2CTL_H +00000532 DMA2SA +00000532 DMA2SAL +00000534 DMA2SAH +00000536 DMA2DA +00000536 DMA2DAL +00000538 DMA2DAH +0000053a DMA2SZ +0000053a DMA2SZ_L +0000053b DMA2SZ_H +00000540 DMA3CTL +00000540 DMA3CTL_L +00000541 DMA3CTL_H +00000542 DMA3SA +00000542 DMA3SAL +00000544 DMA3SAH +00000546 DMA3DA +00000546 DMA3DAL +00000548 DMA3DAH +0000054a DMA3SZ +0000054a DMA3SZ_L +0000054b DMA3SZ_H +00000550 DMA4CTL +00000550 DMA4CTL_L +00000551 DMA4CTL_H +00000552 DMA4SA +00000552 DMA4SAL +00000554 DMA4SAH +00000556 DMA4DA +00000556 DMA4DAL +00000558 DMA4DAH +0000055a DMA4SZ +0000055a DMA4SZ_L +0000055b DMA4SZ_H +00000560 DMA5CTL +00000560 DMA5CTL_L +00000561 DMA5CTL_H +00000562 DMA5SA +00000562 DMA5SAL +00000564 DMA5SAH +00000566 DMA5DA +00000566 DMA5DAL +00000568 DMA5DAH +0000056a DMA5SZ +0000056a DMA5SZ_L +0000056b DMA5SZ_H +000005a0 MPUCTL0 +000005a0 MPUCTL0_L +000005a1 MPUCTL0_H +000005a2 MPUCTL1 +000005a2 MPUCTL1_L +000005a3 MPUCTL1_H +000005a4 MPUSEGB2 +000005a4 MPUSEGB2_L +000005a5 MPUSEGB2_H +000005a6 MPUSEGB1 +000005a6 MPUSEGB1_L +000005a7 MPUSEGB1_H +000005a8 MPUSAM +000005a8 MPUSAM_L +000005a9 MPUSAM_H +000005aa MPUIPC0 +000005aa MPUIPC0_L +000005ab MPUIPC0_H +000005ac MPUIPSEGB2 +000005ac MPUIPSEGB2_L +000005ad MPUIPSEGB2_H +000005ae MPUIPSEGB1 +000005ae MPUIPSEGB1_L +000005af MPUIPSEGB1_H +000005c0 UCA0CTLW0 +000005c0 UCA0CTLW0_L +000005c1 UCA0CTLW0_H +000005c2 UCA0CTLW1 +000005c2 UCA0CTLW1_L +000005c3 UCA0CTLW1_H +000005c6 UCA0BRW +000005c6 UCA0BRW_L +000005c7 UCA0BRW_H +000005c8 UCA0MCTLW +000005c8 UCA0MCTLW_L +000005c9 UCA0MCTLW_H +000005ca UCA0STATW +000005ca UCA0STATW_L +000005cb UCA0STATW_H +000005cc UCA0RXBUF +000005cc UCA0RXBUF_L +000005cd UCA0RXBUF_H +000005ce UCA0TXBUF +000005ce UCA0TXBUF_L +000005cf UCA0TXBUF_H +000005d0 UCA0ABCTL +000005d0 UCA0ABCTL_L +000005d1 UCA0ABCTL_H +000005d2 UCA0IRCTL +000005d2 UCA0IRCTL_L +000005d3 UCA0IRCTL_H +000005d4 __STACK_SIZE +000005da UCA0IE +000005da UCA0IE_L +000005db UCA0IE_H +000005dc UCA0IFG +000005dc UCA0IFG_L +000005dd UCA0IFG_H +000005de UCA0IV +000005de UCA0IV_L +000005df UCA0IV_H +000005e0 UCA1CTLW0 +000005e0 UCA1CTLW0_L +000005e1 UCA1CTLW0_H +000005e2 UCA1CTLW1 +000005e2 UCA1CTLW1_L +000005e3 UCA1CTLW1_H +000005e6 UCA1BRW +000005e6 UCA1BRW_L +000005e7 UCA1BRW_H +000005e8 UCA1MCTLW +000005e8 UCA1MCTLW_L +000005e9 UCA1MCTLW_H +000005ea UCA1STATW +000005ea UCA1STATW_L +000005eb UCA1STATW_H +000005ec UCA1RXBUF +000005ec UCA1RXBUF_L +000005ed UCA1RXBUF_H +000005ee UCA1TXBUF +000005ee UCA1TXBUF_L +000005ef UCA1TXBUF_H +000005f0 UCA1ABCTL +000005f0 UCA1ABCTL_L +000005f1 UCA1ABCTL_H +000005f2 UCA1IRCTL +000005f2 UCA1IRCTL_L +000005f3 UCA1IRCTL_H +000005fa UCA1IE +000005fa UCA1IE_L +000005fb UCA1IE_H +000005fc UCA1IFG +000005fc UCA1IFG_L +000005fd UCA1IFG_H +000005fe UCA1IV +000005fe UCA1IV_L +000005ff UCA1IV_H +00000600 UCA2CTLW0 +00000600 UCA2CTLW0_L +00000601 UCA2CTLW0_H +00000602 UCA2CTLW1 +00000602 UCA2CTLW1_L +00000603 UCA2CTLW1_H +00000606 UCA2BRW +00000606 UCA2BRW_L +00000607 UCA2BRW_H +00000608 UCA2MCTLW +00000608 UCA2MCTLW_L +00000609 UCA2MCTLW_H +0000060a UCA2STATW +0000060a UCA2STATW_L +0000060b UCA2STATW_H +0000060c UCA2RXBUF +0000060c UCA2RXBUF_L +0000060d UCA2RXBUF_H +0000060e UCA2TXBUF +0000060e UCA2TXBUF_L +0000060f UCA2TXBUF_H +00000610 UCA2ABCTL +00000610 UCA2ABCTL_L +00000611 UCA2ABCTL_H +00000612 UCA2IRCTL +00000612 UCA2IRCTL_L +00000613 UCA2IRCTL_H +0000061a UCA2IE +0000061a UCA2IE_L +0000061b UCA2IE_H +0000061c UCA2IFG +0000061c UCA2IFG_L +0000061d UCA2IFG_H +0000061e UCA2IV +0000061e UCA2IV_L +0000061f UCA2IV_H +00000620 UCA3CTLW0 +00000620 UCA3CTLW0_L +00000621 UCA3CTLW0_H +00000622 UCA3CTLW1 +00000622 UCA3CTLW1_L +00000623 UCA3CTLW1_H +00000626 UCA3BRW +00000626 UCA3BRW_L +00000627 UCA3BRW_H +00000628 UCA3MCTLW +00000628 UCA3MCTLW_L +00000629 UCA3MCTLW_H +0000062a UCA3STATW +0000062a UCA3STATW_L +0000062b UCA3STATW_H +0000062c UCA3RXBUF +0000062c UCA3RXBUF_L +0000062d UCA3RXBUF_H +0000062e UCA3TXBUF +0000062e UCA3TXBUF_L +0000062f UCA3TXBUF_H +00000630 UCA3ABCTL +00000630 UCA3ABCTL_L +00000631 UCA3ABCTL_H +00000632 UCA3IRCTL +00000632 UCA3IRCTL_L +00000633 UCA3IRCTL_H +0000063a UCA3IE +0000063a UCA3IE_L +0000063b UCA3IE_H +0000063c UCA3IFG +0000063c UCA3IFG_L +0000063d UCA3IFG_H +0000063e UCA3IV +0000063e UCA3IV_L +0000063f UCA3IV_H +00000640 UCB0CTLW0 +00000640 UCB0CTLW0_L +00000641 UCB0CTLW0_H +00000642 UCB0CTLW1 +00000642 UCB0CTLW1_L +00000643 UCB0CTLW1_H +00000646 UCB0BRW +00000646 UCB0BRW_L +00000647 UCB0BRW_H +00000648 UCB0STATW +00000648 UCB0STATW_L +00000649 UCB0STATW_H +0000064a UCB0TBCNT +0000064a UCB0TBCNT_L +0000064b UCB0TBCNT_H +0000064c UCB0RXBUF +0000064c UCB0RXBUF_L +0000064d UCB0RXBUF_H +0000064e UCB0TXBUF +0000064e UCB0TXBUF_L +0000064f UCB0TXBUF_H +00000654 UCB0I2COA0 +00000654 UCB0I2COA0_L +00000655 UCB0I2COA0_H +00000656 UCB0I2COA1 +00000656 UCB0I2COA1_L +00000657 UCB0I2COA1_H +00000658 UCB0I2COA2 +00000658 UCB0I2COA2_L +00000659 UCB0I2COA2_H +0000065a UCB0I2COA3 +0000065a UCB0I2COA3_L +0000065b UCB0I2COA3_H +0000065c UCB0ADDRX +0000065c UCB0ADDRX_L +0000065d UCB0ADDRX_H +0000065e UCB0ADDMASK +0000065e UCB0ADDMASK_L +0000065f UCB0ADDMASK_H +00000660 UCB0I2CSA +00000660 UCB0I2CSA_L +00000661 UCB0I2CSA_H +0000066a UCB0IE +0000066a UCB0IE_L +0000066b UCB0IE_H +0000066c UCB0IFG +0000066c UCB0IFG_L +0000066d UCB0IFG_H +0000066e UCB0IV +0000066e UCB0IV_L +0000066f UCB0IV_H +00000680 UCB1CTLW0 +00000680 UCB1CTLW0_L +00000681 UCB1CTLW0_H +00000682 UCB1CTLW1 +00000682 UCB1CTLW1_L +00000683 UCB1CTLW1_H +00000686 UCB1BRW +00000686 UCB1BRW_L +00000687 UCB1BRW_H +00000688 UCB1STATW +00000688 UCB1STATW_L +00000689 UCB1STATW_H +0000068a UCB1TBCNT +0000068a UCB1TBCNT_L +0000068b UCB1TBCNT_H +0000068c UCB1RXBUF +0000068c UCB1RXBUF_L +0000068d UCB1RXBUF_H +0000068e UCB1TXBUF +0000068e UCB1TXBUF_L +0000068f UCB1TXBUF_H +00000694 UCB1I2COA0 +00000694 UCB1I2COA0_L +00000695 UCB1I2COA0_H +00000696 UCB1I2COA1 +00000696 UCB1I2COA1_L +00000697 UCB1I2COA1_H +00000698 UCB1I2COA2 +00000698 UCB1I2COA2_L +00000699 UCB1I2COA2_H +0000069a UCB1I2COA3 +0000069a UCB1I2COA3_L +0000069b UCB1I2COA3_H +0000069c UCB1ADDRX +0000069c UCB1ADDRX_L +0000069d UCB1ADDRX_H +0000069e UCB1ADDMASK +0000069e UCB1ADDMASK_L +0000069f UCB1ADDMASK_H +000006a0 UCB1I2CSA +000006a0 UCB1I2CSA_L +000006a1 UCB1I2CSA_H +000006aa UCB1IE +000006aa UCB1IE_L +000006ab UCB1IE_H +000006ac UCB1IFG +000006ac UCB1IFG_L +000006ad UCB1IFG_H +000006ae UCB1IV +000006ae UCB1IV_L +000006af UCB1IV_H +000006c0 UCB2CTLW0 +000006c0 UCB2CTLW0_L +000006c1 UCB2CTLW0_H +000006c2 UCB2CTLW1 +000006c2 UCB2CTLW1_L +000006c3 UCB2CTLW1_H +000006c6 UCB2BRW +000006c6 UCB2BRW_L +000006c7 UCB2BRW_H +000006c8 UCB2STATW +000006c8 UCB2STATW_L +000006c9 UCB2STATW_H +000006ca UCB2TBCNT +000006ca UCB2TBCNT_L +000006cb UCB2TBCNT_H +000006cc UCB2RXBUF +000006cc UCB2RXBUF_L +000006cd UCB2RXBUF_H +000006ce UCB2TXBUF +000006ce UCB2TXBUF_L +000006cf UCB2TXBUF_H +000006d4 UCB2I2COA0 +000006d4 UCB2I2COA0_L +000006d5 UCB2I2COA0_H +000006d6 UCB2I2COA1 +000006d6 UCB2I2COA1_L +000006d7 UCB2I2COA1_H +000006d8 UCB2I2COA2 +000006d8 UCB2I2COA2_L +000006d9 UCB2I2COA2_H +000006da UCB2I2COA3 +000006da UCB2I2COA3_L +000006db UCB2I2COA3_H +000006dc UCB2ADDRX +000006dc UCB2ADDRX_L +000006dd UCB2ADDRX_H +000006de UCB2ADDMASK +000006de UCB2ADDMASK_L +000006df UCB2ADDMASK_H +000006e0 UCB2I2CSA +000006e0 UCB2I2CSA_L +000006e1 UCB2I2CSA_H +000006ea UCB2IE +000006ea UCB2IE_L +000006eb UCB2IE_H +000006ec UCB2IFG +000006ec UCB2IFG_L +000006ed UCB2IFG_H +000006ee UCB2IV +000006ee UCB2IV_L +000006ef UCB2IV_H +00000700 UCB3CTLW0 +00000700 UCB3CTLW0_L +00000701 UCB3CTLW0_H +00000702 UCB3CTLW1 +00000702 UCB3CTLW1_L +00000703 UCB3CTLW1_H +00000706 UCB3BRW +00000706 UCB3BRW_L +00000707 UCB3BRW_H +00000708 UCB3STATW +00000708 UCB3STATW_L +00000709 UCB3STATW_H +0000070a UCB3TBCNT +0000070a UCB3TBCNT_L +0000070b UCB3TBCNT_H +0000070c UCB3RXBUF +0000070c UCB3RXBUF_L +0000070d UCB3RXBUF_H +0000070e UCB3TXBUF +0000070e UCB3TXBUF_L +0000070f UCB3TXBUF_H +00000714 UCB3I2COA0 +00000714 UCB3I2COA0_L +00000715 UCB3I2COA0_H +00000716 UCB3I2COA1 +00000716 UCB3I2COA1_L +00000717 UCB3I2COA1_H +00000718 UCB3I2COA2 +00000718 UCB3I2COA2_L +00000719 UCB3I2COA2_H +0000071a UCB3I2COA3 +0000071a UCB3I2COA3_L +0000071b UCB3I2COA3_H +0000071c UCB3ADDRX +0000071c UCB3ADDRX_L +0000071d UCB3ADDRX_H +0000071e UCB3ADDMASK +0000071e UCB3ADDMASK_L +0000071f UCB3ADDMASK_H +00000720 UCB3I2CSA +00000720 UCB3I2CSA_L +00000721 UCB3I2CSA_H +0000072a UCB3IE +0000072a UCB3IE_L +0000072b UCB3IE_H +0000072c UCB3IFG +0000072c UCB3IFG_L +0000072d UCB3IFG_H +0000072e UCB3IV +0000072e UCB3IV_L +0000072f UCB3IV_H +000007c0 TA4CTL +000007c0 TA4CTL_L +000007c1 TA4CTL_H +000007c2 TA4CCTL0 +000007c2 TA4CCTL0_L +000007c3 TA4CCTL0_H +000007c4 TA4CCTL1 +000007c4 TA4CCTL1_L +000007c5 TA4CCTL1_H +000007c6 TA4CCTL2 +000007c6 TA4CCTL2_L +000007c7 TA4CCTL2_H +000007d0 TA4R +000007d0 TA4R_L +000007d1 TA4R_H +000007d2 TA4CCR0 +000007d2 TA4CCR0_L +000007d3 TA4CCR0_H +000007d4 TA4CCR1 +000007d4 TA4CCR1_L +000007d5 TA4CCR1_H +000007d6 TA4CCR2 +000007d6 TA4CCR2_L +000007d7 TA4CCR2_H +000007e0 TA4EX0 +000007e0 TA4EX0_L +000007e1 TA4EX0_H +000007ee TA4IV +000007ee TA4IV_L +000007ef TA4IV_H +00000800 ADC12CTL0 +00000800 ADC12CTL0_L +00000801 ADC12CTL0_H +00000802 ADC12CTL1 +00000802 ADC12CTL1_L +00000803 ADC12CTL1_H +00000804 ADC12CTL2 +00000804 ADC12CTL2_L +00000805 ADC12CTL2_H +00000806 ADC12CTL3 +00000806 ADC12CTL3_L +00000807 ADC12CTL3_H +00000808 ADC12LO +00000808 ADC12LO_L +00000809 ADC12LO_H +0000080a ADC12HI +0000080a ADC12HI_L +0000080b ADC12HI_H +0000080c ADC12IFGR0 +0000080c ADC12IFGR0_L +0000080d ADC12IFGR0_H +0000080e ADC12IFGR1 +0000080e ADC12IFGR1_L +0000080f ADC12IFGR1_H +00000810 ADC12IFGR2 +00000810 ADC12IFGR2_L +00000811 ADC12IFGR2_H +00000812 ADC12IER0 +00000812 ADC12IER0_L +00000813 ADC12IER0_H +00000814 ADC12IER1 +00000814 ADC12IER1_L +00000815 ADC12IER1_H +00000816 ADC12IER2 +00000816 ADC12IER2_L +00000817 ADC12IER2_H +00000818 ADC12IV +00000818 ADC12IV_L +00000819 ADC12IV_H +00000820 ADC12MCTL0 +00000820 ADC12MCTL0_L +00000821 ADC12MCTL0_H +00000822 ADC12MCTL1 +00000822 ADC12MCTL1_L +00000823 ADC12MCTL1_H +00000824 ADC12MCTL2 +00000824 ADC12MCTL2_L +00000825 ADC12MCTL2_H +00000826 ADC12MCTL3 +00000826 ADC12MCTL3_L +00000827 ADC12MCTL3_H +00000828 ADC12MCTL4 +00000828 ADC12MCTL4_L +00000829 ADC12MCTL4_H +0000082a ADC12MCTL5 +0000082a ADC12MCTL5_L +0000082b ADC12MCTL5_H +0000082c ADC12MCTL6 +0000082c ADC12MCTL6_L +0000082d ADC12MCTL6_H +0000082e ADC12MCTL7 +0000082e ADC12MCTL7_L +0000082f ADC12MCTL7_H +00000830 ADC12MCTL8 +00000830 ADC12MCTL8_L +00000831 ADC12MCTL8_H +00000832 ADC12MCTL9 +00000832 ADC12MCTL9_L +00000833 ADC12MCTL9_H +00000834 ADC12MCTL10 +00000834 ADC12MCTL10_L +00000835 ADC12MCTL10_H +00000836 ADC12MCTL11 +00000836 ADC12MCTL11_L +00000837 ADC12MCTL11_H +00000838 ADC12MCTL12 +00000838 ADC12MCTL12_L +00000839 ADC12MCTL12_H +0000083a ADC12MCTL13 +0000083a ADC12MCTL13_L +0000083b ADC12MCTL13_H +0000083c ADC12MCTL14 +0000083c ADC12MCTL14_L +0000083d ADC12MCTL14_H +0000083e ADC12MCTL15 +0000083e ADC12MCTL15_L +0000083f ADC12MCTL15_H +00000840 ADC12MCTL16 +00000840 ADC12MCTL16_L +00000841 ADC12MCTL16_H +00000842 ADC12MCTL17 +00000842 ADC12MCTL17_L +00000843 ADC12MCTL17_H +00000844 ADC12MCTL18 +00000844 ADC12MCTL18_L +00000845 ADC12MCTL18_H +00000846 ADC12MCTL19 +00000846 ADC12MCTL19_L +00000847 ADC12MCTL19_H +00000848 ADC12MCTL20 +00000848 ADC12MCTL20_L +00000849 ADC12MCTL20_H +0000084a ADC12MCTL21 +0000084a ADC12MCTL21_L +0000084b ADC12MCTL21_H +0000084c ADC12MCTL22 +0000084c ADC12MCTL22_L +0000084d ADC12MCTL22_H +0000084e ADC12MCTL23 +0000084e ADC12MCTL23_L +0000084f ADC12MCTL23_H +00000850 ADC12MCTL24 +00000850 ADC12MCTL24_L +00000851 ADC12MCTL24_H +00000852 ADC12MCTL25 +00000852 ADC12MCTL25_L +00000853 ADC12MCTL25_H +00000854 ADC12MCTL26 +00000854 ADC12MCTL26_L +00000855 ADC12MCTL26_H +00000856 ADC12MCTL27 +00000856 ADC12MCTL27_L +00000857 ADC12MCTL27_H +00000858 ADC12MCTL28 +00000858 ADC12MCTL28_L +00000859 ADC12MCTL28_H +0000085a ADC12MCTL29 +0000085a ADC12MCTL29_L +0000085b ADC12MCTL29_H +0000085c ADC12MCTL30 +0000085c ADC12MCTL30_L +0000085d ADC12MCTL30_H +0000085e ADC12MCTL31 +0000085e ADC12MCTL31_L +0000085f ADC12MCTL31_H +00000860 ADC12MEM0 +00000860 ADC12MEM0_L +00000861 ADC12MEM0_H +00000862 ADC12MEM1 +00000862 ADC12MEM1_L +00000863 ADC12MEM1_H +00000864 ADC12MEM2 +00000864 ADC12MEM2_L +00000865 ADC12MEM2_H +00000866 ADC12MEM3 +00000866 ADC12MEM3_L +00000867 ADC12MEM3_H +00000868 ADC12MEM4 +00000868 ADC12MEM4_L +00000869 ADC12MEM4_H +0000086a ADC12MEM5 +0000086a ADC12MEM5_L +0000086b ADC12MEM5_H +0000086c ADC12MEM6 +0000086c ADC12MEM6_L +0000086d ADC12MEM6_H +0000086e ADC12MEM7 +0000086e ADC12MEM7_L +0000086f ADC12MEM7_H +00000870 ADC12MEM8 +00000870 ADC12MEM8_L +00000871 ADC12MEM8_H +00000872 ADC12MEM9 +00000872 ADC12MEM9_L +00000873 ADC12MEM9_H +00000874 ADC12MEM10 +00000874 ADC12MEM10_L +00000875 ADC12MEM10_H +00000876 ADC12MEM11 +00000876 ADC12MEM11_L +00000877 ADC12MEM11_H +00000878 ADC12MEM12 +00000878 ADC12MEM12_L +00000879 ADC12MEM12_H +0000087a ADC12MEM13 +0000087a ADC12MEM13_L +0000087b ADC12MEM13_H +0000087c ADC12MEM14 +0000087c ADC12MEM14_L +0000087d ADC12MEM14_H +0000087e ADC12MEM15 +0000087e ADC12MEM15_L +0000087f ADC12MEM15_H +00000880 ADC12MEM16 +00000880 ADC12MEM16_L +00000881 ADC12MEM16_H +00000882 ADC12MEM17 +00000882 ADC12MEM17_L +00000883 ADC12MEM17_H +00000884 ADC12MEM18 +00000884 ADC12MEM18_L +00000885 ADC12MEM18_H +00000886 ADC12MEM19 +00000886 ADC12MEM19_L +00000887 ADC12MEM19_H +00000888 ADC12MEM20 +00000888 ADC12MEM20_L +00000889 ADC12MEM20_H +0000088a ADC12MEM21 +0000088a ADC12MEM21_L +0000088b ADC12MEM21_H +0000088c ADC12MEM22 +0000088c ADC12MEM22_L +0000088d ADC12MEM22_H +0000088e ADC12MEM23 +0000088e ADC12MEM23_L +0000088f ADC12MEM23_H +00000890 ADC12MEM24 +00000890 ADC12MEM24_L +00000891 ADC12MEM24_H +00000892 ADC12MEM25 +00000892 ADC12MEM25_L +00000893 ADC12MEM25_H +00000894 ADC12MEM26 +00000894 ADC12MEM26_L +00000895 ADC12MEM26_H +00000896 ADC12MEM27 +00000896 ADC12MEM27_L +00000897 ADC12MEM27_H +00000898 ADC12MEM28 +00000898 ADC12MEM28_L +00000899 ADC12MEM28_H +0000089a ADC12MEM29 +0000089a ADC12MEM29_L +0000089b ADC12MEM29_H +0000089c ADC12MEM30 +0000089c ADC12MEM30_L +0000089d ADC12MEM30_H +0000089e ADC12MEM31 +0000089e ADC12MEM31_L +0000089f ADC12MEM31_H +000008c0 CECTL0 +000008c0 CECTL0_L +000008c1 CECTL0_H +000008c2 CECTL1 +000008c2 CECTL1_L +000008c3 CECTL1_H +000008c4 CECTL2 +000008c4 CECTL2_L +000008c5 CECTL2_H +000008c6 CECTL3 +000008c6 CECTL3_L +000008c7 CECTL3_H +000008cc CEINT +000008cc CEINT_L +000008cd CEINT_H +000008ce CEIV +000008ce CEIV_L +000008cf CEIV_H +00000980 CRC32DIW0 +00000980 CRC32DIW0_L +00000981 CRC32DIW0_H +00000982 CRC32DIW1 +00000982 CRC32DIW1_L +00000983 CRC32DIW1_H +00000984 CRC32DIRBW1 +00000984 CRC32DIRBW1_L +00000985 CRC32DIRBW1_H +00000986 CRC32DIRBW0 +00000986 CRC32DIRBW0_L +00000987 CRC32DIRBW0_H +00000988 CRC32INIRESW0 +00000988 CRC32INIRESW0_L +00000989 CRC32INIRESW0_H +0000098a CRC32INIRESW1 +0000098a CRC32INIRESW1_L +0000098b CRC32INIRESW1_H +0000098c CRC32RESRW1 +0000098c CRC32RESRW1_L +0000098d CRC32RESRW1_H +0000098e CRC32RESRW0 +0000098e CRC32RESRW0_L +0000098f CRC32RESRW0_H +00000990 CRC16DIW0 +00000990 CRC16DIW0_L +00000991 CRC16DIW0_H +00000996 CRC16DIRBW0 +00000996 CRC16DIRBW0_L +00000997 CRC16DIRBW0_H +00000998 CRC16INIRESW0 +00000998 CRC16INIRESW0_L +00000999 CRC16INIRESW0_H +0000099e CRC16RESRW0 +0000099e CRC16RESRW0_L +0000099f CRC16RESRW0_H +000009c0 AESACTL0 +000009c0 AESACTL0_L +000009c1 AESACTL0_H +000009c2 AESACTL1 +000009c2 AESACTL1_L +000009c3 AESACTL1_H +000009c4 AESASTAT +000009c4 AESASTAT_L +000009c5 AESASTAT_H +000009c6 AESAKEY +000009c6 AESAKEY_L +000009c7 AESAKEY_H +000009c8 AESADIN +000009c8 AESADIN_L +000009c9 AESADIN_H +000009ca AESADOUT +000009ca AESADOUT_L +000009cb AESADOUT_H +000009cc AESAXDIN +000009cc AESAXDIN_L +000009cd AESAXDIN_H +000009ce AESAXIN +000009ce AESAXIN_L +000009cf AESAXIN_H +00000a80 LEACAP +00000a80 LEACAPL +00000a82 LEACAPH +00000a84 LEACNF0 +00000a84 LEACNF0L +00000a86 LEACNF0H +00000a88 LEACNF1 +00000a88 LEACNF1L +00000a8a LEACNF1H +00000a8c LEACNF2 +00000a8c LEACNF2L +00000a8e LEACNF2H +00000a90 LEAMB +00000a90 LEAMBL +00000a92 LEAMBH +00000a94 LEAMT +00000a94 LEAMTL +00000a96 LEAMTH +00000a98 LEACMA +00000a98 LEACMAL +00000a9a LEACMAH +00000a9c LEACMCTL +00000a9c LEACMCTLL +00000a9e LEACMCTLH +00000aa8 LEACMDSTAT +00000aa8 LEACMDSTATL +00000aaa LEACMDSTATH +00000aac LEAS1STAT +00000aac LEAS1STATL +00000aae LEAS1STATH +00000ab0 LEAS0STAT +00000ab0 LEAS0STATL +00000ab2 LEAS0STATH +00000ab4 LEADSTSTAT +00000ab4 LEADSTSTATL +00000ab6 LEADSTSTATH +00000ac0 LEAPMCTL +00000ac0 LEAPMCTLL +00000ac2 LEAPMCTLH +00000ac4 LEAPMDST +00000ac4 LEAPMDSTL +00000ac6 LEAPMDSTH +00000ac8 LEAPMS1 +00000ac8 LEAPMS1L +00000aca LEAPMS1H +00000acc LEAPMS0 +00000acc LEAPMS0L +00000ace LEAPMS0H +00000ad0 LEAPMCB +00000ad0 LEAPMCBL +00000ad2 LEAPMCBH +00000af0 LEAIFGSET +00000af0 LEAIFGSETL +00000af2 LEAIFGSETH +00000af4 LEAIE +00000af4 LEAIEL +00000af6 LEAIEH +00000af8 LEAIFG +00000af8 LEAIFGL +00000afa LEAIFGH +00000afc LEAIV +00000afc LEAIVL +00000afe LEAIVH +00001513 mpu_sam_value +00002800 __TI_tmpnams +00002900 parmbuf +000031a6 _ftable +0000326e _device +00003366 _stream +00003554 theQueue +0000355a __TI_cleanup_ptr +0000355e __TI_dtors_ptr +00003562 _lock +00003566 _unlock +0000358a __TI_ft_end +0000358c __TI_enable_exit_profile_output +0000362c _stack +00003c00 __STACK_END +00004000 fram_rw_start +00004002 _CIOBUF_ +00004124 _sys_memory +00004400 USCI_A0_ISR +00004400 fram_ipe_end +00004400 fram_ipe_start +00004400 fram_rx_start +000044ca USCI_A1_ISR +00004594 ADC12_ISR +0000462c port1_isr_handler +00004682 Timer0_A1_ISR +000046c0 _c_int00_noargs_mpu +000046e0 _Z7WDT_ISRv +000046f0 __TI_ISR_TRAP +0000a501 mpu_ctl0_value +0000c4e8 _ZTVN4iris17RoverStateServiceE +0000c5d0 _ZTVN4iris19RoverStateKeepAliveE +0000c6b8 _ZTVN4iris25RoverStateEnteringServiceE +0000c7a0 _ZTVN4iris27RoverStateEnteringKeepAliveE +0000c888 _ZTVN4iris14RoverStateBaseE +0000c96c _ZTVN4iris14RoverStateInitE +0000ca50 _ZTVN4iris17RoverStateMissionE +0000cb34 _ZTVN4iris25RoverStateEnteringMissionE +0000ce4a _ZTSN10__cxxabiv120__si_class_type_infoE +0000ce70 _ZTSN4iris27RoverStateEnteringKeepAliveE +0000ce96 _ZTSN4iris25RoverStateEnteringMissionE +0000ceba _ZTSN4iris25RoverStateEnteringServiceE +0000cede _ZTSN10__cxxabiv117__class_type_infoE +0000cf00 _ZTSN4iris19RoverStateKeepAliveE +0000cf1e _ZTSN4iris17RoverStateMissionE +0000cf3a _ZTSN4iris17RoverStateServiceE +0000cf6e _ZTSN4iris14RoverStateBaseE +0000cf86 _ZTSN4iris14RoverStateInitE +0000cfda _ZTVN10__cxxabiv117__class_type_infoE +0000cfea _ZTVN10__cxxabiv120__si_class_type_infoE +0000cffa _ZTSSt9type_info +0000d008 _ZTIN10__cxxabiv117__class_type_infoE +0000d014 _ZTIN10__cxxabiv120__si_class_type_infoE +0000d020 _ZTIN4iris14RoverStateInitE +0000d02c _ZTIN4iris17RoverStateMissionE +0000d038 _ZTIN4iris17RoverStateServiceE +0000d044 _ZTIN4iris19RoverStateKeepAliveE +0000d050 _ZTIN4iris25RoverStateEnteringMissionE +0000d05c _ZTIN4iris25RoverStateEnteringServiceE +0000d068 _ZTIN4iris27RoverStateEnteringKeepAliveE +0000d074 _ZTIN4iris14RoverStateBaseE +0000d07c _ZTISt9type_info +0000d0fc __TI_Handler_Table_Base +0000d108 __TI_Handler_Table_Limit +0000d10e __TI_CINIT_Base +0000d11e __TI_CINIT_Limit +0000ffb4 __TI_int18 +0000ffb6 __TI_int19 +0000ffb8 __TI_int20 +0000ffba __TI_int21 +0000ffbc __TI_int22 +0000ffbe __TI_int23 +0000ffc0 __TI_int24 +0000ffc2 __TI_int25 +0000ffc4 __TI_int26 +0000ffc6 __TI_int27 +0000ffc8 __TI_int28 +0000ffca __TI_int29 +0000ffcc __TI_int30 +0000ffce __TI_int31 +0000ffd0 __TI_int32 +0000ffd2 __TI_int33 +0000ffd4 __TI_int34 +0000ffd6 __TI_int35 +0000ffd8 __TI_int36 +0000ffda __TI_int37 +0000ffdc __TI_int38 +0000ffde __TI_int39 +0000ffe0 __TI_int40 +0000ffe2 __TI_int41 +0000ffe4 __TI_int42 +0000ffe6 __TI_int43 +0000ffe8 __TI_int44 +0000ffea __TI_int45 +0000ffec __TI_int46 +0000ffee __TI_int47 +0000fff0 __TI_int48 +0000fff2 __TI_int49 +0000fff4 __TI_int50 +0000fff6 __TI_int51 +0000fff8 __TI_int52 +0000fffa __TI_int53 +0000fffc __TI_int54 +0000fffe _reset_vector +00010000 GroundMsgs__generateDetailedReport +00010908 _ZN4iris14RoverStateBase26doConditionalResetSpecificERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__ResponsebbbbRb +00010f0c _ZN4iris25RoverStateEnteringMission8spinOnceERNS_12RoverContextE +000113a0 _ZN4iris14RoverStateBase22performWatchdogCommandERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001178e _ZN4iris14RoverStateBase21initiateNextI2cActionERNS_12RoverContextE +00011ade initializeGpios +00011dcc watchdog_monitor +0001233c _ZN4iris17RoverStateMission15handleTimerTickERNS_12RoverContextE +000125b8 I2C_Sensors__getActionStatus +000127bc IpUdp__generateAndSerializeIpUdpHeadersForData +000129b6 _ZN4iris17RoverStateService15handleTimerTickERNS_12RoverContextE +00012baa I2C_Sensors__spinOnce +00012d82 WdCmdMsgs__deserializeBody +00012f50 _ZN4iris14RoverStateInit12transitionToERNS_12RoverContextE +00013112 _ZN4iris14RoverStateBase17landerMsgCallbackEPhjPv +000132ae _ZN4iris25RoverStateEnteringMission15handleTimerTickERNS_12RoverContextE +00013434 HerculesComms__tryGetMessage +000135ae LanderComms__txData +00013870 _ZN4iris14RoverStateBase26handleDownlinkFromHerculesERNS_12RoverContextEP16HercMsgs__HeaderPhj +000139ce watchdog_build_hercules_telem +00013b12 _ZN4iris17RoverStateManager4initEv +00013c52 _ZN4iris14RoverStateBase19enableHerculesCommsERNS_12RoverContextE +00013d90 _ZN4iris17RoverStateManager11handleEventE11Event__Type +00013eca HercMsgs__serializeHeader +00014002 _ZN4iris14RoverStateBase26sendDetailedReportToLanderERNS_12RoverContextEb +00014266 LanderComms__tryGetMessage +00014386 _ZN4iris27RoverStateEnteringKeepAlive15handleTimerTickERNS_12RoverContextE +000144a6 watchdog_init +000145c2 getResetReasonString +000146ce _ZN4iris19RoverStateKeepAlive8spinOnceERNS_12RoverContextE +000147d8 aligned_alloc +000147d8 memalign +000148e0 _ZN4iris14RoverStateBase23handleDebugFromHerculesERNS_12RoverContextEP16HercMsgs__HeaderPhj +000149e0 I2C_Sensors__writeIoExpanderPortDirectionsBlocking +00014adc LanderComms__txDataUntilSendOrTimeout +00014cd2 I2C_Sensors__writeIoExpanderBlocking +00014dc2 fputs +00014eb2 _ZN4iris17RoverStateMission8spinOnceERNS_12RoverContextE +00014f9a _ZN4iris17RoverStateService8spinOnceERNS_12RoverContextE +00015082 _ZN4iris27RoverStateEnteringKeepAlive37transitionToWaitingForIoExpanderWriteERNS_12RoverContextE +0001516a GroundMsgs__generateFullEarthHeartbeat +00015250 UART__flushTx +00015334 setvbuf +00015412 __TI_printfi_minimal +000155c8 free +00015776 _ZN4iris17RoverStateManager11spinForeverEv +00015908 _ZN4iris14RoverStateBase13heaterControlERNS_12RoverContextE +000159ca readOnChipInputs +00015a86 _ZN4iris27RoverStateEnteringKeepAlive8spinOnceERNS_12RoverContextE +00015b40 SlipEncode__encode +00015bf8 _ZN4iris14RoverStateBase12echoToLanderERNS_12RoverContextEhPKh +00015cae _ZN4iris14RoverStateBase24handleStrokeFromHerculesERNS_12RoverContextEP16HercMsgs__Header +00015d64 I2C__spinOnce +00015f78 GroundMsgs__generateFlightEarthHeartbeat +00016020 UART__transmit +000160c4 _ZN4iris14RoverStateBase19herculesMsgCallbackEP16HercMsgs__HeaderPhjPv +00016164 HOSTlseek +000161fe _ZN4iris14RoverStateBase23handleResetFromHerculesERNS_12RoverContextEP16HercMsgs__Header +00016298 CmdMsgs__deserializeHeader +00016330 _ZN4iris17RoverStateMission19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response +000163c4 HerculesComms__resetState +00016454 _ZN4iris25RoverStateEnteringMission38transitionToWaitingForIoExpanderWrite1ERNS_12RoverContextE +000164e4 _ZN4iris14RoverStateBase18pumpMsgsFromLanderERNS_12RoverContextE +0001656e _ZN4iris14RoverStateBase18sendLanderResponseERNS_12RoverContextER19WdCmdMsgs__Response +00016680 _ZN4iris17RoverStateManager26getStateObjectForStateEnumENS_10RoverStateE +00016708 WdCmdMsgs__serializeGroundResponse +00016812 _ZN4iris17RoverStateManagerC1EPKc +00016812 _ZN4iris17RoverStateManagerC2EPKc +00016896 _ZN4iris25RoverStateEnteringMission38transitionToWaitingForIoExpanderWrite2ERNS_12RoverContextE +0001691a Serialization__deserializeAs32Bit +0001699c Serialization__serializeAs64Bit +00016a1e SlipMpsm__process +00016aa0 WdCmdMsgs__deserializeMessage +00016b22 _ZN4iris14RoverStateBase15handleWdIntEdgeEbRNS_12RoverContextE +00016ba4 _ZN4iris25RoverStateEnteringMission38transitionToWaitingForIoExpanderWrite3ERNS_12RoverContextE +00016c26 _ZN4iris13stateToStringENS_10RoverStateE +00016ca6 _ZN4iris17RoverStateManager22transitionUntilSettledENS_10RoverStateE +00016d26 __TI_wrt_ok +00016e98 _ZN4iris25RoverStateEnteringMission40transitionToWaitingForFuelGaugeOrTimeoutERNS_12RoverContextE +00016f10 DebugComms__tryPrintfToLanderNonblocking +00016f86 _ZN4iris25RoverStateEnteringMission19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response +00016ffc _ZN4iris25RoverStateEnteringService19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response +00017072 _ZN4iris27RoverStateEnteringKeepAlive19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response +000170e8 __TI_decompress_lzss +0001715e HOSTrename +00017246 __TI_closefile +0001732c Serialization__serializeAs32Bit +0001739e HOSTopen +0001755c HOSTwrite +000175c8 HerculesMpsm__process +00017634 RingBuffer__init +000176a0 adc_init +0001770c HOSTread +0001784a blimp_latchResetHigh +000178b4 blimp_latchResetLow +0001791e fseek +000179f2 Serialization__serializeAs16Bit +00017a5a HerculesComms__uninitialize +00017ac0 HerculesMpsm__initMsg +00017bf2 UART__receive +00017d24 _ZN4iris14RoverStateBase26doGndCmdSetDebugCommsStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00017dee Serialization__deserializeAs16Bit +00017e52 __TI_doflush +00017eb6 blimp_initialize +00017f1a blimp_latchSetHigh +00017f7e blimp_latchSetLow +00018044 _ZN4iris14RoverStateBase24doGndCmdLatchSetPulseLowERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +000180a6 _ZN4iris14RoverStateBase26doGndCmdLatchResetPulseLowERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00018108 _ZN4iris17RoverStateMission14doGndCmdDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001816a Serialization__serializeAs8Bit +000181ca HerculesComms__init +00018282 LanderComms__init +000182de Serialization__deserializeAs8Bit +00018396 blimp_latchResetOff +000183f0 close +0001844a getdevice +000184fc fflush +00018554 _ZN4iris14RoverStateBase20pumpMsgsFromHerculesERNS_12RoverContextE +000185aa blimp_latchSetOff +00018600 __TI_auto_init_nobinit_nopinit_hold_wdt +000186f8 _ZN4iris14RoverStateBase20doGndCmdSetVSAEStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001874a _ZN4iris14RoverStateBase24doGndCmdSetChargeEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001879c _ZN4iris14RoverStateBase25doGndCmdSetLatchBattStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +000187ee _ZN4iris14RoverStateBase26doGndCmdDangForceBattStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00018a20 _ZN4iris14RoverStateBase14txDownlinkDataERNS_12RoverContextEPvjb +00018a70 HOSTclose +00018abe UART__init1 +00018d7c HerculesMpsm__reset +00018dc8 _ZN4iris17RoverStateMission22performWatchdogCommandERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00018e14 _ZN4iris17RoverStateService22performWatchdogCommandERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00018eaa UART__init0 +00018ef4 exit +00018f3e UART__checkIfSendable +00018f86 _ZN4iris19RoverStateKeepAlive12transitionToERNS_12RoverContextE +00019016 HOSTunlink +0001905c HerculesComms__txDownlinkData +000190a2 HerculesComms__txUplinkMsg +000190e8 DebugComms__tryStringBufferToLanderNonblocking +0001912c IpUdp__identifyDataInUdpPacket +00019170 sprintf +000191b4 _ZN4iris14RoverStateBase22doGndCmdSetBattEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +000191f6 _ZN4iris14RoverStateBase27doGndCmdSetChargeRegEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00019238 clockInit +0001927a EventQueue__get +000192ba HerculesComms__txResponseMsg +000192fa I2C__write +000195ba I2C__read +000195f8 UART__checkRxRbErrors +00019636 _ZN4iris14RoverStateBase33handleRadioPowerCycleRadioCommandERNS_12RoverContextE +00019674 _ZN4iris14RoverStateBase36handleRadioPowerCycleHerculesCommandERNS_12RoverContextE +000196b2 enableHeater +000196f0 __mspabi_slll_15 +000196f4 __mspabi_slll_14 +000196f8 __mspabi_slll_13 +000196fc __mspabi_slll_12 +00019700 __mspabi_slll_11 +00019704 __mspabi_slll_10 +00019708 __mspabi_slll_9 +0001970c __mspabi_slll_8 +00019710 __mspabi_slll_7 +00019714 __mspabi_slll_6 +00019718 __mspabi_slll_5 +0001971c __mspabi_slll_4 +00019720 __mspabi_slll_3 +00019724 __mspabi_slll_2 +00019728 __mspabi_slll_1 +0001972e lseek +0001976c EventQueue__initialize +000197a8 RingBuffer__get +000197a8 RingBuffer__getOverwrite +000197e4 RingBuffer__peekAt +00019820 RingBuffer__put +0001985c _ZN4iris14RoverStateBase26doGndCmdSetHeaterDutyCycleERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00019898 write +000198d4 RingBuffer__putOverwrite +0001990e _ZN4iris17RoverStateService24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00019948 _ZN4iris25RoverStateEnteringService26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00019982 __mspabi_srlll +000199bc vsprintf +00019a9e UART__uninit0 +00019ad6 _ZN4iris27RoverStateEnteringKeepAlive25transitionToFinishUpSetupERNS_12RoverContextE +00019b0e UART__checkRxZerosMaxCountSinceLastCheck +00019b7a _ZN4iris14RoverStateBase12doGndCmdEchoERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00019bb0 _ZN4iris17RoverStateMission12transitionToERNS_12RoverContextE +00019be6 __TI_cleanup +00019c1c __TI_writemsg +00019c4e C$$IO$$ +00019c86 adcCheckVoltageLevels +00019cba blimp_latchBattUpdate +00019cee blimp_normalBoot +00019d22 I2C_Sensors__initiateWriteIoExpander +00019d54 I2C__getTransactionStatus +00019d86 _ZN4iris19RoverStateKeepAlive15handleTimerTickERNS_12RoverContextE +00019db8 _ZN4iris27RoverStateEnteringKeepAlive18handleHerculesDataERNS_12RoverContextE +00019dea __TI_readmsg +00019e1c blimp_bstat_dangerous_forceHigh +00019e4e blimp_bstat_dangerous_forceLow +00019e80 blimp_bstat_safe_restoreInput +00019eb2 blimp_vSysAllEnOff +00019ee4 strncpy +00019f16 DebugComms__flush +00019f76 _ZN4iris14RoverStateBase25handleRadioGotWifiCommandERNS_12RoverContextE +00019fa6 _ZN4iris17RoverStateMission24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +00019fd6 _ZN4iris17RoverStateService26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001a006 blimp_bstat +0001a036 remove +0001a036 unlink +0001a066 HerculesComms__flushTx +0001a0c2 I2C_Sensors__initiateIoExpanderInitialization +0001a0f0 I2C__init +0001a11e LanderComms__flushTx +0001a14c _ZN4iris14RoverStateBase24doGndCmdClearResetMemoryERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001a17a _ZN4iris14RoverStateInitC1ENS_10RoverStateEPKc +0001a17a _ZN4iris14RoverStateInitC2ENS_10RoverStateEPKc +0001a1a8 blimp_chargerEnOff +0001a1d6 blimp_latchResetPulseLow +0001a204 blimp_latchSetPulseLow +0001a232 blimp_vSysAllEnForceLow +0001a260 blimp_vSysAllEnOn +0001a28e finddevice +0001a2bc main +0001a2ea I2C_Sensors__getIoExpanderPortDirections +0001a342 _ZN4iris14RoverStateBase32doGndCmdSetHeaterDutyCyclePeriodERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001a36e _ZN4iris17RoverStateMissionC1Ev +0001a36e _ZN4iris17RoverStateMissionC2Ev +0001a39a _ZN4iris25RoverStateEnteringMission29transitionToWaitingForI2cDoneERNS_12RoverContextE +0001a3c6 __mpu_init +0001a448 _ZN4iris14RoverStateBase28doGndCmdSetAutoHeaterOnValueERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001a472 _ZN4iris14RoverStateBase29doGndCmdSetAutoHeaterOffValueERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001a49c _ZN4iris27RoverStateEnteringKeepAlive12transitionToERNS_12RoverContextE +0001a4c6 blimp_chargerEnForceHigh +0001a4f0 blimp_chargerEnOn +0001a544 SlipMpsm__initMsg +0001a56c _ZN4iris14RoverStateBase21doGndCmdResetSpecificERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001a594 _ZN4iris14RoverStateBase22handleUplinkFromLanderERNS_12RoverContextEPhj +0001a5bc EventQueue__put +0001a67a _ZN4iris17RoverStateMission13heaterControlERNS_12RoverContextE +0001a6a0 setHerculesReset +0001a6c6 I2C_Sensors__initiateGaugeReadings +0001a6ea I2C_Sensors__initiateReadControl +0001a70e _ZN4iris25RoverStateEnteringMissionC1Ev +0001a70e _ZN4iris25RoverStateEnteringMissionC2Ev +0001a732 _ZN4iris25RoverStateEnteringService24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001a756 _ZN4iris25RoverStateEnteringServiceC1ENS_10RoverStateE +0001a756 _ZN4iris25RoverStateEnteringServiceC2ENS_10RoverStateE +0001a77a _ZN4iris25RoverStateEnteringServiceC1Ev +0001a77a _ZN4iris25RoverStateEnteringServiceC2Ev +0001a79e _ZN4iris27RoverStateEnteringKeepAlive26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001a7c2 _ZN4iris27RoverStateEnteringKeepAliveC1ENS_10RoverStateE +0001a7c2 _ZN4iris27RoverStateEnteringKeepAliveC2ENS_10RoverStateE +0001a7e6 _ZN4iris27RoverStateEnteringKeepAliveC1Ev +0001a7e6 _ZN4iris27RoverStateEnteringKeepAliveC2Ev +0001a80a __TI_zero_init +0001a82e disableHeater +0001a852 disableUart0Pins +0001a876 I2C_Sensors__initiateReadIoExpander +0001a898 I2C_Sensors__initiateWriteLowPower +0001a8ba I2C__stop +0001a8dc _ZN4iris14RoverStateBase29doGndCmdRequestDetailedReportERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001a8fe _ZN4iris17RoverStateServiceC1Ev +0001a8fe _ZN4iris17RoverStateServiceC2Ev +0001a920 _ZN4iris19RoverStateKeepAliveC1Ev +0001a920 _ZN4iris19RoverStateKeepAliveC2Ev +0001a942 _ZN4iris25RoverStateEnteringMission41transitionToWatitingForWifiReadyOrTimeoutERNS_12RoverContextE +0001a964 I2C_Sensors__initiateFuelGaugeInitialization +0001a984 _ZN4iris14RoverStateBase21handleWdIntRisingEdgeERNS_12RoverContextE +0001a9a4 _ZN4iris14RoverStateBase22handleWdIntFallingEdgeERNS_12RoverContextE +0001a9c4 _ZN4iris14RoverStateBaseC1ENS_10RoverStateE +0001a9c4 _ZN4iris14RoverStateBaseC2ENS_10RoverStateE +0001aa24 I2C_Sensors__clearLastAction +0001aa42 I2C_Sensors__writeIoExpanderCurrentValuesBlocking +0001aa60 RingBuffer__full +0001aa7e _ZN4iris14RoverStateBase14doGndCmdDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001aa9c _ZN4iris14RoverStateBase16handleLanderDataERNS_12RoverContextE +0001aaba _ZN4iris14RoverStateBase18handleHerculesDataERNS_12RoverContextE +0001aad8 _ZN4iris14RoverStateBase21doGndCmdPrepForDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001aaf6 _ZN4iris14RoverStateBase22doGndCmdEnterSleepModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001ab14 _ZN4iris14RoverStateBase24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001ab32 _ZN4iris14RoverStateBase26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001ab50 _ZN4iris14RoverStateBase26doGndCmdSetBattCtrlEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001ab6e _ZN4iris14RoverStateInit14handleHighTempERNS_12RoverContextE +0001ab8c _ZN4iris14RoverStateInit15handleTimerTickERNS_12RoverContextE +0001abaa _ZN4iris14RoverStateInit16handleLanderDataERNS_12RoverContextE +0001abc8 _ZN4iris14RoverStateInit16handlePowerIssueERNS_12RoverContextE +0001abe6 _ZN4iris14RoverStateInit18handleHerculesDataERNS_12RoverContextE +0001ac04 _ZN4iris14RoverStateInit19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response +0001ac22 _ZN4iris14RoverStateInit8spinOnceERNS_12RoverContextE +0001ac40 _ZN4iris19RoverStateKeepAlive18handleHerculesDataERNS_12RoverContextE +0001ac5e _ZN4iris25RoverStateEnteringMission12transitionToERNS_12RoverContextE +0001ac7c _ZN4iris25RoverStateEnteringService12transitionToERNS_12RoverContextE +0001ac9a blimp_battEnOff +0001acb8 blimp_latchBattOff +0001acd6 blimp_regEnOff +0001acf4 enableUart1Pins +0001ad12 memccpy +0001ad30 releaseHerculesReset +0001ad4e _ZN4iris14RoverStateBase22doGndCmdSwitchConnModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001ad6a strchr +0001ad86 strcmp +0001ada2 HerculesComms__isInitialized +0001adbc UART__isInitialized +0001add6 WdIntMpsm__processEdge +0001adf0 _ZN4iris17RoverStateMission20canEnterLowPowerModeERNS_12RoverContextE +0001ae0a _ZN4iris17RoverStateService12transitionToERNS_12RoverContextE +0001ae24 _ZN4iris17RoverStateService20canEnterLowPowerModeERNS_12RoverContextE +0001ae3e _ZN4iris19RoverStateKeepAlive20canEnterLowPowerModeERNS_12RoverContextE +0001ae58 _ZN4iris25RoverStateEnteringService18handleHerculesDataERNS_12RoverContextE +0001ae72 _abort_msg +0001ae8c blimp_battEnOn +0001aea6 blimp_latchBattOn +0001aec0 enableUart0Pins +0001aeda RingBuffer__empty +0001aef2 RingBuffer__freeCount +0001af0a _ZN4iris17RoverStateService21doGndCmdPrepForDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001af22 _ZN4iris19RoverStateKeepAlive24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001af3a _ZN4iris19RoverStateKeepAlive26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb +0001af52 blimp_regEnOn +0001af6a powerOffRadio +0001af82 __mspabi_mpyi_f5hw +0001af9a setFPGAReset +0001afb2 I2C_Sensors__initiateWriteIoExpanderCurrentValues +0001afc8 _ZN10__cxxabiv120__si_class_type_infoD0Ev +0001afde _ZN4iris14RoverStateBase14handleHighTempERNS_12RoverContextE +0001aff4 _ZN4iris14RoverStateBase28handleRadioExitStasisCommandERNS_12RoverContextE +0001b00a _ZN4iris17RoverStateMission16handlePowerIssueERNS_12RoverContextE +0001b020 _ZN4iris17RoverStateService16handlePowerIssueERNS_12RoverContextE +0001b036 _ZN4iris19RoverStateKeepAlive16handlePowerIssueERNS_12RoverContextE +0001b04c _ZN4iris25RoverStateEnteringMission16handlePowerIssueERNS_12RoverContextE +0001b062 _ZN4iris25RoverStateEnteringService16handlePowerIssueERNS_12RoverContextE +0001b078 _ZN4iris27RoverStateEnteringKeepAlive16handlePowerIssueERNS_12RoverContextE +0001b08e _ZN4iris27RoverStateEnteringKeepAlive22handleUplinkFromLanderERNS_12RoverContextEPhj +0001b0a4 disable3V3PowerRail +0001b0ba enableWdIntFallingEdgeInterrupt +0001b0d0 enableWdIntRisingEdgeInterrupt +0001b0e6 fpgaCameraSelectLo +0001b112 memchr +0001b128 memset +0001b13e powerOnRadio +0001b154 releaseFPGAReset +0001b16a __mspabi_divu +0001b16a __mspabi_remu +0001b180 setRadioReset +0001b196 startChargingBatteries +0001b1ac unsetDeploy +0001b1c2 DebugComms__registerHerculesComms +0001b1d6 DebugComms__registerLanderComms +0001b1ea DebugComms__setEnabled +0001b1fe RingBuffer__clear +0001b212 RingBuffer__usedCount +0001b226 _ZN10__cxxabiv117__class_type_infoD0Ev +0001b23a _ZN4iris14RoverStateBase8getStateEv +0001b276 memcpy +0001b28a powerOffFpga +0001b29e powerOffHercules +0001b2b2 powerOffMotors +0001b2c6 releaseRadioReset +0001b2da I2C_Sensors__stop +0001b2ec __TI_decompress_none +0001b2fe enable3V3PowerRail +0001b310 isAdcSampleDone +0001b322 strcpy +0001b334 fpgaCameraSelectHi +0001b344 getWdIntState +0001b354 hook_sp_check +0001b364 __mspabi_srll +0001b374 powerOnFpga +0001b384 powerOnHercules +0001b394 powerOnMotors +0001b3a4 setDeploy +0001b3b4 I2C_Sensors__init +0001b3c2 _ZN10__cxxabiv117__class_type_infoD1Ev +0001b3c2 _ZN10__cxxabiv117__class_type_infoD2Ev +0001b3d0 _ZN10__cxxabiv120__si_class_type_infoD1Ev +0001b3d0 _ZN10__cxxabiv120__si_class_type_infoD2Ev +0001b3de _ZN4iris14RoverStateBase29handleRadioEnterStasisCommandERNS_12RoverContextE +0001b3ec blimp_batteryState +0001b3fa strlen +0001b408 watchdog_get_wd_int_flat_duration +0001b416 _ZN4iris14RoverStateBase20canEnterLowPowerModeERNS_12RoverContextE +0001b422 _ZN4iris14RoverStateInit20canEnterLowPowerModeERNS_12RoverContextE +0001b42e _ZN4iris25RoverStateEnteringMission20canEnterLowPowerModeERNS_12RoverContextE +0001b43a _ZN4iris25RoverStateEnteringService28nextStateAfterSetupCompletesEv +0001b446 _ZN4iris25RoverStateEnteringService8spinOnceERNS_12RoverContextE +0001b452 _ZN4iris27RoverStateEnteringKeepAlive20canEnterLowPowerModeERNS_12RoverContextE +0001b45e _ZN4iris27RoverStateEnteringKeepAlive28nextStateAfterSetupCompletesEv +0001b46a _ZdlPv +0001b474 disableBatteries +0001b47e enableBatteries +0001b488 releaseMotorsReset +0001b492 __mspabi_slli +0001b49c __mspabi_srli +0001b4a6 setMotorsReset +0001b4b0 stopChargingBatteries +0001b4ba __cxa_pure_virtual +0001b4c2 malloc +0001b4ca releaseMotor1Reset +0001b4d2 releaseMotor2Reset +0001b4da releaseMotor3Reset +0001b4e2 releaseMotor4Reset +0001b4ea setMotor1Reset +0001b4f2 setMotor2Reset +0001b4fa setMotor3Reset +0001b502 setMotor4Reset +0001b50a I2C_Sensors__clearIoExpanderPort0OutputBits +0001b510 I2C_Sensors__clearIoExpanderPort1OutputBits +0001b516 I2C_Sensors__setIoExpanderPort0OutputBits +0001b51c I2C_Sensors__setIoExpanderPort1OutputBits +0001b522 Time__getPointerToCentisecondCount +0001b528 Time__getTimeInCentiseconds +0001b52e C$$EXIT +0001b52e _ZSt17__throw_bad_allocv +0001b52e abort +0001b534 disableVSysAllPowerRail +0001b53a enableVSysAllPowerRail +0001b540 _ZdlPvj +0001b544 __abort_execution +0001b548 _system_pre_init +0001b54c _ZNSt9type_infoD1Ev +0001b54c _ZNSt9type_infoD2Ev +0001b54e _nop +0001b550 _system_post_cinit +ffffffff __TI_pprof_out_hndl +ffffffff __TI_prof_data_size +ffffffff __TI_prof_data_start +ffffffff __c_args__ + +[2033 symbols] diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/Watchdog.out b/Bins/RC7/FSW/Watchdog/Debug_with_flag/Watchdog.out new file mode 100644 index 000000000..d99db7505 Binary files /dev/null and b/Bins/RC7/FSW/Watchdog/Debug_with_flag/Watchdog.out differ diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/Watchdog_linkInfo.xml b/Bins/RC7/FSW/Watchdog/Debug_with_flag/Watchdog_linkInfo.xml new file mode 100644 index 000000000..85ab84f5c --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/Watchdog_linkInfo.xml @@ -0,0 +1,48315 @@ + + + MSP430 Linker Unix v18.12.2.LTS + Copyright (c) 2003-2018 Texas Instruments Incorporated + 0x63b2d19d + 0x0 + Watchdog.out + + _c_int00_noargs_mpu +
0x46c0
+
+ + + ./src/comms/ + object + cmd_msgs.obj + cmd_msgs.obj + + + ./src/comms/ + object + debug_comms.obj + debug_comms.obj + + + ./src/comms/ + object + ground_msgs.obj + ground_msgs.obj + + + ./src/comms/ + object + hercules_comms.obj + hercules_comms.obj + + + ./src/comms/ + object + hercules_mpsm.obj + hercules_mpsm.obj + + + ./src/comms/ + object + hercules_msgs.obj + hercules_msgs.obj + + + ./src/comms/ + object + i2c_sensors.obj + i2c_sensors.obj + + + ./src/comms/ + object + ip_udp.obj + ip_udp.obj + + + ./src/comms/ + object + lander_comms.obj + lander_comms.obj + + + ./src/comms/ + object + slip_encode.obj + slip_encode.obj + + + ./src/comms/ + object + slip_mpsm.obj + slip_mpsm.obj + + + ./src/comms/ + object + watchdog_cmd_msgs.obj + watchdog_cmd_msgs.obj + + + ./src/comms/ + object + wd_int_mpsm.obj + wd_int_mpsm.obj + + + ./src/drivers/ + object + adc.obj + adc.obj + + + ./src/drivers/ + object + blimp.obj + blimp.obj + + + ./src/drivers/ + object + bsp.obj + bsp.obj + + + ./src/drivers/ + object + i2c.obj + i2c.obj + + + ./src/drivers/ + object + uart.obj + uart.obj + + + ./src/event/ + object + event_queue.obj + event_queue.obj + + + ./src/ + object + main.obj + main.obj + + + ./src/ + object + watchdog.obj + watchdog.obj + + + ./src/stateMachine/ + object + RoverState.obj + RoverState.obj + + + ./src/stateMachine/ + object + RoverStateBase.obj + RoverStateBase.obj + + + ./src/stateMachine/ + object + RoverStateEnteringKeepAlive.obj + RoverStateEnteringKeepAlive.obj + + + ./src/stateMachine/ + object + RoverStateEnteringMission.obj + RoverStateEnteringMission.obj + + + ./src/stateMachine/ + object + RoverStateEnteringService.obj + RoverStateEnteringService.obj + + + ./src/stateMachine/ + object + RoverStateEnteringStasis.obj + RoverStateEnteringStasis.obj + + + ./src/stateMachine/ + object + RoverStateInit.obj + RoverStateInit.obj + + + ./src/stateMachine/ + object + RoverStateKeepAlive.obj + RoverStateKeepAlive.obj + + + ./src/stateMachine/ + object + RoverStateManager.obj + RoverStateManager.obj + + + ./src/stateMachine/ + object + RoverStateMission.obj + RoverStateMission.obj + + + ./src/stateMachine/ + object + RoverStateService.obj + RoverStateService.obj + + + ./src/stateMachine/ + object + RoverStateStasis.obj + RoverStateStasis.obj + + + ./src/utils/ + object + ring_buffer.obj + ring_buffer.obj + + + ./src/utils/ + object + serialization.obj + serialization.obj + + + ./src/utils/ + object + time.obj + time.obj + + + object + <internal> + <internal> + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + typeinfo.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + stdlib_typeinfo.cpp.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + stdlib_exception.cpp.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + new.cpp.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + copy_decompress_lzss.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + copy_decompress_none.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int18.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + isr_trap.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int19.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int20.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int21.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int22.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int23.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int24.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int25.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int26.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int27.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int28.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int29.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int30.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int31.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int32.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int33.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int34.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int35.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int36.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int37.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int38.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int40.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int41.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int42.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int45.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int47.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int50.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int51.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int52.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int53.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + int54.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + copy_zero_init.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + pure_virt.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + error.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + mult16.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + mult16_f5hw.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + mult32_f5hw.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + mult64_f5hw.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + mult1632_f5hw.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + mult3264_f5hw.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + lsl16.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + lsl32.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + lsl64.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + lsr16.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + lsr32.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + lsr64.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + assert.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + boot.c.obj + + + /home/iris/ti/ccs910/ccs/ccs_base/msp430/lib/FR59xx/ + archive + MSPMPU_INIT_LIB_CCS_msp430_large_code_restricted_data.lib + mpu_init.o + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + args_main.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + autoinit.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + defs.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + startup.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + pre_init.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + exit.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + exit_gvars.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + _lock.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + cpy_tbl.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + fflush.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + fputs.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + _io_perm.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + memory.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + div16u.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + fseek.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + lseek.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + host_device.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + hostclose.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + hostlseek.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + hostopen.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + hostread.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + hostrename.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + hostunlink.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + hostwrite.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + trgmsg.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + memchr.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + memcpy.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + memset.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + setvbuf.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + fopen.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + fclose.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + close.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + open.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + div16s.asm.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + getdevice.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + remove.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + sprintf.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + _printfi_min.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + memccpy.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + strchr.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + strcmp.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + strcpy.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + strlen.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + strncpy.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + unlink.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + vsprintf.c.obj + + + /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib/ + archive + rts430x_lc_rd_eabi.lib + write.c.obj + + + + + .TI.persistent + 0x4000 + 0x4000 + 0x2 + + + + .cio + 0x4002 + 0x4002 + 0x120 + + + + .sysmem + 0x4124 + 0x4124 + 0x8 + + + + .sysmem + 0x4124 + 0x4124 + 0x0 + + + .cinit..data.load + 0xd08c + 0xd08c + 0x6f + + + __TI_handler_table + 0xd0fc + 0xd0fc + 0xc + + + .cinit..bss.load + 0xd108 + 0xd108 + 0x6 + + + __TI_cinit_table + 0xd10e + 0xd10e + 0x10 + + + .binit + 0x4000 + 0x4000 + 0x0 + + + .text:_isr:USCI_A0_ISR + 0x4400 + 0x4400 + 0xca + + + + .text:_isr:USCI_A1_ISR + 0x44ca + 0x44ca + 0xca + + + + .text:_isr:ADC12_ISR + 0x4594 + 0x4594 + 0x98 + + + + .text:_isr:port1_isr_handler + 0x462c + 0x462c + 0x56 + + + + .text:_isr:Timer0_A1_ISR + 0x4682 + 0x4682 + 0x3e + + + + .text:_isr:_c_int00_noargs_mpu + 0x46c0 + 0x46c0 + 0x20 + + + + .text:_isr:_Z7WDT_ISRv + 0x46e0 + 0x46e0 + 0x10 + + + + .text:_isr:__TI_ISR_TRAP + 0x46f0 + 0x46f0 + 0x8 + + + + .const:.string + 0x46f8 + 0x46f8 + 0x26f2 + + + + .const:.string + 0x6dea + 0x6dea + 0xc46 + + + + .const:.string + 0x7a30 + 0x7a30 + 0x970 + + + + .const:.string + 0x83a0 + 0x83a0 + 0x8e0 + + + + .const:.string + 0x8c80 + 0x8c80 + 0x7f2 + + + + .const:.string + 0x9472 + 0x9472 + 0x640 + + + + .const:.string + 0x9ab2 + 0x9ab2 + 0x590 + + + + .const:.string + 0xa042 + 0xa042 + 0x478 + + + + .const:.string + 0xa4ba + 0xa4ba + 0x3f4 + + + + .const:.string + 0xa8ae + 0xa8ae + 0x3f2 + + + + .const:.string + 0xaca0 + 0xaca0 + 0x3d0 + + + + .const:.string + 0xb070 + 0xb070 + 0x364 + + + + .const:.string + 0xb3d4 + 0xb3d4 + 0x34c + + + + .const:.string + 0xb720 + 0xb720 + 0x2e8 + + + + .const:.string + 0xba08 + 0xba08 + 0x24e + + + + .const:.string + 0xbc56 + 0xbc56 + 0x222 + + + + .const:.string + 0xbe78 + 0xbe78 + 0x21c + + + + .const:.string + 0xc094 + 0xc094 + 0x21a + + + + .const:.string + 0xc2ae + 0xc2ae + 0x140 + + + + .const:.string + 0xc3ee + 0xc3ee + 0xfa + + + + .const:_ZTVN4iris17RoverStateServiceE + 0xc4e8 + 0xc4e8 + 0xe8 + + + + .const:_ZTVN4iris19RoverStateKeepAliveE + 0xc5d0 + 0xc5d0 + 0xe8 + + + + .const:_ZTVN4iris25RoverStateEnteringServiceE + 0xc6b8 + 0xc6b8 + 0xe8 + + + + .const:_ZTVN4iris27RoverStateEnteringKeepAliveE + 0xc7a0 + 0xc7a0 + 0xe8 + + + + .const:_ZTVN4iris14RoverStateBaseE + 0xc888 + 0xc888 + 0xe4 + + + + .const:_ZTVN4iris14RoverStateInitE + 0xc96c + 0xc96c + 0xe4 + + + + .const:_ZTVN4iris17RoverStateMissionE + 0xca50 + 0xca50 + 0xe4 + + + + .const:_ZTVN4iris25RoverStateEnteringMissionE + 0xcb34 + 0xcb34 + 0xe4 + + + + .const:.string + 0xcc18 + 0xcc18 + 0xa6 + + + + .const:.string + 0xccbe + 0xccbe + 0x76 + + + + .const:.string + 0xcd34 + 0xcd34 + 0x6a + + + + .const:.string + 0xcd9e + 0xcd9e + 0x4a + + + + .const:.string + 0xcde8 + 0xcde8 + 0x3a + + + + .const + 0xce22 + 0xce22 + 0x28 + + + + .const:.typeinfo:_ZTSN10__cxxabiv120__si_class_type_infoE + 0xce4a + 0xce4a + 0x25 + + + + .const + 0xce6f + 0xce6f + 0x1 + + + + .const:.typeinfo:_ZTSN4iris27RoverStateEnteringKeepAliveE + 0xce70 + 0xce70 + 0x25 + + + + .const:.typeinfo:_ZTSN4iris25RoverStateEnteringMissionE + 0xce96 + 0xce96 + 0x23 + + + + .const:.typeinfo:_ZTSN4iris25RoverStateEnteringServiceE + 0xceba + 0xceba + 0x23 + + + + .const:.typeinfo:_ZTSN10__cxxabiv117__class_type_infoE + 0xcede + 0xcede + 0x22 + + + + .const:.typeinfo:_ZTSN4iris19RoverStateKeepAliveE + 0xcf00 + 0xcf00 + 0x1d + + + + .const:.typeinfo:_ZTSN4iris17RoverStateMissionE + 0xcf1e + 0xcf1e + 0x1b + + + + .const:.typeinfo:_ZTSN4iris17RoverStateServiceE + 0xcf3a + 0xcf3a + 0x1b + + + + .const:.string + 0xcf56 + 0xcf56 + 0x18 + + + + .const:.typeinfo:_ZTSN4iris14RoverStateBaseE + 0xcf6e + 0xcf6e + 0x18 + + + + .const:.typeinfo:_ZTSN4iris14RoverStateInitE + 0xcf86 + 0xcf86 + 0x18 + + + + .const:.string + 0xcf9e + 0xcf9e + 0x14 + + + + .const:uart0Registers + 0xcfb2 + 0xcfb2 + 0x14 + + + + .const:uart1Registers + 0xcfc6 + 0xcfc6 + 0x14 + + + + .const:_ZTVN10__cxxabiv117__class_type_infoE + 0xcfda + 0xcfda + 0x10 + + + + .const:_ZTVN10__cxxabiv120__si_class_type_infoE + 0xcfea + 0xcfea + 0x10 + + + + .const:.typeinfo:_ZTSSt9type_info + 0xcffa + 0xcffa + 0xd + + + + .const:.typeinfo:_ZTIN10__cxxabiv117__class_type_infoE + 0xd008 + 0xd008 + 0xc + + + + .const:.typeinfo:_ZTIN10__cxxabiv120__si_class_type_infoE + 0xd014 + 0xd014 + 0xc + + + + .const:.typeinfo:_ZTIN4iris14RoverStateInitE + 0xd020 + 0xd020 + 0xc + + + + .const:.typeinfo:_ZTIN4iris17RoverStateMissionE + 0xd02c + 0xd02c + 0xc + + + + .const:.typeinfo:_ZTIN4iris17RoverStateServiceE + 0xd038 + 0xd038 + 0xc + + + + .const:.typeinfo:_ZTIN4iris19RoverStateKeepAliveE + 0xd044 + 0xd044 + 0xc + + + + .const:.typeinfo:_ZTIN4iris25RoverStateEnteringMissionE + 0xd050 + 0xd050 + 0xc + + + + .const:.typeinfo:_ZTIN4iris25RoverStateEnteringServiceE + 0xd05c + 0xd05c + 0xc + + + + .const:.typeinfo:_ZTIN4iris27RoverStateEnteringKeepAliveE + 0xd068 + 0xd068 + 0xc + + + + .const:.typeinfo:_ZTIN4iris14RoverStateBaseE + 0xd074 + 0xd074 + 0x8 + + + + .const:.typeinfo:_ZTISt9type_info + 0xd07c + 0xd07c + 0x8 + + + + .const:.string:ECHO_HEADER$7 + 0xd084 + 0xd084 + 0x7 + + + + .text:GroundMsgs__generateDetailedReport + 0x10000 + 0x10000 + 0x908 + + + + .text:_ZN4iris14RoverStateBase26doConditionalResetSpecificERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__ResponsebbbbRb + 0x10908 + 0x10908 + 0x604 + + + + .text:_ZN4iris25RoverStateEnteringMission8spinOnceERNS_12RoverContextE + 0x10f0c + 0x10f0c + 0x494 + + + + .text:_ZN4iris14RoverStateBase22performWatchdogCommandERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x113a0 + 0x113a0 + 0x3ee + + + + .text:_ZN4iris14RoverStateBase21initiateNextI2cActionERNS_12RoverContextE + 0x1178e + 0x1178e + 0x350 + + + + .text:initializeGpios + 0x11ade + 0x11ade + 0x2ee + + + + .text:watchdog_monitor + 0x11dcc + 0x11dcc + 0x2e8 + + + + .text:HerculesMpsm__checkForValidHeader + 0x120b4 + 0x120b4 + 0x288 + + + + .text:_ZN4iris17RoverStateMission15handleTimerTickERNS_12RoverContextE + 0x1233c + 0x1233c + 0x27c + + + + .text:I2C_Sensors__getActionStatus + 0x125b8 + 0x125b8 + 0x204 + + + + .text:IpUdp__generateAndSerializeIpUdpHeadersForData + 0x127bc + 0x127bc + 0x1fa + + + + .text:_ZN4iris17RoverStateService15handleTimerTickERNS_12RoverContextE + 0x129b6 + 0x129b6 + 0x1f4 + + + + .text:I2C_Sensors__spinOnce + 0x12baa + 0x12baa + 0x1d8 + + + + .text:WdCmdMsgs__deserializeBody + 0x12d82 + 0x12d82 + 0x1ce + + + + .text:_ZN4iris14RoverStateInit12transitionToERNS_12RoverContextE + 0x12f50 + 0x12f50 + 0x1c2 + + + + .text:_ZN4iris14RoverStateBase17landerMsgCallbackEPhjPv + 0x13112 + 0x13112 + 0x19c + + + + .text:_ZN4iris25RoverStateEnteringMission15handleTimerTickERNS_12RoverContextE + 0x132ae + 0x132ae + 0x186 + + + + .text:HerculesComms__tryGetMessage + 0x13434 + 0x13434 + 0x17a + + + + .text:LanderComms__txData + 0x135ae + 0x135ae + 0x162 + + + + .text:UART__initState + 0x13710 + 0x13710 + 0x160 + + + + .text:_ZN4iris14RoverStateBase26handleDownlinkFromHerculesERNS_12RoverContextEP16HercMsgs__HeaderPhj + 0x13870 + 0x13870 + 0x15e + + + + .text:watchdog_build_hercules_telem + 0x139ce + 0x139ce + 0x144 + + + + .text:_ZN4iris17RoverStateManager4initEv + 0x13b12 + 0x13b12 + 0x140 + + + + .text:_ZN4iris14RoverStateBase19enableHerculesCommsERNS_12RoverContextE + 0x13c52 + 0x13c52 + 0x13e + + + + .text:_ZN4iris17RoverStateManager11handleEventE11Event__Type + 0x13d90 + 0x13d90 + 0x13a + + + + .text:HercMsgs__serializeHeader + 0x13eca + 0x13eca + 0x138 + + + + .text:_ZN4iris14RoverStateBase26sendDetailedReportToLanderERNS_12RoverContextEb + 0x14002 + 0x14002 + 0x132 + + + + .text:_setfield + 0x14134 + 0x14134 + 0x132 + + + + .text:LanderComms__tryGetMessage + 0x14266 + 0x14266 + 0x120 + + + + .text:_ZN4iris27RoverStateEnteringKeepAlive15handleTimerTickERNS_12RoverContextE + 0x14386 + 0x14386 + 0x120 + + + + .text:watchdog_init + 0x144a6 + 0x144a6 + 0x11c + + + + .text:getResetReasonString + 0x145c2 + 0x145c2 + 0x10c + + + + .text:_ZN4iris19RoverStateKeepAlive8spinOnceERNS_12RoverContextE + 0x146ce + 0x146ce + 0x10a + + + + .text:aligned_alloc + 0x147d8 + 0x147d8 + 0x108 + + + + .text:_ZN4iris14RoverStateBase23handleDebugFromHerculesERNS_12RoverContextEP16HercMsgs__HeaderPhj + 0x148e0 + 0x148e0 + 0x100 + + + + .text:I2C_Sensors__writeIoExpanderPortDirectionsBlocking + 0x149e0 + 0x149e0 + 0xfc + + + + .text:LanderComms__txDataUntilSendOrTimeout + 0x14adc + 0x14adc + 0xfc + + + + .text:I2C_Sensors__readRegNonBlocking + 0x14bd8 + 0x14bd8 + 0xfa + + + + .text:I2C_Sensors__writeIoExpanderBlocking + 0x14cd2 + 0x14cd2 + 0xf0 + + + + .text:fputs + 0x14dc2 + 0x14dc2 + 0xf0 + + + + .text:_ZN4iris17RoverStateMission8spinOnceERNS_12RoverContextE + 0x14eb2 + 0x14eb2 + 0xe8 + + + + .text:_ZN4iris17RoverStateService8spinOnceERNS_12RoverContextE + 0x14f9a + 0x14f9a + 0xe8 + + + + .text:_ZN4iris27RoverStateEnteringKeepAlive37transitionToWaitingForIoExpanderWriteERNS_12RoverContextE + 0x15082 + 0x15082 + 0xe8 + + + + .text:GroundMsgs__generateFullEarthHeartbeat + 0x1516a + 0x1516a + 0xe6 + + + + .text:UART__flushTx + 0x15250 + 0x15250 + 0xe4 + + + + .text:setvbuf + 0x15334 + 0x15334 + 0xde + + + + .text:__TI_printfi_minimal + 0x15412 + 0x15412 + 0xdc + + + + .text:_pproc_diouxp + 0x154ee + 0x154ee + 0xda + + + + .text:free + 0x155c8 + 0x155c8 + 0xda + + + + .text:HerculesComms__txHerculesMsg + 0x156a2 + 0x156a2 + 0xd4 + + + + .text:_ZN4iris17RoverStateManager11spinForeverEv + 0x15776 + 0x15776 + 0xca + + + + .text:LanderComms__slipEncodeAndTransmitBuffer + 0x15840 + 0x15840 + 0xc8 + + + + .text:_ZN4iris14RoverStateBase13heaterControlERNS_12RoverContextE + 0x15908 + 0x15908 + 0xc2 + + + + .text:readOnChipInputs + 0x159ca + 0x159ca + 0xbc + + + + .text:_ZN4iris27RoverStateEnteringKeepAlive8spinOnceERNS_12RoverContextE + 0x15a86 + 0x15a86 + 0xba + + + + .text:SlipEncode__encode + 0x15b40 + 0x15b40 + 0xb8 + + + + .text:_ZN4iris14RoverStateBase12echoToLanderERNS_12RoverContextEhPKh + 0x15bf8 + 0x15bf8 + 0xb6 + + + + .text:_ZN4iris14RoverStateBase24handleStrokeFromHerculesERNS_12RoverContextEP16HercMsgs__Header + 0x15cae + 0x15cae + 0xb6 + + + + .text:I2C__spinOnce + 0x15d64 + 0x15d64 + 0xb4 + + + + .text:I2C_Sensors__writeRegNonBlocking + 0x15e18 + 0x15e18 + 0xb0 + + + + .text:udp_checksum + 0x15ec8 + 0x15ec8 + 0xb0 + + + + .text:GroundMsgs__generateFlightEarthHeartbeat + 0x15f78 + 0x15f78 + 0xa8 + + + + .text:UART__transmit + 0x16020 + 0x16020 + 0xa4 + + + + .text:_ZN4iris14RoverStateBase19herculesMsgCallbackEP16HercMsgs__HeaderPhjPv + 0x160c4 + 0x160c4 + 0xa0 + + + + .text:HOSTlseek + 0x16164 + 0x16164 + 0x9a + + + + .text:_ZN4iris14RoverStateBase23handleResetFromHerculesERNS_12RoverContextEP16HercMsgs__Header + 0x161fe + 0x161fe + 0x9a + + + + .text:CmdMsgs__deserializeHeader + 0x16298 + 0x16298 + 0x98 + + + + .text:_ZN4iris17RoverStateMission19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response + 0x16330 + 0x16330 + 0x94 + + + + .text:HerculesComms__resetState + 0x163c4 + 0x163c4 + 0x90 + + + + .text:_ZN4iris25RoverStateEnteringMission38transitionToWaitingForIoExpanderWrite1ERNS_12RoverContextE + 0x16454 + 0x16454 + 0x90 + + + + .text:_ZN4iris14RoverStateBase18pumpMsgsFromLanderERNS_12RoverContextE + 0x164e4 + 0x164e4 + 0x8a + + + + .text:_ZN4iris14RoverStateBase18sendLanderResponseERNS_12RoverContextER19WdCmdMsgs__Response + 0x1656e + 0x1656e + 0x8a + + + + .text:I2C_Sensors__currentMsb + 0x165f8 + 0x165f8 + 0x88 + + + + .text:_ZN4iris17RoverStateManager26getStateObjectForStateEnumENS_10RoverStateE + 0x16680 + 0x16680 + 0x88 + + + + .text:WdCmdMsgs__serializeGroundResponse + 0x16708 + 0x16708 + 0x86 + + + + .text:WdCmdMsgs__deserializeDangForceBattStateBody + 0x1678e + 0x1678e + 0x84 + + + + .text:_ZN4iris17RoverStateManagerC1EPKc + 0x16812 + 0x16812 + 0x84 + + + + .text:_ZN4iris25RoverStateEnteringMission38transitionToWaitingForIoExpanderWrite2ERNS_12RoverContextE + 0x16896 + 0x16896 + 0x84 + + + + .text:Serialization__deserializeAs32Bit + 0x1691a + 0x1691a + 0x82 + + + + .text:Serialization__serializeAs64Bit + 0x1699c + 0x1699c + 0x82 + + + + .text:SlipMpsm__process + 0x16a1e + 0x16a1e + 0x82 + + + + .text:WdCmdMsgs__deserializeMessage + 0x16aa0 + 0x16aa0 + 0x82 + + + + .text:_ZN4iris14RoverStateBase15handleWdIntEdgeEbRNS_12RoverContextE + 0x16b22 + 0x16b22 + 0x82 + + + + .text:_ZN4iris25RoverStateEnteringMission38transitionToWaitingForIoExpanderWrite3ERNS_12RoverContextE + 0x16ba4 + 0x16ba4 + 0x82 + + + + .text:_ZN4iris13stateToStringENS_10RoverStateE + 0x16c26 + 0x16c26 + 0x80 + + + + .text:_ZN4iris17RoverStateManager22transitionUntilSettledENS_10RoverStateE + 0x16ca6 + 0x16ca6 + 0x80 + + + + .text:__TI_wrt_ok + 0x16d26 + 0x16d26 + 0x7e + + + + .text:I2C_Sensors__chargeMsb + 0x16da4 + 0x16da4 + 0x7a + + + + .text:SlipMpsm__appendData + 0x16e1e + 0x16e1e + 0x7a + + + + .text:_ZN4iris25RoverStateEnteringMission40transitionToWaitingForFuelGaugeOrTimeoutERNS_12RoverContextE + 0x16e98 + 0x16e98 + 0x78 + + + + .text:DebugComms__tryPrintfToLanderNonblocking + 0x16f10 + 0x16f10 + 0x76 + + + + .text:_ZN4iris25RoverStateEnteringMission19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response + 0x16f86 + 0x16f86 + 0x76 + + + + .text:_ZN4iris25RoverStateEnteringService19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response + 0x16ffc + 0x16ffc + 0x76 + + + + .text:_ZN4iris27RoverStateEnteringKeepAlive19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response + 0x17072 + 0x17072 + 0x76 + + + + .text:decompress:lzss:__TI_decompress_lzss + 0x170e8 + 0x170e8 + 0x76 + + + + .text:HOSTrename + 0x1715e + 0x1715e + 0x74 + + + + .text:LanderComms__determineSlipEncodedSize + 0x171d2 + 0x171d2 + 0x74 + + + + .text:__TI_closefile + 0x17246 + 0x17246 + 0x74 + + + + .text:I2C_Sensors__ioExpanderWritePort0 + 0x172ba + 0x172ba + 0x72 + + + + .text:Serialization__serializeAs32Bit + 0x1732c + 0x1732c + 0x72 + + + + .text:HOSTopen + 0x1739e + 0x1739e + 0x70 + + + + .text:I2C_Sensors__ioExpanderInitPort0 + 0x1740e + 0x1740e + 0x70 + + + + .text:split + 0x1747e + 0x1747e + 0x70 + + + + .text:WdCmdMsgs__deserializeEchoBody + 0x174ee + 0x174ee + 0x6e + + + + .text:HOSTwrite + 0x1755c + 0x1755c + 0x6c + + + + .text:HerculesMpsm__process + 0x175c8 + 0x175c8 + 0x6c + + + + .text:RingBuffer__init + 0x17634 + 0x17634 + 0x6c + + + + .text:adc_init + 0x176a0 + 0x176a0 + 0x6c + + + + .text:HOSTread + 0x1770c + 0x1770c + 0x6a + + + + .text:I2C_Sensors__ioExpanderReadPort1 + 0x17776 + 0x17776 + 0x6a + + + + .text:I2C_Sensors__readControl + 0x177e0 + 0x177e0 + 0x6a + + + + .text:blimp_latchResetHigh + 0x1784a + 0x1784a + 0x6a + + + + .text:blimp_latchResetLow + 0x178b4 + 0x178b4 + 0x6a + + + + .text:fseek + 0x1791e + 0x1791e + 0x6a + + + + .text:ip_checksum + 0x17988 + 0x17988 + 0x6a + + + + .text:Serialization__serializeAs16Bit + 0x179f2 + 0x179f2 + 0x68 + + + + .text:HerculesComms__uninitialize + 0x17a5a + 0x17a5a + 0x66 + + + + .text:HerculesMpsm__initMsg + 0x17ac0 + 0x17ac0 + 0x66 + + + + .text:I2C_Sensors__ioExpanderInitPort1 + 0x17b26 + 0x17b26 + 0x66 + + + + .text:I2C_Sensors__ioExpanderWritePort1 + 0x17b8c + 0x17b8c + 0x66 + + + + .text:UART__receive + 0x17bf2 + 0x17bf2 + 0x66 + + + + .text:WdCmdMsgs__deserializeSetDebugCommsStateBody + 0x17c58 + 0x17c58 + 0x66 + + + + .text:WdCmdMsgs__deserializeSetVSAEStateBody + 0x17cbe + 0x17cbe + 0x66 + + + + .text:_ZN4iris14RoverStateBase26doGndCmdSetDebugCommsStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x17d24 + 0x17d24 + 0x66 + + + + .text:HerculesMpsm__appendData + 0x17d8a + 0x17d8a + 0x64 + + + + .text:Serialization__deserializeAs16Bit + 0x17dee + 0x17dee + 0x64 + + + + .text:__TI_doflush + 0x17e52 + 0x17e52 + 0x64 + + + + .text:blimp_initialize + 0x17eb6 + 0x17eb6 + 0x64 + + + + .text:blimp_latchSetHigh + 0x17f1a + 0x17f1a + 0x64 + + + + .text:blimp_latchSetLow + 0x17f7e + 0x17f7e + 0x64 + + + + .text:I2C_Sensors__lowPower + 0x17fe2 + 0x17fe2 + 0x62 + + + + .text:_ZN4iris14RoverStateBase24doGndCmdLatchSetPulseLowERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x18044 + 0x18044 + 0x62 + + + + .text:_ZN4iris14RoverStateBase26doGndCmdLatchResetPulseLowERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x180a6 + 0x180a6 + 0x62 + + + + .text:_ZN4iris17RoverStateMission14doGndCmdDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x18108 + 0x18108 + 0x62 + + + + .text:Serialization__serializeAs8Bit + 0x1816a + 0x1816a + 0x60 + + + + .text:HerculesComms__init + 0x181ca + 0x181ca + 0x5c + + + + .text:I2C_Sensors__accumulatedChargeLsb + 0x18226 + 0x18226 + 0x5c + + + + .text:LanderComms__init + 0x18282 + 0x18282 + 0x5c + + + + .text:Serialization__deserializeAs8Bit + 0x182de + 0x182de + 0x5c + + + + .text:WdCmdMsgs__deserializeClearResetMemoryBody + 0x1833a + 0x1833a + 0x5c + + + + .text:blimp_latchResetOff + 0x18396 + 0x18396 + 0x5a + + + + .text:close + 0x183f0 + 0x183f0 + 0x5a + + + + .text:getdevice + 0x1844a + 0x1844a + 0x5a + + + + .text:I2C_Sensors__accumulatedChargeMsb + 0x184a4 + 0x184a4 + 0x58 + + + + .text:fflush + 0x184fc + 0x184fc + 0x58 + + + + .text:_ZN4iris14RoverStateBase20pumpMsgsFromHerculesERNS_12RoverContextE + 0x18554 + 0x18554 + 0x56 + + + + .text:blimp_latchSetOff + 0x185aa + 0x185aa + 0x56 + + + + .text:__TI_auto_init_nobinit_nopinit_hold_wdt:__TI_auto_init_nobinit_nopinit_hold_wdt + 0x18600 + 0x18600 + 0x54 + + + + .text:I2C_Sensors__currentLsb + 0x18654 + 0x18654 + 0x52 + + + + .text:I2C_Sensors__gaugeTempMsb + 0x186a6 + 0x186a6 + 0x52 + + + + .text:_ZN4iris14RoverStateBase20doGndCmdSetVSAEStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x186f8 + 0x186f8 + 0x52 + + + + .text:_ZN4iris14RoverStateBase24doGndCmdSetChargeEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1874a + 0x1874a + 0x52 + + + + .text:_ZN4iris14RoverStateBase25doGndCmdSetLatchBattStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1879c + 0x1879c + 0x52 + + + + .text:_ZN4iris14RoverStateBase26doGndCmdDangForceBattStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x187ee + 0x187ee + 0x52 + + + + .text:I2C_Sensors__chargeLsb + 0x18840 + 0x18840 + 0x50 + + + + .text:I2C_Sensors__gaugeTempLsb + 0x18890 + 0x18890 + 0x50 + + + + .text:I2C_Sensors__voltageLsb + 0x188e0 + 0x188e0 + 0x50 + + + + .text:I2C_Sensors__voltageMsb + 0x18930 + 0x18930 + 0x50 + + + + .text:I2C__txRegAddress + 0x18980 + 0x18980 + 0x50 + + + + .text:WdCmdMsgs__deserializeSwitchConnModeBody + 0x189d0 + 0x189d0 + 0x50 + + + + .text:_ZN4iris14RoverStateBase14txDownlinkDataERNS_12RoverContextEPvjb + 0x18a20 + 0x18a20 + 0x50 + + + + .text:HOSTclose + 0x18a70 + 0x18a70 + 0x4e + + + + .text:UART__init1 + 0x18abe + 0x18abe + 0x4e + + + + .text:WdCmdMsgs__deserializeLatchResetPulseLowBody + 0x18b0c + 0x18b0c + 0x4e + + + + .text:WdCmdMsgs__deserializeLatchSetPulseLowBody + 0x18b5a + 0x18b5a + 0x4e + + + + .text:WdCmdMsgs__deserializeResetSpecificBody + 0x18ba8 + 0x18ba8 + 0x4e + + + + .text:WdCmdMsgs__deserializeSetBattCtrlEnStateBody + 0x18bf6 + 0x18bf6 + 0x4e + + + + .text:WdCmdMsgs__deserializeSetBattEnStateBody + 0x18c44 + 0x18c44 + 0x4e + + + + .text:WdCmdMsgs__deserializeSetChargeEnStateBody + 0x18c92 + 0x18c92 + 0x4e + + + + .text:WdCmdMsgs__deserializeSetChargeRegEnStateBody + 0x18ce0 + 0x18ce0 + 0x4e + + + + .text:WdCmdMsgs__deserializeSetLatchBattStateBody + 0x18d2e + 0x18d2e + 0x4e + + + + .text:HerculesMpsm__reset + 0x18d7c + 0x18d7c + 0x4c + + + + .text:_ZN4iris17RoverStateMission22performWatchdogCommandERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x18dc8 + 0x18dc8 + 0x4c + + + + .text:_ZN4iris17RoverStateService22performWatchdogCommandERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x18e14 + 0x18e14 + 0x4c + + + + .text:I2C_Sensors__writeControl + 0x18e60 + 0x18e60 + 0x4a + + + + .text:UART__init0 + 0x18eaa + 0x18eaa + 0x4a + + + + .text:exit + 0x18ef4 + 0x18ef4 + 0x4a + + + + .text:UART__checkIfSendable + 0x18f3e + 0x18f3e + 0x48 + + + + .text:_ZN4iris19RoverStateKeepAlive12transitionToERNS_12RoverContextE + 0x18f86 + 0x18f86 + 0x48 + + + + .text:_pproc_str + 0x18fce + 0x18fce + 0x48 + + + + .text:HOSTunlink + 0x19016 + 0x19016 + 0x46 + + + + .text:HerculesComms__txDownlinkData + 0x1905c + 0x1905c + 0x46 + + + + .text:HerculesComms__txUplinkMsg + 0x190a2 + 0x190a2 + 0x46 + + + + .text:DebugComms__tryStringBufferToLanderNonblocking + 0x190e8 + 0x190e8 + 0x44 + + + + .text:IpUdp__identifyDataInUdpPacket + 0x1912c + 0x1912c + 0x44 + + + + .text:sprintf + 0x19170 + 0x19170 + 0x44 + + + + .text:_ZN4iris14RoverStateBase22doGndCmdSetBattEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x191b4 + 0x191b4 + 0x42 + + + + .text:_ZN4iris14RoverStateBase27doGndCmdSetChargeRegEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x191f6 + 0x191f6 + 0x42 + + + + .text:clockInit + 0x19238 + 0x19238 + 0x42 + + + + .text:EventQueue__get + 0x1927a + 0x1927a + 0x40 + + + + .text:HerculesComms__txResponseMsg + 0x192ba + 0x192ba + 0x40 + + + + .text:I2C__write + 0x192fa + 0x192fa + 0x40 + + + + .text:WdCmdMsgs__deserializeDeployBody + 0x1933a + 0x1933a + 0x40 + + + + .text:WdCmdMsgs__deserializeEnterKeepAliveModeBody + 0x1937a + 0x1937a + 0x40 + + + + .text:WdCmdMsgs__deserializeEnterServiceModeBody + 0x193ba + 0x193ba + 0x40 + + + + .text:WdCmdMsgs__deserializeEnterSleepModeBody + 0x193fa + 0x193fa + 0x40 + + + + .text:WdCmdMsgs__deserializePrepForDeployBody + 0x1943a + 0x1943a + 0x40 + + + + .text:WdCmdMsgs__deserializeRequestDetailedReportBody + 0x1947a + 0x1947a + 0x40 + + + + .text:WdCmdMsgs__deserializeSetAutoHeaterOffValueBody + 0x194ba + 0x194ba + 0x40 + + + + .text:WdCmdMsgs__deserializeSetAutoHeaterOnValueBody + 0x194fa + 0x194fa + 0x40 + + + + .text:WdCmdMsgs__deserializeSetHeaterDutyCycleBody + 0x1953a + 0x1953a + 0x40 + + + + .text:WdCmdMsgs__deserializeSetHeaterDutyCyclePeriodBody + 0x1957a + 0x1957a + 0x40 + + + + .text:I2C__read + 0x195ba + 0x195ba + 0x3e + + + + .text:UART__checkRxRbErrors + 0x195f8 + 0x195f8 + 0x3e + + + + .text:_ZN4iris14RoverStateBase33handleRadioPowerCycleRadioCommandERNS_12RoverContextE + 0x19636 + 0x19636 + 0x3e + + + + .text:_ZN4iris14RoverStateBase36handleRadioPowerCycleHerculesCommandERNS_12RoverContextE + 0x19674 + 0x19674 + 0x3e + + + + .text:enableHeater + 0x196b2 + 0x196b2 + 0x3e + + + + .text:l_lsl_const + 0x196f0 + 0x196f0 + 0x3e + + + + .text:lseek + 0x1972e + 0x1972e + 0x3e + + + + .text:EventQueue__initialize + 0x1976c + 0x1976c + 0x3c + + + + .text:RingBuffer__get + 0x197a8 + 0x197a8 + 0x3c + + + + .text:RingBuffer__peekAt + 0x197e4 + 0x197e4 + 0x3c + + + + .text:RingBuffer__put + 0x19820 + 0x19820 + 0x3c + + + + .text:_ZN4iris14RoverStateBase26doGndCmdSetHeaterDutyCycleERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1985c + 0x1985c + 0x3c + + + + .text:write + 0x19898 + 0x19898 + 0x3c + + + + .text:RingBuffer__putOverwrite + 0x198d4 + 0x198d4 + 0x3a + + + + .text:_ZN4iris17RoverStateService24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1990e + 0x1990e + 0x3a + + + + .text:_ZN4iris25RoverStateEnteringService26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x19948 + 0x19948 + 0x3a + + + + .text:__mspabi_srlll + 0x19982 + 0x19982 + 0x3a + + + + .text:vsprintf + 0x199bc + 0x199bc + 0x3a + + + + .text:HerculesComms__transmitBuffer + 0x199f6 + 0x199f6 + 0x38 + + + + .text:HerculesMpsm__checkRb + 0x19a2e + 0x19a2e + 0x38 + + + + .text:LanderComms__transmitBuffer + 0x19a66 + 0x19a66 + 0x38 + + + + .text:UART__uninit0 + 0x19a9e + 0x19a9e + 0x38 + + + + .text:_ZN4iris27RoverStateEnteringKeepAlive25transitionToFinishUpSetupERNS_12RoverContextE + 0x19ad6 + 0x19ad6 + 0x38 + + + + .text:UART__checkRxZerosMaxCountSinceLastCheck + 0x19b0e + 0x19b0e + 0x36 + + + + .text:UART__uart1Init + 0x19b44 + 0x19b44 + 0x36 + + + + .text:_ZN4iris14RoverStateBase12doGndCmdEchoERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x19b7a + 0x19b7a + 0x36 + + + + .text:_ZN4iris17RoverStateMission12transitionToERNS_12RoverContextE + 0x19bb0 + 0x19bb0 + 0x36 + + + + .text:__TI_cleanup + 0x19be6 + 0x19be6 + 0x36 + + + + .text:__TI_writemsg + 0x19c1c + 0x19c1c + 0x36 + + + + .text:UART__uart0Init + 0x19c52 + 0x19c52 + 0x34 + + + + .text:adcCheckVoltageLevels + 0x19c86 + 0x19c86 + 0x34 + + + + .text:blimp_latchBattUpdate + 0x19cba + 0x19cba + 0x34 + + + + .text:blimp_normalBoot + 0x19cee + 0x19cee + 0x34 + + + + .text:I2C_Sensors__initiateWriteIoExpander + 0x19d22 + 0x19d22 + 0x32 + + + + .text:I2C__getTransactionStatus + 0x19d54 + 0x19d54 + 0x32 + + + + .text:_ZN4iris19RoverStateKeepAlive15handleTimerTickERNS_12RoverContextE + 0x19d86 + 0x19d86 + 0x32 + + + + .text:_ZN4iris27RoverStateEnteringKeepAlive18handleHerculesDataERNS_12RoverContextE + 0x19db8 + 0x19db8 + 0x32 + + + + .text:__TI_readmsg + 0x19dea + 0x19dea + 0x32 + + + + .text:blimp_bstat_dangerous_forceHigh + 0x19e1c + 0x19e1c + 0x32 + + + + .text:blimp_bstat_dangerous_forceLow + 0x19e4e + 0x19e4e + 0x32 + + + + .text:blimp_bstat_safe_restoreInput + 0x19e80 + 0x19e80 + 0x32 + + + + .text:blimp_vSysAllEnOff + 0x19eb2 + 0x19eb2 + 0x32 + + + + .text:strncpy + 0x19ee4 + 0x19ee4 + 0x32 + + + + .text:DebugComms__flush + 0x19f16 + 0x19f16 + 0x30 + + + + .text:I2C__rxStart + 0x19f46 + 0x19f46 + 0x30 + + + + .text:_ZN4iris14RoverStateBase25handleRadioGotWifiCommandERNS_12RoverContextE + 0x19f76 + 0x19f76 + 0x30 + + + + .text:_ZN4iris17RoverStateMission24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x19fa6 + 0x19fa6 + 0x30 + + + + .text:_ZN4iris17RoverStateService26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x19fd6 + 0x19fd6 + 0x30 + + + + .text:blimp_bstat + 0x1a006 + 0x1a006 + 0x30 + + + + .text:unlink + 0x1a036 + 0x1a036 + 0x30 + + + + .text:HerculesComms__flushTx + 0x1a066 + 0x1a066 + 0x2e + + + + .text:HerculesMpsm__peekRb + 0x1a094 + 0x1a094 + 0x2e + + + + .text:I2C_Sensors__initiateIoExpanderInitialization + 0x1a0c2 + 0x1a0c2 + 0x2e + + + + .text:I2C__init + 0x1a0f0 + 0x1a0f0 + 0x2e + + + + .text:LanderComms__flushTx + 0x1a11e + 0x1a11e + 0x2e + + + + .text:_ZN4iris14RoverStateBase24doGndCmdClearResetMemoryERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a14c + 0x1a14c + 0x2e + + + + .text:_ZN4iris14RoverStateInitC1ENS_10RoverStateEPKc + 0x1a17a + 0x1a17a + 0x2e + + + + .text:blimp_chargerEnOff + 0x1a1a8 + 0x1a1a8 + 0x2e + + + + .text:blimp_latchResetPulseLow + 0x1a1d6 + 0x1a1d6 + 0x2e + + + + .text:blimp_latchSetPulseLow + 0x1a204 + 0x1a204 + 0x2e + + + + .text:blimp_vSysAllEnForceLow + 0x1a232 + 0x1a232 + 0x2e + + + + .text:blimp_vSysAllEnOn + 0x1a260 + 0x1a260 + 0x2e + + + + .text:finddevice + 0x1a28e + 0x1a28e + 0x2e + + + + .text:main + 0x1a2bc + 0x1a2bc + 0x2e + + + + .text:I2C_Sensors__getIoExpanderPortDirections + 0x1a2ea + 0x1a2ea + 0x2c + + + + .text:I2C__waitForStop + 0x1a316 + 0x1a316 + 0x2c + + + + .text:_ZN4iris14RoverStateBase32doGndCmdSetHeaterDutyCyclePeriodERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a342 + 0x1a342 + 0x2c + + + + .text:_ZN4iris17RoverStateMissionC1Ev + 0x1a36e + 0x1a36e + 0x2c + + + + .text:_ZN4iris25RoverStateEnteringMission29transitionToWaitingForI2cDoneERNS_12RoverContextE + 0x1a39a + 0x1a39a + 0x2c + + + + .text:__mpu_init + 0x1a3c6 + 0x1a3c6 + 0x2c + + + + .text:free_list_insert + 0x1a3f2 + 0x1a3f2 + 0x2c + + + + .text:I2C__txData + 0x1a41e + 0x1a41e + 0x2a + + + + .text:_ZN4iris14RoverStateBase28doGndCmdSetAutoHeaterOnValueERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a448 + 0x1a448 + 0x2a + + + + .text:_ZN4iris14RoverStateBase29doGndCmdSetAutoHeaterOffValueERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a472 + 0x1a472 + 0x2a + + + + .text:_ZN4iris27RoverStateEnteringKeepAlive12transitionToERNS_12RoverContextE + 0x1a49c + 0x1a49c + 0x2a + + + + .text:blimp_chargerEnForceHigh + 0x1a4c6 + 0x1a4c6 + 0x2a + + + + .text:blimp_chargerEnOn + 0x1a4f0 + 0x1a4f0 + 0x2a + + + + .text:free_list_remove + 0x1a51a + 0x1a51a + 0x2a + + + + .text:SlipMpsm__initMsg + 0x1a544 + 0x1a544 + 0x28 + + + + .text:_ZN4iris14RoverStateBase21doGndCmdResetSpecificERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a56c + 0x1a56c + 0x28 + + + + .text:_ZN4iris14RoverStateBase22handleUplinkFromLanderERNS_12RoverContextEPhj + 0x1a594 + 0x1a594 + 0x28 + + + + .text:EventQueue__put + 0x1a5bc + 0x1a5bc + 0x26 + + + + .text:I2C__checkAck + 0x1a5e2 + 0x1a5e2 + 0x26 + + + + .text:I2C__confirmStart + 0x1a608 + 0x1a608 + 0x26 + + + + .text:I2C__rxDataAndStop + 0x1a62e + 0x1a62e + 0x26 + + + + .text:I2C__txStart + 0x1a654 + 0x1a654 + 0x26 + + + + .text:_ZN4iris17RoverStateMission13heaterControlERNS_12RoverContextE + 0x1a67a + 0x1a67a + 0x26 + + + + .text:setHerculesReset + 0x1a6a0 + 0x1a6a0 + 0x26 + + + + .text:I2C_Sensors__initiateGaugeReadings + 0x1a6c6 + 0x1a6c6 + 0x24 + + + + .text:I2C_Sensors__initiateReadControl + 0x1a6ea + 0x1a6ea + 0x24 + + + + .text:_ZN4iris25RoverStateEnteringMissionC1Ev + 0x1a70e + 0x1a70e + 0x24 + + + + .text:_ZN4iris25RoverStateEnteringService24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a732 + 0x1a732 + 0x24 + + + + .text:_ZN4iris25RoverStateEnteringServiceC1ENS_10RoverStateE + 0x1a756 + 0x1a756 + 0x24 + + + + .text:_ZN4iris25RoverStateEnteringServiceC1Ev + 0x1a77a + 0x1a77a + 0x24 + + + + .text:_ZN4iris27RoverStateEnteringKeepAlive26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a79e + 0x1a79e + 0x24 + + + + .text:_ZN4iris27RoverStateEnteringKeepAliveC1ENS_10RoverStateE + 0x1a7c2 + 0x1a7c2 + 0x24 + + + + .text:_ZN4iris27RoverStateEnteringKeepAliveC1Ev + 0x1a7e6 + 0x1a7e6 + 0x24 + + + + .text:decompress:ZI:__TI_zero_init + 0x1a80a + 0x1a80a + 0x24 + + + + .text:disableHeater + 0x1a82e + 0x1a82e + 0x24 + + + + .text:disableUart0Pins + 0x1a852 + 0x1a852 + 0x24 + + + + .text:I2C_Sensors__initiateReadIoExpander + 0x1a876 + 0x1a876 + 0x22 + + + + .text:I2C_Sensors__initiateWriteLowPower + 0x1a898 + 0x1a898 + 0x22 + + + + .text:I2C__stop + 0x1a8ba + 0x1a8ba + 0x22 + + + + .text:_ZN4iris14RoverStateBase29doGndCmdRequestDetailedReportERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a8dc + 0x1a8dc + 0x22 + + + + .text:_ZN4iris17RoverStateServiceC1Ev + 0x1a8fe + 0x1a8fe + 0x22 + + + + .text:_ZN4iris19RoverStateKeepAliveC1Ev + 0x1a920 + 0x1a920 + 0x22 + + + + .text:_ZN4iris25RoverStateEnteringMission41transitionToWatitingForWifiReadyOrTimeoutERNS_12RoverContextE + 0x1a942 + 0x1a942 + 0x22 + + + + .text:I2C_Sensors__initiateFuelGaugeInitialization + 0x1a964 + 0x1a964 + 0x20 + + + + .text:_ZN4iris14RoverStateBase21handleWdIntRisingEdgeERNS_12RoverContextE + 0x1a984 + 0x1a984 + 0x20 + + + + .text:_ZN4iris14RoverStateBase22handleWdIntFallingEdgeERNS_12RoverContextE + 0x1a9a4 + 0x1a9a4 + 0x20 + + + + .text:_ZN4iris14RoverStateBaseC1ENS_10RoverStateE + 0x1a9c4 + 0x1a9c4 + 0x20 + + + + .text:_outs + 0x1a9e4 + 0x1a9e4 + 0x20 + + + + .text:_outs + 0x1aa04 + 0x1aa04 + 0x20 + + + + .text:I2C_Sensors__clearLastAction + 0x1aa24 + 0x1aa24 + 0x1e + + + + .text:I2C_Sensors__writeIoExpanderCurrentValuesBlocking + 0x1aa42 + 0x1aa42 + 0x1e + + + + .text:RingBuffer__full + 0x1aa60 + 0x1aa60 + 0x1e + + + + .text:_ZN4iris14RoverStateBase14doGndCmdDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1aa7e + 0x1aa7e + 0x1e + + + + .text:_ZN4iris14RoverStateBase16handleLanderDataERNS_12RoverContextE + 0x1aa9c + 0x1aa9c + 0x1e + + + + .text:_ZN4iris14RoverStateBase18handleHerculesDataERNS_12RoverContextE + 0x1aaba + 0x1aaba + 0x1e + + + + .text:_ZN4iris14RoverStateBase21doGndCmdPrepForDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1aad8 + 0x1aad8 + 0x1e + + + + .text:_ZN4iris14RoverStateBase22doGndCmdEnterSleepModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1aaf6 + 0x1aaf6 + 0x1e + + + + .text:_ZN4iris14RoverStateBase24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1ab14 + 0x1ab14 + 0x1e + + + + .text:_ZN4iris14RoverStateBase26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1ab32 + 0x1ab32 + 0x1e + + + + .text:_ZN4iris14RoverStateBase26doGndCmdSetBattCtrlEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1ab50 + 0x1ab50 + 0x1e + + + + .text:_ZN4iris14RoverStateInit14handleHighTempERNS_12RoverContextE + 0x1ab6e + 0x1ab6e + 0x1e + + + + .text:_ZN4iris14RoverStateInit15handleTimerTickERNS_12RoverContextE + 0x1ab8c + 0x1ab8c + 0x1e + + + + .text:_ZN4iris14RoverStateInit16handleLanderDataERNS_12RoverContextE + 0x1abaa + 0x1abaa + 0x1e + + + + .text:_ZN4iris14RoverStateInit16handlePowerIssueERNS_12RoverContextE + 0x1abc8 + 0x1abc8 + 0x1e + + + + .text:_ZN4iris14RoverStateInit18handleHerculesDataERNS_12RoverContextE + 0x1abe6 + 0x1abe6 + 0x1e + + + + .text:_ZN4iris14RoverStateInit19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response + 0x1ac04 + 0x1ac04 + 0x1e + + + + .text:_ZN4iris14RoverStateInit8spinOnceERNS_12RoverContextE + 0x1ac22 + 0x1ac22 + 0x1e + + + + .text:_ZN4iris19RoverStateKeepAlive18handleHerculesDataERNS_12RoverContextE + 0x1ac40 + 0x1ac40 + 0x1e + + + + .text:_ZN4iris25RoverStateEnteringMission12transitionToERNS_12RoverContextE + 0x1ac5e + 0x1ac5e + 0x1e + + + + .text:_ZN4iris25RoverStateEnteringService12transitionToERNS_12RoverContextE + 0x1ac7c + 0x1ac7c + 0x1e + + + + .text:blimp_battEnOff + 0x1ac9a + 0x1ac9a + 0x1e + + + + .text:blimp_latchBattOff + 0x1acb8 + 0x1acb8 + 0x1e + + + + .text:blimp_regEnOff + 0x1acd6 + 0x1acd6 + 0x1e + + + + .text:enableUart1Pins + 0x1acf4 + 0x1acf4 + 0x1e + + + + .text:memccpy + 0x1ad12 + 0x1ad12 + 0x1e + + + + .text:releaseHerculesReset + 0x1ad30 + 0x1ad30 + 0x1e + + + + .text:_ZN4iris14RoverStateBase22doGndCmdSwitchConnModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1ad4e + 0x1ad4e + 0x1c + + + + .text:strchr + 0x1ad6a + 0x1ad6a + 0x1c + + + + .text:strcmp + 0x1ad86 + 0x1ad86 + 0x1c + + + + .text:HerculesComms__isInitialized + 0x1ada2 + 0x1ada2 + 0x1a + + + + .text:UART__isInitialized + 0x1adbc + 0x1adbc + 0x1a + + + + .text:WdIntMpsm__processEdge + 0x1add6 + 0x1add6 + 0x1a + + + + .text:_ZN4iris17RoverStateMission20canEnterLowPowerModeERNS_12RoverContextE + 0x1adf0 + 0x1adf0 + 0x1a + + + + .text:_ZN4iris17RoverStateService12transitionToERNS_12RoverContextE + 0x1ae0a + 0x1ae0a + 0x1a + + + + .text:_ZN4iris17RoverStateService20canEnterLowPowerModeERNS_12RoverContextE + 0x1ae24 + 0x1ae24 + 0x1a + + + + .text:_ZN4iris19RoverStateKeepAlive20canEnterLowPowerModeERNS_12RoverContextE + 0x1ae3e + 0x1ae3e + 0x1a + + + + .text:_ZN4iris25RoverStateEnteringService18handleHerculesDataERNS_12RoverContextE + 0x1ae58 + 0x1ae58 + 0x1a + + + + .text:_abort_msg + 0x1ae72 + 0x1ae72 + 0x1a + + + + .text:blimp_battEnOn + 0x1ae8c + 0x1ae8c + 0x1a + + + + .text:blimp_latchBattOn + 0x1aea6 + 0x1aea6 + 0x1a + + + + .text:enableUart0Pins + 0x1aec0 + 0x1aec0 + 0x1a + + + + .text:RingBuffer__empty + 0x1aeda + 0x1aeda + 0x18 + + + + .text:RingBuffer__freeCount + 0x1aef2 + 0x1aef2 + 0x18 + + + + .text:_ZN4iris17RoverStateService21doGndCmdPrepForDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1af0a + 0x1af0a + 0x18 + + + + .text:_ZN4iris19RoverStateKeepAlive24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1af22 + 0x1af22 + 0x18 + + + + .text:_ZN4iris19RoverStateKeepAlive26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1af3a + 0x1af3a + 0x18 + + + + .text:blimp_regEnOn + 0x1af52 + 0x1af52 + 0x18 + + + + .text:powerOffRadio + 0x1af6a + 0x1af6a + 0x18 + + + + .text + 0x1af82 + 0x1af82 + 0x18 + + + + .text:setFPGAReset + 0x1af9a + 0x1af9a + 0x18 + + + + .text:I2C_Sensors__initiateWriteIoExpanderCurrentValues + 0x1afb2 + 0x1afb2 + 0x16 + + + + .text:_ZN10__cxxabiv120__si_class_type_infoD0Ev + 0x1afc8 + 0x1afc8 + 0x16 + + + + .text:_ZN4iris14RoverStateBase14handleHighTempERNS_12RoverContextE + 0x1afde + 0x1afde + 0x16 + + + + .text:_ZN4iris14RoverStateBase28handleRadioExitStasisCommandERNS_12RoverContextE + 0x1aff4 + 0x1aff4 + 0x16 + + + + .text:_ZN4iris17RoverStateMission16handlePowerIssueERNS_12RoverContextE + 0x1b00a + 0x1b00a + 0x16 + + + + .text:_ZN4iris17RoverStateService16handlePowerIssueERNS_12RoverContextE + 0x1b020 + 0x1b020 + 0x16 + + + + .text:_ZN4iris19RoverStateKeepAlive16handlePowerIssueERNS_12RoverContextE + 0x1b036 + 0x1b036 + 0x16 + + + + .text:_ZN4iris25RoverStateEnteringMission16handlePowerIssueERNS_12RoverContextE + 0x1b04c + 0x1b04c + 0x16 + + + + .text:_ZN4iris25RoverStateEnteringService16handlePowerIssueERNS_12RoverContextE + 0x1b062 + 0x1b062 + 0x16 + + + + .text:_ZN4iris27RoverStateEnteringKeepAlive16handlePowerIssueERNS_12RoverContextE + 0x1b078 + 0x1b078 + 0x16 + + + + .text:_ZN4iris27RoverStateEnteringKeepAlive22handleUplinkFromLanderERNS_12RoverContextEPhj + 0x1b08e + 0x1b08e + 0x16 + + + + .text:disable3V3PowerRail + 0x1b0a4 + 0x1b0a4 + 0x16 + + + + .text:enableWdIntFallingEdgeInterrupt + 0x1b0ba + 0x1b0ba + 0x16 + + + + .text:enableWdIntRisingEdgeInterrupt + 0x1b0d0 + 0x1b0d0 + 0x16 + + + + .text:fpgaCameraSelectLo + 0x1b0e6 + 0x1b0e6 + 0x16 + + + + .text:heap_start + 0x1b0fc + 0x1b0fc + 0x16 + + + + .text:memchr + 0x1b112 + 0x1b112 + 0x16 + + + + .text:memset + 0x1b128 + 0x1b128 + 0x16 + + + + .text:powerOnRadio + 0x1b13e + 0x1b13e + 0x16 + + + + .text:releaseFPGAReset + 0x1b154 + 0x1b154 + 0x16 + + + + .text + 0x1b16a + 0x1b16a + 0x16 + + + + .text:setRadioReset + 0x1b180 + 0x1b180 + 0x16 + + + + .text:startChargingBatteries + 0x1b196 + 0x1b196 + 0x16 + + + + .text:unsetDeploy + 0x1b1ac + 0x1b1ac + 0x16 + + + + .text:DebugComms__registerHerculesComms + 0x1b1c2 + 0x1b1c2 + 0x14 + + + + .text:DebugComms__registerLanderComms + 0x1b1d6 + 0x1b1d6 + 0x14 + + + + .text:DebugComms__setEnabled + 0x1b1ea + 0x1b1ea + 0x14 + + + + .text:RingBuffer__clear + 0x1b1fe + 0x1b1fe + 0x14 + + + + .text:RingBuffer__usedCount + 0x1b212 + 0x1b212 + 0x14 + + + + .text:_ZN10__cxxabiv117__class_type_infoD0Ev + 0x1b226 + 0x1b226 + 0x14 + + + + .text:_ZN4iris14RoverStateBase8getStateEv + 0x1b23a + 0x1b23a + 0x14 + + + + .text:_outc + 0x1b24e + 0x1b24e + 0x14 + + + + .text:_outc + 0x1b262 + 0x1b262 + 0x14 + + + + .text:memcpy + 0x1b276 + 0x1b276 + 0x14 + + + + .text:powerOffFpga + 0x1b28a + 0x1b28a + 0x14 + + + + .text:powerOffHercules + 0x1b29e + 0x1b29e + 0x14 + + + + .text:powerOffMotors + 0x1b2b2 + 0x1b2b2 + 0x14 + + + + .text:releaseRadioReset + 0x1b2c6 + 0x1b2c6 + 0x14 + + + + .text:I2C_Sensors__stop + 0x1b2da + 0x1b2da + 0x12 + + + + .text:decompress:none:__TI_decompress_none + 0x1b2ec + 0x1b2ec + 0x12 + + + + .text:enable3V3PowerRail + 0x1b2fe + 0x1b2fe + 0x12 + + + + .text:isAdcSampleDone + 0x1b310 + 0x1b310 + 0x12 + + + + .text:strcpy + 0x1b322 + 0x1b322 + 0x12 + + + + .text:fpgaCameraSelectHi + 0x1b334 + 0x1b334 + 0x10 + + + + .text:getWdIntState + 0x1b344 + 0x1b344 + 0x10 + + + + .text:hook_sp_check + 0x1b354 + 0x1b354 + 0x10 + + + + .text:l_lsr + 0x1b364 + 0x1b364 + 0x10 + + + + .text:powerOnFpga + 0x1b374 + 0x1b374 + 0x10 + + + + .text:powerOnHercules + 0x1b384 + 0x1b384 + 0x10 + + + + .text:powerOnMotors + 0x1b394 + 0x1b394 + 0x10 + + + + .text:setDeploy + 0x1b3a4 + 0x1b3a4 + 0x10 + + + + .text:I2C_Sensors__init + 0x1b3b4 + 0x1b3b4 + 0xe + + + + .text:_ZN10__cxxabiv117__class_type_infoD1Ev + 0x1b3c2 + 0x1b3c2 + 0xe + + + + .text:_ZN10__cxxabiv120__si_class_type_infoD1Ev + 0x1b3d0 + 0x1b3d0 + 0xe + + + + .text:_ZN4iris14RoverStateBase29handleRadioEnterStasisCommandERNS_12RoverContextE + 0x1b3de + 0x1b3de + 0xe + + + + .text:blimp_batteryState + 0x1b3ec + 0x1b3ec + 0xe + + + + .text:strlen + 0x1b3fa + 0x1b3fa + 0xe + + + + .text:watchdog_get_wd_int_flat_duration + 0x1b408 + 0x1b408 + 0xe + + + + .text:_ZN4iris14RoverStateBase20canEnterLowPowerModeERNS_12RoverContextE + 0x1b416 + 0x1b416 + 0xc + + + + .text:_ZN4iris14RoverStateInit20canEnterLowPowerModeERNS_12RoverContextE + 0x1b422 + 0x1b422 + 0xc + + + + .text:_ZN4iris25RoverStateEnteringMission20canEnterLowPowerModeERNS_12RoverContextE + 0x1b42e + 0x1b42e + 0xc + + + + .text:_ZN4iris25RoverStateEnteringService28nextStateAfterSetupCompletesEv + 0x1b43a + 0x1b43a + 0xc + + + + .text:_ZN4iris25RoverStateEnteringService8spinOnceERNS_12RoverContextE + 0x1b446 + 0x1b446 + 0xc + + + + .text:_ZN4iris27RoverStateEnteringKeepAlive20canEnterLowPowerModeERNS_12RoverContextE + 0x1b452 + 0x1b452 + 0xc + + + + .text:_ZN4iris27RoverStateEnteringKeepAlive28nextStateAfterSetupCompletesEv + 0x1b45e + 0x1b45e + 0xc + + + + .text:_ZdlPv + 0x1b46a + 0x1b46a + 0xa + + + + .text:disableBatteries + 0x1b474 + 0x1b474 + 0xa + + + + .text:enableBatteries + 0x1b47e + 0x1b47e + 0xa + + + + .text:releaseMotorsReset + 0x1b488 + 0x1b488 + 0xa + + + + .text + 0x1b492 + 0x1b492 + 0xa + + + + .text + 0x1b49c + 0x1b49c + 0xa + + + + .text:setMotorsReset + 0x1b4a6 + 0x1b4a6 + 0xa + + + + .text:stopChargingBatteries + 0x1b4b0 + 0x1b4b0 + 0xa + + + + .text:__cxa_pure_virtual + 0x1b4ba + 0x1b4ba + 0x8 + + + + .text:malloc + 0x1b4c2 + 0x1b4c2 + 0x8 + + + + .text:releaseMotor1Reset + 0x1b4ca + 0x1b4ca + 0x8 + + + + .text:releaseMotor2Reset + 0x1b4d2 + 0x1b4d2 + 0x8 + + + + .text:releaseMotor3Reset + 0x1b4da + 0x1b4da + 0x8 + + + + .text:releaseMotor4Reset + 0x1b4e2 + 0x1b4e2 + 0x8 + + + + .text:setMotor1Reset + 0x1b4ea + 0x1b4ea + 0x8 + + + + .text:setMotor2Reset + 0x1b4f2 + 0x1b4f2 + 0x8 + + + + .text:setMotor3Reset + 0x1b4fa + 0x1b4fa + 0x8 + + + + .text:setMotor4Reset + 0x1b502 + 0x1b502 + 0x8 + + + + .text:I2C_Sensors__clearIoExpanderPort0OutputBits + 0x1b50a + 0x1b50a + 0x6 + + + + .text:I2C_Sensors__clearIoExpanderPort1OutputBits + 0x1b510 + 0x1b510 + 0x6 + + + + .text:I2C_Sensors__setIoExpanderPort0OutputBits + 0x1b516 + 0x1b516 + 0x6 + + + + .text:I2C_Sensors__setIoExpanderPort1OutputBits + 0x1b51c + 0x1b51c + 0x6 + + + + .text:Time__getPointerToCentisecondCount + 0x1b522 + 0x1b522 + 0x6 + + + + .text:Time__getTimeInCentiseconds + 0x1b528 + 0x1b528 + 0x6 + + + + .text:abort + 0x1b52e + 0x1b52e + 0x6 + + + + .text:disableVSysAllPowerRail + 0x1b534 + 0x1b534 + 0x6 + + + + .text:enableVSysAllPowerRail + 0x1b53a + 0x1b53a + 0x6 + + + + .text:_ZdlPvj + 0x1b540 + 0x1b540 + 0x4 + + + + .text:__abort_execution + 0x1b544 + 0x1b544 + 0x4 + + + + .text:_system_pre_init + 0x1b548 + 0x1b548 + 0x4 + + + + .text:_ZNSt9type_infoD1Ev + 0x1b54c + 0x1b54c + 0x2 + + + + .text:_nop + 0x1b54e + 0x1b54e + 0x2 + + + + .text:_system_post_cinit + 0x1b550 + 0x1b550 + 0x2 + + + + .bss:ECHO_BUFFER$9 + true + 0x28f0 + 0x10 + + + + .bss:_ZN43_INTERNAL_21_RoverStateManager_cpp_1f51f65b4iris13uart0TxBufferE + true + 0x2400 + 0x200 + + + + .bss:_ZN43_INTERNAL_21_RoverStateManager_cpp_1f51f65b4iris13uart0RxBufferE + true + 0x1c00 + 0x400 + + + + .bss:_ZN43_INTERNAL_21_RoverStateManager_cpp_1f51f65b4iris13uart1TxBufferE + true + 0x2000 + 0x400 + + + + .bss:_ZN43_INTERNAL_21_RoverStateManager_cpp_1f51f65b4iris13uart1RxBufferE + true + 0x2600 + 0x200 + + + + .bss:ALL_RING_BUFFERS + true + 0x28a0 + 0x50 + + + + .bss + true + 0x290c + 0x2 + + + + .bss + true + 0x2908 + 0x4 + + + + .common:__TI_tmpnams + true + 0x2800 + 0xa0 + + + .common:parmbuf + true + 0x2900 + 0x8 + + + .data:PRINT_BUFFER + 0x2ea6 + 0x2ea6 + 0x100 + + + + .data + 0x351e + 0x351e + 0x9 + + + + .data + 0x33d1 + 0x33d1 + 0x1 + + + + .data:theState + 0x290e + 0x290e + 0x2cc + + + + .data:uartRxData$1 + 0x32e6 + 0x32e6 + 0x40 + + + + .data + 0x3584 + 0x3584 + 0x2 + + + + .data:uartRxData$3 + 0x3326 + 0x3326 + 0x40 + + + + .data:theStateMachine + 0x3440 + 0x3440 + 0x1a + + + + .data:internals + 0x3402 + 0x3402 + 0x22 + + + + .data + 0x3586 + 0x3586 + 0x2 + + + + .data:tStatus$1 + 0x3530 + 0x3530 + 0x8 + + + + .data:tStatus$2 + 0x3538 + 0x3538 + 0x8 + + + + .data:theState + 0x2bda + 0x2bda + 0x2cc + + + + .data:uartRxData$1 + 0x2fa6 + 0x2fa6 + 0x100 + + + + .data + 0x3401 + 0x3401 + 0x1 + + + + .data:uartHeaderData$4 + 0x3424 + 0x3424 + 0x1c + + + + .data:uartTxSlipData$5 + 0x30a6 + 0x30a6 + 0x100 + + + + .data:txDurations$6 + 0x34ee + 0x34ee + 0x14 + + + + .data:theStateMachine + 0x357a + 0x357a + 0x4 + + + + .data + 0x3528 + 0x3528 + 0x8 + + + + .data + 0x356a + 0x356a + 0x4 + + + + .data + 0x356e + 0x356e + 0x4 + + + + .data:theStatus + 0x3540 + 0x3540 + 0x8 + + + + .data:uart0State + 0x345a + 0x345a + 0x1a + + + + .data:uart1State + 0x3474 + 0x3474 + 0x1a + + + + .data:theQueue + 0x3554 + 0x3554 + 0x6 + + + + .data + 0x3512 + 0x3512 + 0xc + + + + .data:wdMessage$1 + 0x34d6 + 0x34d6 + 0x18 + + + + .data:response$2 + 0x354e + 0x354e + 0x6 + + + + .data:deployNotificationResponse$3 + 0x3548 + 0x3548 + 0x6 + + + + .data + 0x3582 + 0x3582 + 0x2 + + + + .data:telemetrySerializationBuffer$5 + 0x3502 + 0x3502 + 0x10 + + + + .data:responseSerializationBuffer$6 + 0x357e + 0x357e + 0x3 + + + + .data:report$10 + 0x33a2 + 0x33a2 + 0x2f + + + + .data:reportBuffer$11 + 0x33d2 + 0x33d2 + 0x2f + + + + .data:hb$12 + 0x3572 + 0x3572 + 0x4 + + + + .data:hb$1 + 0x3576 + 0x3576 + 0x4 + + + + .data:hb$1 + 0x348e + 0x348e + 0x18 + + + + .data:hb$1 + 0x34a6 + 0x34a6 + 0x18 + + + + .data:hb$1 + 0x34be + 0x34be + 0x18 + + + + .data + 0x3588 + 0x3588 + 0x2 + + + + .data:_ftable + 0x31a6 + 0x31a6 + 0xc8 + + + + .data + 0x358a + 0x358a + 0x2 + + + + .data + 0x358c + 0x358c + 0x2 + + + + .data:__TI_cleanup_ptr + 0x355a + 0x355a + 0x4 + + + + .data:__TI_dtors_ptr + 0x355e + 0x355e + 0x4 + + + + .data:_lock + 0x3562 + 0x3562 + 0x4 + + + + .data:_unlock + 0x3566 + 0x3566 + 0x4 + + + + .data + 0x358e + 0x358e + 0x2 + + + + .data:_device + 0x326e + 0x326e + 0x78 + + + + .data:_stream + 0x3366 + 0x3366 + 0x3c + + + + .stack + true + 0x362c + 0x4 + + + + .stack + true + 0x362c + 0x0 + + + .int18 + 0xffb4 + 0xffb4 + 0x2 + + + + .int19 + 0xffb6 + 0xffb6 + 0x2 + + + + .int20 + 0xffb8 + 0xffb8 + 0x2 + + + + .int21 + 0xffba + 0xffba + 0x2 + + + + .int22 + 0xffbc + 0xffbc + 0x2 + + + + .int23 + 0xffbe + 0xffbe + 0x2 + + + + .int24 + 0xffc0 + 0xffc0 + 0x2 + + + + .int25 + 0xffc2 + 0xffc2 + 0x2 + + + + .int26 + 0xffc4 + 0xffc4 + 0x2 + + + + .int27 + 0xffc6 + 0xffc6 + 0x2 + + + + .int28 + 0xffc8 + 0xffc8 + 0x2 + + + + .int29 + 0xffca + 0xffca + 0x2 + + + + .int30 + 0xffcc + 0xffcc + 0x2 + + + + .int31 + 0xffce + 0xffce + 0x2 + + + + .int32 + 0xffd0 + 0xffd0 + 0x2 + + + + .int33 + 0xffd2 + 0xffd2 + 0x2 + + + + .int34 + 0xffd4 + 0xffd4 + 0x2 + + + + .int35 + 0xffd6 + 0xffd6 + 0x2 + + + + .int36 + 0xffd8 + 0xffd8 + 0x2 + + + + .int37 + 0xffda + 0xffda + 0x2 + + + + .int38 + 0xffdc + 0xffdc + 0x2 + + + + .int39 + 0xffde + 0xffde + 0x2 + + + + .int40 + 0xffe0 + 0xffe0 + 0x2 + + + + .int41 + 0xffe2 + 0xffe2 + 0x2 + + + + .int42 + 0xffe4 + 0xffe4 + 0x2 + + + + .int43 + 0xffe6 + 0xffe6 + 0x2 + + + + .int44 + 0xffe8 + 0xffe8 + 0x2 + + + + .int45 + 0xffea + 0xffea + 0x2 + + + + .int46 + 0xffec + 0xffec + 0x2 + + + + .int47 + 0xffee + 0xffee + 0x2 + + + + .int48 + 0xfff0 + 0xfff0 + 0x2 + + + + .int49 + 0xfff2 + 0xfff2 + 0x2 + + + + .int50 + 0xfff4 + 0xfff4 + 0x2 + + + + .int51 + 0xfff6 + 0xfff6 + 0x2 + + + + .int52 + 0xfff8 + 0xfff8 + 0x2 + + + + .int53 + 0xfffa + 0xfffa + 0x2 + + + + .int54 + 0xfffc + 0xfffc + 0x2 + + + + .reset + 0xfffe + 0xfffe + 0x2 + + + + .debug_info + 0x0 + 0x0 + 0x2c1 + + + + .debug_info + 0x2c1 + 0x2c1 + 0x2cd + + + + .debug_info + 0x58e + 0x58e + 0x26b + + + + .debug_info + 0x7f9 + 0x7f9 + 0x151 + + + + .debug_info + 0x94a + 0x94a + 0x94 + + + + .debug_info + 0x9de + 0x9de + 0x84 + + + + .debug_info + 0xa62 + 0xa62 + 0x275 + + + + .debug_info + 0xcd7 + 0xcd7 + 0xbb + + + + .debug_info + 0xd92 + 0xd92 + 0x53 + + + + .debug_info + 0xde5 + 0xde5 + 0x55a + + + + .debug_info + 0x133f + 0x133f + 0x122 + + + + .debug_info + 0x1461 + 0x1461 + 0x170 + + + + .debug_info + 0x15d1 + 0x15d1 + 0x265 + + + + .debug_info + 0x1836 + 0x1836 + 0x238 + + + + .debug_info + 0x1a6e + 0x1a6e + 0x1c5 + + + + .debug_info + 0x1c33 + 0x1c33 + 0x1d7 + + + + .debug_info + 0x1e0a + 0x1e0a + 0x1db + + + + .debug_info + 0x1fe5 + 0x1fe5 + 0x1c5 + + + + .debug_info + 0x21aa + 0x21aa + 0x140 + + + + .debug_info + 0x22ea + 0x22ea + 0x116 + + + + .debug_info + 0x2400 + 0x2400 + 0xc9 + + + + .debug_info + 0x24c9 + 0x24c9 + 0x8b + + + + .debug_info + 0x2554 + 0x2554 + 0x2c + + + + .debug_info + 0x2580 + 0x2580 + 0x46e + + + + .debug_info + 0x29ee + 0x29ee + 0x2b6 + + + + .debug_info + 0x2ca4 + 0x2ca4 + 0x27b + + + + .debug_info + 0x2f1f + 0x2f1f + 0x729 + + + + .debug_info + 0x3648 + 0x3648 + 0xfb2 + + + + .debug_info + 0x45fa + 0x45fa + 0x116 + + + + .debug_info + 0x4710 + 0x4710 + 0x5eb + + + + .debug_info + 0x4cfb + 0x4cfb + 0x541 + + + + .debug_info + 0x523c + 0x523c + 0x29b + + + + .debug_info + 0x54d7 + 0x54d7 + 0x2a8 + + + + .debug_info + 0x577f + 0x577f + 0x605 + + + + .debug_info + 0x5d84 + 0x5d84 + 0x11d + + + + .debug_info + 0x5ea1 + 0x5ea1 + 0x354 + + + + .debug_info + 0x61f5 + 0x61f5 + 0x23f + + + + .debug_info + 0x6434 + 0x6434 + 0x258 + + + + .debug_info + 0x668c + 0x668c + 0x3d8 + + + + .debug_info + 0x6a64 + 0x6a64 + 0x249 + + + + .debug_info + 0x6cad + 0x6cad + 0x2ae + + + + .debug_info + 0x6f5b + 0x6f5b + 0x252 + + + + .debug_info + 0x71ad + 0x71ad + 0x5a2 + + + + .debug_info + 0x774f + 0x774f + 0x1dd + + + + .debug_info + 0x792c + 0x792c + 0x21a + + + + .debug_info + 0x7b46 + 0x7b46 + 0x1e5 + + + + .debug_info + 0x7d2b + 0x7d2b + 0x10d + + + + .debug_info + 0x7e38 + 0x7e38 + 0xbe + + + + .debug_info + 0x7ef6 + 0x7ef6 + 0x177 + + + + .debug_info + 0x806d + 0x806d + 0x158 + + + + .debug_info + 0x81c5 + 0x81c5 + 0x2c + + + + .debug_info + 0x81f1 + 0x81f1 + 0x4cb + + + + .debug_info + 0x86bc + 0x86bc + 0x12a + + + + .debug_info + 0x87e6 + 0x87e6 + 0x1e1 + + + + .debug_info + 0x89c7 + 0x89c7 + 0x1ed + + + + .debug_info + 0x8bb4 + 0x8bb4 + 0x226 + + + + .debug_info + 0x8dda + 0x8dda + 0x1f2 + + + + .debug_info + 0x8fcc + 0x8fcc + 0x70f + + + + .debug_info + 0x96db + 0x96db + 0x222 + + + + .debug_info + 0x98fd + 0x98fd + 0x261 + + + + .debug_info + 0x9b5e + 0x9b5e + 0x116 + + + + .debug_info + 0x9c74 + 0x9c74 + 0x152 + + + + .debug_info + 0x9dc6 + 0x9dc6 + 0x99 + + + + .debug_info + 0x9e5f + 0x9e5f + 0x266 + + + + .debug_info + 0xa0c5 + 0xa0c5 + 0x376 + + + + .debug_info + 0xa43b + 0xa43b + 0x466 + + + + .debug_info + 0xa8a1 + 0xa8a1 + 0x11c + + + + .debug_info + 0xa9bd + 0xa9bd + 0x186 + + + + .debug_info + 0xab43 + 0xab43 + 0x1cc + + + + .debug_info + 0xad0f + 0xad0f + 0x45d + + + + .debug_info + 0xb16c + 0xb16c + 0x205 + + + + .debug_info + 0xb371 + 0xb371 + 0x3da + + + + .debug_info + 0xb74b + 0xb74b + 0x204 + + + + .debug_info + 0xb94f + 0xb94f + 0x204 + + + + .debug_info + 0xbb53 + 0xbb53 + 0x202 + + + + .debug_info + 0xbd55 + 0xbd55 + 0x202 + + + + .debug_info + 0xbf57 + 0xbf57 + 0x1f5 + + + + .debug_info + 0xc14c + 0xc14c + 0x1ec + + + + .debug_info + 0xc338 + 0xc338 + 0x1f4 + + + + .debug_info + 0xc52c + 0xc52c + 0x204 + + + + .debug_info + 0xc730 + 0xc730 + 0x204 + + + + .debug_info + 0xc934 + 0xc934 + 0x1f7 + + + + .debug_info + 0xcb2b + 0xcb2b + 0x1f7 + + + + .debug_info + 0xcd22 + 0xcd22 + 0x241 + + + + .debug_info + 0xcf63 + 0xcf63 + 0x1f3 + + + + .debug_info + 0xd156 + 0xd156 + 0x1f3 + + + + .debug_info + 0xd349 + 0xd349 + 0x1f3 + + + + .debug_info + 0xd53c + 0xd53c + 0x23f + + + + .debug_info + 0xd77b + 0xd77b + 0x1f1 + + + + .debug_info + 0xd96c + 0xd96c + 0x53b + + + + .debug_info + 0xdea7 + 0xdea7 + 0x249 + + + + .debug_info + 0xe0f0 + 0xe0f0 + 0x1a6 + + + + .debug_info + 0xe296 + 0xe296 + 0x4ef + + + + .debug_info + 0xe785 + 0xe785 + 0x22e + + + + .debug_info + 0xe9b3 + 0xe9b3 + 0x4ae + + + + .debug_info + 0xee61 + 0xee61 + 0x25d + + + + .debug_info + 0xf0be + 0xf0be + 0x1c3 + + + + .debug_info + 0xf281 + 0xf281 + 0x1e2 + + + + .debug_info + 0xf463 + 0xf463 + 0x1e2 + + + + .debug_info + 0xf645 + 0xf645 + 0x1b8 + + + + .debug_info + 0xf7fd + 0xf7fd + 0x1b6 + + + + .debug_info + 0xf9b3 + 0xf9b3 + 0x1ff + + + + .debug_info + 0xfbb2 + 0xfbb2 + 0x1b2 + + + + .debug_info + 0xfd64 + 0xfd64 + 0x1b6 + + + + .debug_info + 0xff1a + 0xff1a + 0x1ca + + + + .debug_info + 0x100e4 + 0x100e4 + 0x1a0 + + + + .debug_info + 0x10284 + 0x10284 + 0x236 + + + + .debug_info + 0x104ba + 0x104ba + 0x1ee + + + + .debug_info + 0x106a8 + 0x106a8 + 0x1ee + + + + .debug_info + 0x10896 + 0x10896 + 0x475 + + + + .debug_info + 0x10d0b + 0x10d0b + 0x17f + + + + .debug_info + 0x10e8a + 0x10e8a + 0x1f0 + + + + .debug_info + 0x1107a + 0x1107a + 0x2c0 + + + + .debug_info + 0x1133a + 0x1133a + 0x232 + + + + .debug_info + 0x1156c + 0x1156c + 0x302 + + + + .debug_info + 0x1186e + 0x1186e + 0x36c + + + + .debug_info + 0x11bda + 0x11bda + 0x675 + + + + .debug_info + 0x1224f + 0x1224f + 0x11b + + + + .debug_info + 0x1236a + 0x1236a + 0x29f + + + + .debug_info + 0x12609 + 0x12609 + 0x252 + + + + .debug_info + 0x1285b + 0x1285b + 0x653 + + + + .debug_info + 0x12eae + 0x12eae + 0x4a3 + + + + .debug_info + 0x13351 + 0x13351 + 0x4d8 + + + + .debug_info + 0x13829 + 0x13829 + 0x4cb + + + + .debug_info + 0x13cf4 + 0x13cf4 + 0x210 + + + + .debug_info + 0x13f04 + 0x13f04 + 0x1df + + + + .debug_info + 0x140e3 + 0x140e3 + 0x94 + + + + .debug_info + 0x14177 + 0x14177 + 0xc0 + + + + .debug_info + 0x14237 + 0x14237 + 0x55 + + + + .debug_info + 0x1428c + 0x1428c + 0x13f + + + + .debug_info + 0x143cb + 0x143cb + 0x19a + + + + .debug_info + 0x14565 + 0x14565 + 0x2ee + + + + .debug_info + 0x14853 + 0x14853 + 0x188 + + + + .debug_info + 0x149db + 0x149db + 0x126 + + + + .debug_info + 0x14b01 + 0x14b01 + 0x20c + + + + .debug_info + 0x14d0d + 0x14d0d + 0x21b + + + + .debug_info + 0x14f28 + 0x14f28 + 0x195 + + + + .debug_info + 0x150bd + 0x150bd + 0x13f + + + + .debug_info + 0x151fc + 0x151fc + 0x98 + + + + .debug_info + 0x15294 + 0x15294 + 0x40b + + + + .debug_info + 0x1569f + 0x1569f + 0x306 + + + + .debug_info + 0x159a5 + 0x159a5 + 0x299 + + + + .debug_info + 0x15c3e + 0x15c3e + 0x279 + + + + .debug_info + 0x15eb7 + 0x15eb7 + 0x26b + + + + .debug_info + 0x16122 + 0x16122 + 0x295 + + + + .debug_info + 0x163b7 + 0x163b7 + 0x2c8 + + + + .debug_info + 0x1667f + 0x1667f + 0x288 + + + + .debug_info + 0x16907 + 0x16907 + 0x28a + + + + .debug_info + 0x16b91 + 0x16b91 + 0x284 + + + + .debug_info + 0x16e15 + 0x16e15 + 0x290 + + + + .debug_info + 0x170a5 + 0x170a5 + 0x2bc + + + + .debug_info + 0x17361 + 0x17361 + 0x27b + + + + .debug_info + 0x175dc + 0x175dc + 0x283 + + + + .debug_info + 0x1785f + 0x1785f + 0x27f + + + + .debug_info + 0x17ade + 0x17ade + 0x2a6 + + + + .debug_info + 0x17d84 + 0x17d84 + 0x2ef + + + + .debug_info + 0x18073 + 0x18073 + 0x289 + + + + .debug_info + 0x182fc + 0x182fc + 0x29d + + + + .debug_info + 0x18599 + 0x18599 + 0x2a3 + + + + .debug_info + 0x1883c + 0x1883c + 0x299 + + + + .debug_info + 0x18ad5 + 0x18ad5 + 0x2a1 + + + + .debug_info + 0x18d76 + 0x18d76 + 0x29f + + + + .debug_info + 0x19015 + 0x19015 + 0x29d + + + + .debug_info + 0x192b2 + 0x192b2 + 0x2a1 + + + + .debug_info + 0x19553 + 0x19553 + 0x274 + + + + .debug_info + 0x197c7 + 0x197c7 + 0x6e8 + + + + .debug_info + 0x19eaf + 0x19eaf + 0x39a + + + + .debug_info + 0x1a249 + 0x1a249 + 0x202 + + + + .debug_info + 0x1a44b + 0x1a44b + 0x7a + + + + .debug_info + 0x1a4c5 + 0x1a4c5 + 0x54e + + + + .debug_info + 0x1aa13 + 0x1aa13 + 0x14c + + + + .debug_info + 0x1ab5f + 0x1ab5f + 0x17b + + + + .debug_info + 0x1acda + 0x1acda + 0x1af + + + + .debug_info + 0x1ae89 + 0x1ae89 + 0x1c7 + + + + .debug_info + 0x1b050 + 0x1b050 + 0x16c + + + + .debug_info + 0x1b1bc + 0x1b1bc + 0x97 + + + + .debug_info + 0x1b253 + 0x1b253 + 0x82 + + + + .debug_info + 0x1b2d5 + 0x1b2d5 + 0x6a7 + + + + .debug_info + 0x1b97c + 0x1b97c + 0x11a + + + + .debug_info + 0x1ba96 + 0x1ba96 + 0x181 + + + + .debug_info + 0x1bc17 + 0x1bc17 + 0x183 + + + + .debug_info + 0x1bd9a + 0x1bd9a + 0x18d + + + + .debug_info + 0x1bf27 + 0x1bf27 + 0x183 + + + + .debug_info + 0x1c0aa + 0x1c0aa + 0x17d + + + + .debug_info + 0x1c227 + 0x1c227 + 0x189 + + + + .debug_info + 0x1c3b0 + 0x1c3b0 + 0x24c + + + + .debug_info + 0x1c5fc + 0x1c5fc + 0x250 + + + + .debug_info + 0x1c84c + 0x1c84c + 0x183 + + + + .debug_info + 0x1c9cf + 0x1c9cf + 0x17b + + + + .debug_info + 0x1cb4a + 0x1cb4a + 0x179 + + + + .debug_info + 0x1ccc3 + 0x1ccc3 + 0x179 + + + + .debug_info + 0x1ce3c + 0x1ce3c + 0x17b + + + + .debug_info + 0x1cfb7 + 0x1cfb7 + 0x24e + + + + .debug_info + 0x1d205 + 0x1d205 + 0x2b6 + + + + .debug_info + 0x1d4bb + 0x1d4bb + 0x2b6 + + + + .debug_info + 0x1d771 + 0x1d771 + 0x1d8 + + + + .debug_info + 0x1d949 + 0x1d949 + 0x2ba + + + + .debug_info + 0x1dc03 + 0x1dc03 + 0x2ba + + + + .debug_info + 0x1debd + 0x1debd + 0x1e2 + + + + .debug_info + 0x1e09f + 0x1e09f + 0x181 + + + + .debug_info + 0x1e220 + 0x1e220 + 0x1dc + + + + .debug_info + 0x1e3fc + 0x1e3fc + 0x181 + + + + .debug_info + 0x1e57d + 0x1e57d + 0x18f + + + + .debug_info + 0x1e70c + 0x1e70c + 0x19c + + + + .debug_info + 0x1e8a8 + 0x1e8a8 + 0x19e + + + + .debug_info + 0x1ea46 + 0x1ea46 + 0x19e + + + + .debug_info + 0x1ebe4 + 0x1ebe4 + 0x199 + + + + .debug_info + 0x1ed7d + 0x1ed7d + 0xb06 + + + + .debug_info + 0x1f883 + 0x1f883 + 0x118 + + + + .debug_info + 0x1f99b + 0x1f99b + 0x15e + + + + .debug_info + 0x1faf9 + 0x1faf9 + 0x1a0 + + + + .debug_info + 0x1fc99 + 0x1fc99 + 0x1ce + + + + .debug_info + 0x1fe67 + 0x1fe67 + 0x194 + + + + .debug_info + 0x1fffb + 0x1fffb + 0x196 + + + + .debug_info + 0x20191 + 0x20191 + 0x196 + + + + .debug_info + 0x20327 + 0x20327 + 0x196 + + + + .debug_info + 0x204bd + 0x204bd + 0x196 + + + + .debug_info + 0x20653 + 0x20653 + 0x196 + + + + .debug_info + 0x207e9 + 0x207e9 + 0x19a + + + + .debug_info + 0x20983 + 0x20983 + 0x192 + + + + .debug_info + 0x20b15 + 0x20b15 + 0x15a + + + + .debug_info + 0x20c6f + 0x20c6f + 0x19a + + + + .debug_info + 0x20e09 + 0x20e09 + 0x19c + + + + .debug_info + 0x20fa5 + 0x20fa5 + 0x19c + + + + .debug_info + 0x21141 + 0x21141 + 0x19c + + + + .debug_info + 0x212dd + 0x212dd + 0x19c + + + + .debug_info + 0x21479 + 0x21479 + 0x19c + + + + .debug_info + 0x21615 + 0x21615 + 0x1a0 + + + + .debug_info + 0x217b5 + 0x217b5 + 0x198 + + + + .debug_info + 0x2194d + 0x2194d + 0x17c + + + + .debug_info + 0x21ac9 + 0x21ac9 + 0x190 + + + + .debug_info + 0x21c59 + 0x21c59 + 0x162 + + + + .debug_info + 0x21dbb + 0x21dbb + 0x166 + + + + .debug_info + 0x21f21 + 0x21f21 + 0x15e + + + + .debug_info + 0x2207f + 0x2207f + 0x194 + + + + .debug_info + 0x22213 + 0x22213 + 0x164 + + + + .debug_info + 0x22377 + 0x22377 + 0x168 + + + + .debug_info + 0x224df + 0x224df + 0x160 + + + + .debug_info + 0x2263f + 0x2263f + 0x1d5 + + + + .debug_info + 0x22814 + 0x22814 + 0x17a + + + + .debug_info + 0x2298e + 0x2298e + 0x185 + + + + .debug_info + 0x22b13 + 0x22b13 + 0x16c + + + + .debug_info + 0x22c7f + 0x22c7f + 0x16c + + + + .debug_info + 0x22deb + 0x22deb + 0x198 + + + + .debug_info + 0x22f83 + 0x22f83 + 0x19a + + + + .debug_info + 0x2311d + 0x2311d + 0x18c + + + + .debug_info + 0x232a9 + 0x232a9 + 0x17a + + + + .debug_info + 0x23423 + 0x23423 + 0x17a + + + + .debug_info + 0x2359d + 0x2359d + 0x160 + + + + .debug_info + 0x236fd + 0x236fd + 0x197 + + + + .debug_info + 0x23894 + 0x23894 + 0x16c + + + + .debug_info + 0x23a00 + 0x23a00 + 0x18f + + + + .debug_info + 0x23b8f + 0x23b8f + 0x17c + + + + .debug_info + 0x23d0b + 0x23d0b + 0x162 + + + + .debug_info + 0x23e6d + 0x23e6d + 0x19a + + + + .debug_info + 0x24007 + 0x24007 + 0x16e + + + + .debug_info + 0x24175 + 0x24175 + 0x16e + + + + .debug_info + 0x242e3 + 0x242e3 + 0x3bb + + + + .debug_info + 0x2469e + 0x2469e + 0x116 + + + + .debug_info + 0x247b4 + 0x247b4 + 0x1f7 + + + + .debug_info + 0x249ab + 0x249ab + 0x16b + + + + .debug_info + 0x24b16 + 0x24b16 + 0x18b + + + + .debug_info + 0x24ca1 + 0x24ca1 + 0x197 + + + + .debug_info + 0x24e38 + 0x24e38 + 0x1c8 + + + + .debug_info + 0x25000 + 0x25000 + 0x19d + + + + .debug_info + 0x2519d + 0x2519d + 0x1d0 + + + + .debug_info + 0x2536d + 0x2536d + 0x1bb + + + + .debug_info + 0x25528 + 0x25528 + 0x19d + + + + .debug_info + 0x256c5 + 0x256c5 + 0x1a5 + + + + .debug_info + 0x2586a + 0x2586a + 0x340 + + + + .debug_info + 0x25baa + 0x25baa + 0x1d3 + + + + .debug_info + 0x25d7d + 0x25d7d + 0x16b + + + + .debug_info + 0x25ee8 + 0x25ee8 + 0x1ca + + + + .debug_info + 0x260b2 + 0x260b2 + 0x7df + + + + .debug_info + 0x26891 + 0x26891 + 0x121 + + + + .debug_info + 0x269b2 + 0x269b2 + 0x121 + + + + .debug_info + 0x26ad3 + 0x26ad3 + 0x119 + + + + .debug_info + 0x26bec + 0x26bec + 0x119 + + + + .debug_info + 0x26d05 + 0x26d05 + 0x235 + + + + .debug_info + 0x26f3a + 0x26f3a + 0x235 + + + + .debug_info + 0x2716f + 0x2716f + 0x1d7 + + + + .debug_info + 0x27346 + 0x27346 + 0x259 + + + + .debug_info + 0x2759f + 0x2759f + 0x27b + + + + .debug_info + 0x2781a + 0x2781a + 0x1bc + + + + .debug_info + 0x279d6 + 0x279d6 + 0x2ee + + + + .debug_info + 0x27cc4 + 0x27cc4 + 0x192 + + + + .debug_info + 0x27e56 + 0x27e56 + 0x22f + + + + .debug_info + 0x28085 + 0x28085 + 0x192 + + + + .debug_info + 0x28217 + 0x28217 + 0x22f + + + + .debug_info + 0x28446 + 0x28446 + 0x42a + + + + .debug_info + 0x28870 + 0x28870 + 0x20f + + + + .debug_info + 0x28a7f + 0x28a7f + 0x263 + + + + .debug_info + 0x28ce2 + 0x28ce2 + 0x244 + + + + .debug_info + 0x28f26 + 0x28f26 + 0x14f + + + + .debug_info + 0x29075 + 0x29075 + 0x174 + + + + .debug_info + 0x291e9 + 0x291e9 + 0x2c9 + + + + .debug_info + 0x294b2 + 0x294b2 + 0x11b + + + + .debug_info + 0x295cd + 0x295cd + 0x1c9 + + + + .debug_info + 0x29796 + 0x29796 + 0x22f + + + + .debug_info + 0x299c5 + 0x299c5 + 0x1f4 + + + + .debug_info + 0x29bb9 + 0x29bb9 + 0x62 + + + + .debug_info + 0x29c1b + 0x29c1b + 0x3f0f + + + + .debug_info + 0x2db2a + 0x2db2a + 0x16e + + + + .debug_info + 0x2dc98 + 0x2dc98 + 0x22b + + + + .debug_info + 0x2dec3 + 0x2dec3 + 0x142a + + + + .debug_info + 0x2f2ed + 0x2f2ed + 0x148 + + + + .debug_info + 0x2f435 + 0x2f435 + 0x183 + + + + .debug_info + 0x2f5b8 + 0x2f5b8 + 0x287 + + + + .debug_info + 0x2f83f + 0x2f83f + 0x97 + + + + .debug_info + 0x2f8d6 + 0x2f8d6 + 0x82 + + + + .debug_info + 0x2f958 + 0x2f958 + 0x5a5 + + + + .debug_info + 0x2fefd + 0x2fefd + 0x172 + + + + .debug_info + 0x3006f + 0x3006f + 0x116 + + + + .debug_info + 0x30185 + 0x30185 + 0x2cd + + + + .debug_info + 0x30452 + 0x30452 + 0xc9 + + + + .debug_info + 0x3051b + 0x3051b + 0x21b + + + + .debug_info + 0x30736 + 0x30736 + 0x7e + + + + .debug_info + 0x307b4 + 0x307b4 + 0xa10 + + + + .debug_info + 0x311c4 + 0x311c4 + 0x26d + + + + .debug_info + 0x31431 + 0x31431 + 0x316 + + + + .debug_info + 0x31747 + 0x31747 + 0x1d7 + + + + .debug_info + 0x3191e + 0x3191e + 0x1f8 + + + + .debug_info + 0x31b16 + 0x31b16 + 0x1c2 + + + + .debug_info + 0x31cd8 + 0x31cd8 + 0x1c1 + + + + .debug_info + 0x31e99 + 0x31e99 + 0x23b + + + + .debug_info + 0x320d4 + 0x320d4 + 0x1bc + + + + .debug_info + 0x32290 + 0x32290 + 0x14fc + + + + .debug_info + 0x3378c + 0x3378c + 0x1c0 + + + + .debug_info + 0x3394c + 0x3394c + 0x15c5 + + + + .debug_info + 0x34f11 + 0x34f11 + 0x1c6 + + + + .debug_info + 0x350d7 + 0x350d7 + 0x763 + + + + .debug_info + 0x3583a + 0x3583a + 0x2c + + + + .debug_info + 0x35866 + 0x35866 + 0x54b + + + + .debug_info + 0x35db1 + 0x35db1 + 0x198 + + + + .debug_info + 0x35f49 + 0x35f49 + 0x201 + + + + .debug_info + 0x3614a + 0x3614a + 0x25f + + + + .debug_info + 0x363a9 + 0x363a9 + 0x11e + + + + .debug_info + 0x364c7 + 0x364c7 + 0x20d + + + + .debug_info + 0x366d4 + 0x366d4 + 0xea + + + + .debug_info + 0x367be + 0x367be + 0xa0a + + + + .debug_info + 0x371c8 + 0x371c8 + 0x275 + + + + .debug_info + 0x3743d + 0x3743d + 0xef + + + + .debug_info + 0x3752c + 0x3752c + 0xbb + + + + .debug_info + 0x375e7 + 0x375e7 + 0x30c + + + + .debug_info + 0x378f3 + 0x378f3 + 0x2a1 + + + + .debug_info + 0x37b94 + 0x37b94 + 0x46 + + + + .debug_info + 0x37bda + 0x37bda + 0x2fe + + + + .debug_info + 0x37ed8 + 0x37ed8 + 0x519 + + + + .debug_info + 0x383f1 + 0x383f1 + 0x626 + + + + .debug_info + 0x38a17 + 0x38a17 + 0x373 + + + + .debug_info + 0x38d8a + 0x38d8a + 0x35 + + + + .debug_info + 0x38dbf + 0x38dbf + 0x22d + + + + .debug_info + 0x38fec + 0x38fec + 0x7b0 + + + + .debug_info + 0x3979c + 0x3979c + 0x227 + + + + .debug_info + 0x399c3 + 0x399c3 + 0x4ec + + + + .debug_info + 0x39eaf + 0x39eaf + 0x2e9 + + + + .debug_info + 0x3a198 + 0x3a198 + 0x199 + + + + .debug_info + 0x3a331 + 0x3a331 + 0x360 + + + + .debug_info + 0x3a691 + 0x3a691 + 0x1fc + + + + .debug_info + 0x3a88d + 0x3a88d + 0x184 + + + + .debug_info + 0x3aa11 + 0x3aa11 + 0x1dc + + + + .debug_info + 0x3abed + 0x3abed + 0x5fb + + + + .debug_info + 0x3b1e8 + 0x3b1e8 + 0x1e2 + + + + .debug_info + 0x3b3ca + 0x3b3ca + 0x2836 + + + + .debug_info + 0x3dc00 + 0x3dc00 + 0x162 + + + + .debug_info + 0x3dd62 + 0x3dd62 + 0x154 + + + + .debug_info + 0x3deb6 + 0x3deb6 + 0x159 + + + + .debug_info + 0x3e00f + 0x3e00f + 0x20f + + + + .debug_info + 0x3e21e + 0x3e21e + 0x1db + + + + .debug_info + 0x3e3f9 + 0x3e3f9 + 0x2be + + + + .debug_info + 0x3e6b7 + 0x3e6b7 + 0x2ac + + + + .debug_info + 0x3e963 + 0x3e963 + 0x37a + + + + .debug_info + 0x3ecdd + 0x3ecdd + 0x216 + + + + .debug_info + 0x3eef3 + 0x3eef3 + 0x374 + + + + .debug_info + 0x3f267 + 0x3f267 + 0x365 + + + + .debug_info + 0x3f5cc + 0x3f5cc + 0x24f + + + + .debug_info + 0x3f81b + 0x3f81b + 0x372 + + + + .debug_info + 0x3fb8d + 0x3fb8d + 0x37c + + + + .debug_info + 0x3ff09 + 0x3ff09 + 0x29f + + + + .debug_info + 0x401a8 + 0x401a8 + 0x35b + + + + .debug_info + 0x40503 + 0x40503 + 0x3bf + + + + .debug_info + 0x408c2 + 0x408c2 + 0x3b3 + + + + .debug_info + 0x40c75 + 0x40c75 + 0x39c + + + + .debug_info + 0x41011 + 0x41011 + 0x342 + + + + .debug_info + 0x41353 + 0x41353 + 0x374 + + + + .debug_info + 0x416c7 + 0x416c7 + 0x39d + + + + .debug_info + 0x41a64 + 0x41a64 + 0x3c0 + + + + .debug_info + 0x41e24 + 0x41e24 + 0x33e + + + + .debug_info + 0x42162 + 0x42162 + 0x342 + + + + .debug_info + 0x424a4 + 0x424a4 + 0x33a + + + + .debug_info + 0x427de + 0x427de + 0x394 + + + + .debug_info + 0x42b72 + 0x42b72 + 0x38f + + + + .debug_info + 0x42f01 + 0x42f01 + 0x3e9 + + + + .debug_info + 0x432ea + 0x432ea + 0x33a + + + + .debug_info + 0x43624 + 0x43624 + 0x32a + + + + .debug_info + 0x4394e + 0x4394e + 0x338 + + + + .debug_info + 0x43c86 + 0x43c86 + 0x2fd + + + + .debug_info + 0x43f83 + 0x43f83 + 0x320 + + + + .debug_info + 0x442a3 + 0x442a3 + 0x448 + + + + .debug_info + 0x446eb + 0x446eb + 0x3d8 + + + + .debug_info + 0x44ac3 + 0x44ac3 + 0x301 + + + + .debug_info + 0x44dc4 + 0x44dc4 + 0x342 + + + + .debug_info + 0x45106 + 0x45106 + 0x767 + + + + .debug_info + 0x4586d + 0x4586d + 0x349 + + + + .debug_info + 0x45bb6 + 0x45bb6 + 0x401 + + + + .debug_info + 0x45fb7 + 0x45fb7 + 0x23d + + + + .debug_info + 0x461f4 + 0x461f4 + 0x204 + + + + .debug_info + 0x463f8 + 0x463f8 + 0x23e + + + + .debug_info + 0x46636 + 0x46636 + 0x242 + + + + .debug_info + 0x46878 + 0x46878 + 0x245 + + + + .debug_info + 0x46abd + 0x46abd + 0x247 + + + + .debug_info + 0x46d04 + 0x46d04 + 0x310 + + + + .debug_info + 0x47014 + 0x47014 + 0x490 + + + + .debug_info + 0x474a4 + 0x474a4 + 0x4f0 + + + + .debug_info + 0x47994 + 0x47994 + 0x37a + + + + .debug_info + 0x47d0e + 0x47d0e + 0x341 + + + + .debug_info + 0x4804f + 0x4804f + 0x359 + + + + .debug_info + 0x483a8 + 0x483a8 + 0x3cc + + + + .debug_info + 0x48774 + 0x48774 + 0x36b + + + + .debug_info + 0x48adf + 0x48adf + 0x59e + + + + .debug_info + 0x4907d + 0x4907d + 0x2eb + + + + .debug_info + 0x49368 + 0x49368 + 0x49e + + + + .debug_info + 0x49806 + 0x49806 + 0x831 + + + + .debug_info + 0x4a037 + 0x4a037 + 0xb2 + + + + .debug_info + 0x4a0e9 + 0x4a0e9 + 0x681 + + + + .debug_info + 0x4a76a + 0x4a76a + 0x7a + + + + .debug_info + 0x4a7e4 + 0x4a7e4 + 0xf1 + + + + .debug_info + 0x4a8d5 + 0x4a8d5 + 0x3923 + + + + .debug_info + 0x4e1f8 + 0x4e1f8 + 0x189 + + + + .debug_info + 0x4e381 + 0x4e381 + 0x17b + + + + .debug_info + 0x4e4fc + 0x4e4fc + 0x180 + + + + .debug_info + 0x4e67c + 0x4e67c + 0x24d + + + + .debug_info + 0x4e8c9 + 0x4e8c9 + 0x2aa + + + + .debug_info + 0x4eb73 + 0x4eb73 + 0x227 + + + + .debug_info + 0x4ed9a + 0x4ed9a + 0x2b8 + + + + .debug_info + 0x4f052 + 0x4f052 + 0x26b + + + + .debug_info + 0x4f2bd + 0x4f2bd + 0x2af + + + + .debug_info + 0x4f56c + 0x4f56c + 0x238 + + + + .debug_info + 0x4f7a4 + 0x4f7a4 + 0x3ff + + + + .debug_info + 0x4fba3 + 0x4fba3 + 0x4d5 + + + + .debug_info + 0x50078 + 0x50078 + 0x2c7 + + + + .debug_info + 0x5033f + 0x5033f + 0x3e4 + + + + .debug_info + 0x50723 + 0x50723 + 0x36d + + + + .debug_info + 0x50a90 + 0x50a90 + 0x2a9 + + + + .debug_info + 0x50d39 + 0x50d39 + 0x3c7 + + + + .debug_info + 0x51100 + 0x51100 + 0x3af6 + + + + .debug_info + 0x54bf6 + 0x54bf6 + 0x183 + + + + .debug_info + 0x54d79 + 0x54d79 + 0x175 + + + + .debug_info + 0x54eee + 0x54eee + 0x17a + + + + .debug_info + 0x55068 + 0x55068 + 0x243 + + + + .debug_info + 0x552ab + 0x552ab + 0x263 + + + + .debug_info + 0x5550e + 0x5550e + 0x230 + + + + .debug_info + 0x5573e + 0x5573e + 0x503 + + + + .debug_info + 0x55c41 + 0x55c41 + 0x3b4 + + + + .debug_info + 0x55ff5 + 0x55ff5 + 0x30d + + + + .debug_info + 0x56302 + 0x56302 + 0x2b8 + + + + .debug_info + 0x565ba + 0x565ba + 0x3df + + + + .debug_info + 0x56999 + 0x56999 + 0x362 + + + + .debug_info + 0x56cfb + 0x56cfb + 0x2c4 + + + + .debug_info + 0x56fbf + 0x56fbf + 0x33e + + + + .debug_info + 0x572fd + 0x572fd + 0x36e + + + + .debug_info + 0x5766b + 0x5766b + 0xc7f + + + + .debug_info + 0x582ea + 0x582ea + 0x3629 + + + + .debug_info + 0x5b913 + 0x5b913 + 0x182 + + + + .debug_info + 0x5ba95 + 0x5ba95 + 0x174 + + + + .debug_info + 0x5bc09 + 0x5bc09 + 0x179 + + + + .debug_info + 0x5bd82 + 0x5bd82 + 0x250 + + + + .debug_info + 0x5bfd2 + 0x5bfd2 + 0x2ad + + + + .debug_info + 0x5c27f + 0x5c27f + 0x221 + + + + .debug_info + 0x5c4a0 + 0x5c4a0 + 0x21f + + + + .debug_info + 0x5c6bf + 0x5c6bf + 0x46f + + + + .debug_info + 0x5cb2e + 0x5cb2e + 0x26d + + + + .debug_info + 0x5cd9b + 0x5cd9b + 0x263 + + + + .debug_info + 0x5cffe + 0x5cffe + 0x2ab + + + + .debug_info + 0x5d2a9 + 0x5d2a9 + 0x3dc + + + + .debug_info + 0x5d685 + 0x5d685 + 0x361 + + + + .debug_info + 0x5d9e6 + 0x5d9e6 + 0x36ea + + + + .debug_info + 0x610d0 + 0x610d0 + 0x162 + + + + .debug_info + 0x61232 + 0x61232 + 0x154 + + + + .debug_info + 0x61386 + 0x61386 + 0x159 + + + + .debug_info + 0x614df + 0x614df + 0x2ae + + + + .debug_info + 0x6178d + 0x6178d + 0x241 + + + + .debug_info + 0x619ce + 0x619ce + 0x204 + + + + .debug_info + 0x61bd2 + 0x61bd2 + 0x2b8 + + + + .debug_info + 0x61e8a + 0x61e8a + 0x24c + + + + .debug_info + 0x620d6 + 0x620d6 + 0x248 + + + + .debug_info + 0x6231e + 0x6231e + 0x252 + + + + .debug_info + 0x62570 + 0x62570 + 0x250 + + + + .debug_info + 0x627c0 + 0x627c0 + 0x244 + + + + .debug_info + 0x62a04 + 0x62a04 + 0x640 + + + + .debug_info + 0x63044 + 0x63044 + 0x3682 + + + + .debug_info + 0x666c6 + 0x666c6 + 0x170 + + + + .debug_info + 0x66836 + 0x66836 + 0x162 + + + + .debug_info + 0x66998 + 0x66998 + 0x167 + + + + .debug_info + 0x66aff + 0x66aff + 0x232 + + + + .debug_info + 0x66d31 + 0x66d31 + 0x314 + + + + .debug_info + 0x67045 + 0x67045 + 0x318 + + + + .debug_info + 0x6735d + 0x6735d + 0x2ed + + + + .debug_info + 0x6764a + 0x6764a + 0x24b + + + + .debug_info + 0x67895 + 0x67895 + 0x2f3 + + + + .debug_info + 0x67b88 + 0x67b88 + 0x260 + + + + .debug_info + 0x67de8 + 0x67de8 + 0x23f + + + + .debug_info + 0x68027 + 0x68027 + 0x3b3 + + + + .debug_info + 0x683da + 0x683da + 0x4347 + + + + .debug_info + 0x6c721 + 0x6c721 + 0x193 + + + + .debug_info + 0x6c8b4 + 0x6c8b4 + 0x193 + + + + .debug_info + 0x6ca47 + 0x6ca47 + 0x193 + + + + .debug_info + 0x6cbda + 0x6cbda + 0x193 + + + + .debug_info + 0x6cd6d + 0x6cd6d + 0x233 + + + + .debug_info + 0x6cfa0 + 0x6cfa0 + 0x390 + + + + .debug_info + 0x6d330 + 0x6d330 + 0x2ac + + + + .debug_info + 0x6d5dc + 0x6d5dc + 0x406 + + + + .debug_info + 0x6d9e2 + 0x6d9e2 + 0x2e0 + + + + .debug_info + 0x6dcc2 + 0x6dcc2 + 0x39b + + + + .debug_info + 0x6e05d + 0x6e05d + 0x380 + + + + .debug_info + 0x6e3dd + 0x6e3dd + 0x1ab + + + + .debug_info + 0x6e588 + 0x6e588 + 0x37ab + + + + .debug_info + 0x71d33 + 0x71d33 + 0x16b + + + + .debug_info + 0x71e9e + 0x71e9e + 0x15d + + + + .debug_info + 0x71ffb + 0x71ffb + 0x162 + + + + .debug_info + 0x7215d + 0x7215d + 0x21b + + + + .debug_info + 0x72378 + 0x72378 + 0x34a + + + + .debug_info + 0x726c2 + 0x726c2 + 0x41a + + + + .debug_info + 0x72adc + 0x72adc + 0x446 + + + + .debug_info + 0x72f22 + 0x72f22 + 0x290 + + + + .debug_info + 0x731b2 + 0x731b2 + 0x276 + + + + .debug_info + 0x73428 + 0x73428 + 0x243 + + + + .debug_info + 0x7366b + 0x7366b + 0x237 + + + + .debug_info + 0x738a2 + 0x738a2 + 0x5d8 + + + + .debug_info + 0x73e7a + 0x73e7a + 0x3bd + + + + .debug_info + 0x74237 + 0x74237 + 0x363 + + + + .debug_info + 0x7459a + 0x7459a + 0x3859 + + + + .debug_info + 0x77df3 + 0x77df3 + 0x16b + + + + .debug_info + 0x77f5e + 0x77f5e + 0x15d + + + + .debug_info + 0x780bb + 0x780bb + 0x162 + + + + .debug_info + 0x7821d + 0x7821d + 0x226 + + + + .debug_info + 0x78443 + 0x78443 + 0x44c + + + + .debug_info + 0x7888f + 0x7888f + 0x34b + + + + .debug_info + 0x78bda + 0x78bda + 0x306 + + + + .debug_info + 0x78ee0 + 0x78ee0 + 0x443 + + + + .debug_info + 0x79323 + 0x79323 + 0x245 + + + + .debug_info + 0x79568 + 0x79568 + 0x243 + + + + .debug_info + 0x797ab + 0x797ab + 0x237 + + + + .debug_info + 0x799e2 + 0x799e2 + 0x586 + + + + .debug_info + 0x79f68 + 0x79f68 + 0x363 + + + + .debug_info + 0x7a2cb + 0x7a2cb + 0x1c8 + + + + .debug_info + 0x7a493 + 0x7a493 + 0x12a + + + + .debug_info + 0x7a5bd + 0x7a5bd + 0x19f + + + + .debug_info + 0x7a75c + 0x7a75c + 0x195 + + + + .debug_info + 0x7a8f1 + 0x7a8f1 + 0x208 + + + + .debug_info + 0x7aaf9 + 0x7aaf9 + 0x1df + + + + .debug_info + 0x7acd8 + 0x7acd8 + 0x206 + + + + .debug_info + 0x7aede + 0x7aede + 0x23f + + + + .debug_info + 0x7b11d + 0x7b11d + 0x197 + + + + .debug_info + 0x7b2b4 + 0x7b2b4 + 0x1e0 + + + + .debug_info + 0x7b494 + 0x7b494 + 0x19f + + + + .debug_info + 0x7b633 + 0x7b633 + 0x197 + + + + .debug_info + 0x7b7ca + 0x7b7ca + 0x7d + + + + .debug_info + 0x7b847 + 0x7b847 + 0x90 + + + + .debug_info + 0x7b8d7 + 0x7b8d7 + 0x1ae + + + + .debug_info + 0x7ba85 + 0x7ba85 + 0x2be + + + + .debug_info + 0x7bd43 + 0x7bd43 + 0x2c2 + + + + .debug_info + 0x7c005 + 0x7c005 + 0x2c0 + + + + .debug_info + 0x7c2c5 + 0x7c2c5 + 0x2c0 + + + + .debug_info + 0x7c585 + 0x7c585 + 0x27f + + + + .debug_info + 0x7c804 + 0x7c804 + 0x2ad + + + + .debug_info + 0x7cab1 + 0x7cab1 + 0x281 + + + + .debug_info + 0x7cd32 + 0x7cd32 + 0x187 + + + + .debug_info + 0x7ceb9 + 0x7ceb9 + 0x123 + + + + .debug_info + 0x7cfdc + 0x7cfdc + 0x17c + + + + .debug_info + 0x7d158 + 0x7d158 + 0x18a + + + + .debug_info + 0x7d2e2 + 0x7d2e2 + 0x878 + + + + .debug_info + 0x7db5a + 0x7db5a + 0x156 + + + + .debug_info + 0x7dcb0 + 0x7dcb0 + 0x15c + + + + .debug_info + 0x7de0c + 0x7de0c + 0x148 + + + + .debug_info + 0x7df54 + 0x7df54 + 0x14e + + + + .debug_info + 0x7e0a2 + 0x7e0a2 + 0x14d + + + + .debug_info + 0x7e1ef + 0x7e1ef + 0x153 + + + + .debug_info + 0x7e342 + 0x7e342 + 0x1a6 + + + + .debug_info + 0x7e4e8 + 0x7e4e8 + 0x1ac + + + + .debug_info + 0x7e694 + 0x7e694 + 0x19b + + + + .debug_info + 0x7e82f + 0x7e82f + 0x195 + + + + .debug_info + 0x7e9c4 + 0x7e9c4 + 0x59b + + + + .debug_info + 0x7ef5f + 0x7ef5f + 0x2c + + + + .debug_info + 0x7ef8b + 0x7ef8b + 0x11f + + + + .debug_info + 0x7f0aa + 0x7f0aa + 0x5b2 + + + + .debug_info + 0x7f65c + 0x7f65c + 0x12d + + + + .debug_info + 0x7f789 + 0x7f789 + 0x132 + + + + .debug_info + 0x7f8bb + 0x7f8bb + 0x178 + + + + .debug_info + 0x7fa33 + 0x7fa33 + 0x2c + + + + .debug_info + 0x7fa5f + 0x7fa5f + 0x9c + + + + .debug_info + 0x7fafb + 0x7fafb + 0x219 + + + + .debug_info + 0x7fd14 + 0x7fd14 + 0x17c + + + + .debug_info + 0x7fe90 + 0x7fe90 + 0x179 + + + + .debug_info + 0x80009 + 0x80009 + 0x6c + + + + .debug_info + 0x80075 + 0x80075 + 0x17c + + + + .debug_info + 0x801f1 + 0x801f1 + 0x251 + + + + .debug_info + 0x80442 + 0x80442 + 0x60 + + + + .debug_info + 0x804a2 + 0x804a2 + 0x46 + + + + .debug_info + 0x804e8 + 0x804e8 + 0x39 + + + + .debug_info + 0x80521 + 0x80521 + 0x190 + + + + .debug_info + 0x806b1 + 0x806b1 + 0x1d4 + + + + .debug_info + 0x80885 + 0x80885 + 0x46 + + + + .debug_info + 0x808cb + 0x808cb + 0x110 + + + + .debug_info + 0x809db + 0x809db + 0x180 + + + + .debug_info + 0x80b5b + 0x80b5b + 0x1c6 + + + + .debug_info + 0x80d21 + 0x80d21 + 0x46 + + + + .debug_info + 0x80d67 + 0x80d67 + 0x16a + + + + .debug_info + 0x80ed1 + 0x80ed1 + 0x165 + + + + .debug_info + 0x81036 + 0x81036 + 0x131 + + + + .debug_info + 0x81167 + 0x81167 + 0x121 + + + + .debug_info + 0x81288 + 0x81288 + 0x127 + + + + .debug_info + 0x813af + 0x813af + 0x121 + + + + .debug_info + 0x814d0 + 0x814d0 + 0x121 + + + + .debug_info + 0x815f1 + 0x815f1 + 0x189 + + + + .debug_info + 0x8177a + 0x8177a + 0x20a + + + + .debug_info + 0x81984 + 0x81984 + 0x178 + + + + .debug_info + 0x81afc + 0x81afc + 0xb2 + + + + .debug_info + 0x81bae + 0x81bae + 0x101 + + + + .debug_info + 0x81caf + 0x81caf + 0x194 + + + + .debug_info + 0x81e43 + 0x81e43 + 0xf2 + + + + .debug_info + 0x81f35 + 0x81f35 + 0x3fd + + + + .debug_info + 0x82332 + 0x82332 + 0x231 + + + + .debug_info + 0x82563 + 0x82563 + 0x39 + + + + .debug_info + 0x8259c + 0x8259c + 0x2c + + + + .debug_info + 0x825c8 + 0x825c8 + 0x2c + + + + .debug_info + 0x825f4 + 0x825f4 + 0xcd + + + + .debug_info + 0x826c1 + 0x826c1 + 0x13f + + + + .debug_info + 0x82800 + 0x82800 + 0x103 + + + + .debug_info + 0x82903 + 0x82903 + 0x10b + + + + .debug_info + 0x82a0e + 0x82a0e + 0x151 + + + + .debug_info + 0x82b5f + 0x82b5f + 0x154 + + + + .debug_info + 0x82cb3 + 0x82cb3 + 0x234 + + + + .debug_info + 0x82ee7 + 0x82ee7 + 0x133 + + + + .debug_info + 0x8301a + 0x8301a + 0x123 + + + + .debug_info + 0x8313d + 0x8313d + 0x198 + + + + .debug_info + 0x832d5 + 0x832d5 + 0x104 + + + + .debug_info + 0x833d9 + 0x833d9 + 0x11b + + + + .debug_info + 0x834f4 + 0x834f4 + 0x117 + + + + .debug_info + 0x8360b + 0x8360b + 0x169 + + + + .debug_info + 0x83774 + 0x83774 + 0x100 + + + + .debug_info + 0x83874 + 0x83874 + 0x104 + + + + .debug_info + 0x83978 + 0x83978 + 0x12f + + + + .debug_info + 0x83aa7 + 0x83aa7 + 0x22a + + + + .debug_info + 0x83cd1 + 0x83cd1 + 0x185 + + + + .debug_info + 0x83e56 + 0x83e56 + 0x1c9 + + + + .debug_info + 0x8401f + 0x8401f + 0x2f3 + + + + .debug_info + 0x84312 + 0x84312 + 0x2c8 + + + + .debug_info + 0x845da + 0x845da + 0x1e8 + + + + .debug_info + 0x847c2 + 0x847c2 + 0x197 + + + + .debug_info + 0x84959 + 0x84959 + 0xbf + + + + .debug_info + 0x84a18 + 0x84a18 + 0x244 + + + + .debug_info + 0x84c5c + 0x84c5c + 0x10d + + + + .debug_info + 0x84d69 + 0x84d69 + 0x120 + + + + .debug_info + 0x84e89 + 0x84e89 + 0x106 + + + + .debug_info + 0x84f8f + 0x84f8f + 0x169 + + + + .debug_info + 0x850f8 + 0x850f8 + 0x15f + + + + .debug_info + 0x85257 + 0x85257 + 0x18f + + + + .debug_info + 0x853e6 + 0x853e6 + 0x1a0 + + + + .debug_info + 0x85586 + 0x85586 + 0x215 + + + + .debug_info + 0x8579b + 0x8579b + 0x1ed + + + + .debug_info + 0x85988 + 0x85988 + 0x28c + + + + .debug_info + 0x85c14 + 0x85c14 + 0xb2 + + + + .debug_info + 0x85cc6 + 0x85cc6 + 0x2c + + + + .debug_info + 0x85cf2 + 0x85cf2 + 0x122 + + + + .debug_info + 0x85e14 + 0x85e14 + 0x207 + + + + .debug_info + 0x8601b + 0x8601b + 0x1ea + + + + .debug_info + 0x86205 + 0x86205 + 0x2c + + + + .debug_info + 0x86231 + 0x86231 + 0x284 + + + + .debug_info + 0x864b5 + 0x864b5 + 0x1c3 + + + + .debug_info + 0x86678 + 0x86678 + 0x120 + + + + .debug_info + 0x86798 + 0x86798 + 0x33d + + + + .debug_info + 0x86ad5 + 0x86ad5 + 0x10a + + + + .debug_info + 0x86bdf + 0x86bdf + 0x10a + + + + .debug_info + 0x86ce9 + 0x86ce9 + 0x25b + + + + .debug_info + 0x86f44 + 0x86f44 + 0x1bd + + + + .debug_info + 0x87101 + 0x87101 + 0x265 + + + + .debug_info + 0x87366 + 0x87366 + 0x236 + + + + .debug_info + 0x8759c + 0x8759c + 0x295 + + + + .debug_info + 0x87831 + 0x87831 + 0x20d + + + + .debug_info + 0x87a3e + 0x87a3e + 0x264 + + + + .debug_info + 0x87ca2 + 0x87ca2 + 0x1fc + + + + .debug_info + 0x87e9e + 0x87e9e + 0x2c7 + + + + .debug_info + 0x88165 + 0x88165 + 0x237 + + + + .debug_info + 0x8839c + 0x8839c + 0x27e + + + + .debug_info + 0x8861a + 0x8861a + 0x1c7 + + + + .debug_info + 0x887e1 + 0x887e1 + 0x265 + + + + .debug_info + 0x88a46 + 0x88a46 + 0x201 + + + + .debug_info + 0x88c47 + 0x88c47 + 0x1a8 + + + + .debug_info + 0x88def + 0x88def + 0x107 + + + + .debug_info + 0x88ef6 + 0x88ef6 + 0x1e0 + + + + .debug_info + 0x890d6 + 0x890d6 + 0x19b + + + + .debug_info + 0x89271 + 0x89271 + 0x188 + + + + .debug_info + 0x893f9 + 0x893f9 + 0x251 + + + + .debug_info + 0x8964a + 0x8964a + 0x19b + + + + .debug_info + 0x897e5 + 0x897e5 + 0x17b + + + + .debug_info + 0x89960 + 0x89960 + 0x178 + + + + .debug_info + 0x89ad8 + 0x89ad8 + 0x276 + + + + .debug_info + 0x89d4e + 0x89d4e + 0x25c + + + + .debug_info + 0x89faa + 0x89faa + 0x1ff + + + + .debug_info + 0x8a1a9 + 0x8a1a9 + 0x177 + + + + .debug_info + 0x8a320 + 0x8a320 + 0x288 + + + + .debug_info + 0x8a5a8 + 0x8a5a8 + 0x1ee + + + + .debug_info + 0x8a796 + 0x8a796 + 0x2b2 + + + + .debug_info + 0x8aa48 + 0x8aa48 + 0x19d + + + + .debug_info + 0x8abe5 + 0x8abe5 + 0x31e + + + + .debug_info + 0x8af03 + 0x8af03 + 0x193 + + + + .debug_info + 0x8b096 + 0x8b096 + 0x1ec + + + + .debug_info + 0x8b282 + 0x8b282 + 0xea + + + + .debug_info + 0x8b36c + 0x8b36c + 0x2c + + + + .debug_info + 0x8b398 + 0x8b398 + 0x22a + + + + .debug_info + 0x8b5c2 + 0x8b5c2 + 0x1c3 + + + + .debug_info + 0x8b785 + 0x8b785 + 0x199 + + + + .debug_info + 0x8b91e + 0x8b91e + 0x16e + + + + .debug_info + 0x8ba8c + 0x8ba8c + 0x32d + + + + .debug_info + 0x8bdb9 + 0x8bdb9 + 0x29c + + + + .debug_info + 0x8c055 + 0x8c055 + 0x290 + + + + .debug_info + 0x8c2e5 + 0x8c2e5 + 0x22d + + + + .debug_info + 0x8c512 + 0x8c512 + 0x2d5 + + + + .debug_info + 0x8c7e7 + 0x8c7e7 + 0x86 + + + + .debug_info + 0x8c86d + 0x8c86d + 0x39 + + + + .debug_info + 0x8c8a6 + 0x8c8a6 + 0x179 + + + + .debug_info + 0x8ca1f + 0x8ca1f + 0x1b7 + + + + .debug_info + 0x8cbd6 + 0x8cbd6 + 0x182 + + + + .debug_info + 0x8cd58 + 0x8cd58 + 0x269 + + + + .debug_info + 0x8cfc1 + 0x8cfc1 + 0x168 + + + + .debug_info + 0x8d129 + 0x8d129 + 0x274 + + + + .debug_info + 0x8d39d + 0x8d39d + 0x191 + + + + .debug_info + 0x8d52e + 0x8d52e + 0x24d + + + + .debug_info + 0x8d77b + 0x8d77b + 0x168 + + + + .debug_info + 0x8d8e3 + 0x8d8e3 + 0x231 + + + + .debug_info + 0x8db14 + 0x8db14 + 0x192 + + + + .debug_info + 0x8dca6 + 0x8dca6 + 0x269 + + + + .debug_info + 0x8df0f + 0x8df0f + 0x2af + + + + .debug_info + 0x8e1be + 0x8e1be + 0x1a6 + + + + .debug_info + 0x8e364 + 0x8e364 + 0x23f + + + + .debug_info + 0x8e5a3 + 0x8e5a3 + 0x1fb + + + + .debug_info + 0x8e79e + 0x8e79e + 0x19c + + + + .debug_info + 0x8e93a + 0x8e93a + 0x171 + + + + .debug_info + 0x8eaab + 0x8eaab + 0x28e + + + + .debug_info + 0x8ed39 + 0x8ed39 + 0x1c2 + + + + .debug_info + 0x8eefb + 0x8eefb + 0xd9 + + + .debug_line + 0x0 + 0x0 + 0x99 + + + + .debug_line + 0x99 + 0x99 + 0x6d + + + + .debug_line + 0x106 + 0x106 + 0x7a + + + + .debug_line + 0x180 + 0x180 + 0x94 + + + + .debug_line + 0x214 + 0x214 + 0x99 + + + + .debug_line + 0x2ad + 0x2ad + 0x20 + + + + .debug_line + 0x2cd + 0x2cd + 0x7e + + + + .debug_line + 0x34b + 0x34b + 0x7b + + + + .debug_line + 0x3c6 + 0x3c6 + 0x76 + + + + .debug_line + 0x43c + 0x43c + 0x1bd + + + + .debug_line + 0x5f9 + 0x5f9 + 0x3e + + + + .debug_line + 0x637 + 0x637 + 0x3e + + + + .debug_line + 0x675 + 0x675 + 0x5d + + + + .debug_line + 0x6d2 + 0x6d2 + 0x59 + + + + .debug_line + 0x72b + 0x72b + 0x51 + + + + .debug_line + 0x77c + 0x77c + 0x51 + + + + .debug_line + 0x7cd + 0x7cd + 0x51 + + + + .debug_line + 0x81e + 0x81e + 0x5e + + + + .debug_line + 0x87c + 0x87c + 0x99 + + + + .debug_line + 0x915 + 0x915 + 0x9a + + + + .debug_line + 0x9af + 0x9af + 0x98 + + + + .debug_line + 0xa47 + 0xa47 + 0x20 + + + + .debug_line + 0xa67 + 0xa67 + 0x76 + + + + .debug_line + 0xadd + 0xadd + 0x14d + + + + .debug_line + 0xc2a + 0xc2a + 0x6b + + + + .debug_line + 0xc95 + 0xc95 + 0x5f + + + + .debug_line + 0xcf4 + 0xcf4 + 0x1d1 + + + + .debug_line + 0xec5 + 0xec5 + 0x9d + + + + .debug_line + 0xf62 + 0xf62 + 0x91 + + + + .debug_line + 0xff3 + 0xff3 + 0x97 + + + + .debug_line + 0x108a + 0x108a + 0x8b + + + + .debug_line + 0x1115 + 0x1115 + 0x97 + + + + .debug_line + 0x11ac + 0x11ac + 0x92 + + + + .debug_line + 0x123e + 0x123e + 0x304 + + + + .debug_line + 0x1542 + 0x1542 + 0x41 + + + + .debug_line + 0x1583 + 0x1583 + 0x86 + + + + .debug_line + 0x1609 + 0x1609 + 0x6c + + + + .debug_line + 0x1675 + 0x1675 + 0x57 + + + + .debug_line + 0x16cc + 0x16cc + 0x73 + + + + .debug_line + 0x173f + 0x173f + 0x57 + + + + .debug_line + 0x1796 + 0x1796 + 0x57 + + + + .debug_line + 0x17ed + 0x17ed + 0x57 + + + + .debug_line + 0x1844 + 0x1844 + 0x109 + + + + .debug_line + 0x194d + 0x194d + 0x57 + + + + .debug_line + 0x19a4 + 0x19a4 + 0x70 + + + + .debug_line + 0x1a14 + 0x1a14 + 0x62 + + + + .debug_line + 0x1a76 + 0x1a76 + 0x9a + + + + .debug_line + 0x1b10 + 0x1b10 + 0x41 + + + + .debug_line + 0x1b51 + 0x1b51 + 0x99 + + + + .debug_line + 0x1bea + 0x1bea + 0x92 + + + + .debug_line + 0x1c7c + 0x1c7c + 0x76 + + + + .debug_line + 0x1cf2 + 0x1cf2 + 0x164 + + + + .debug_line + 0x1e56 + 0x1e56 + 0x40 + + + + .debug_line + 0x1e96 + 0x1e96 + 0x6f + + + + .debug_line + 0x1f05 + 0x1f05 + 0x6a + + + + .debug_line + 0x1f6f + 0x1f6f + 0x5d + + + + .debug_line + 0x1fcc + 0x1fcc + 0x59 + + + + .debug_line + 0x2025 + 0x2025 + 0xf9 + + + + .debug_line + 0x211e + 0x211e + 0x65 + + + + .debug_line + 0x2183 + 0x2183 + 0x68 + + + + .debug_line + 0x21eb + 0x21eb + 0x9a + + + + .debug_line + 0x2285 + 0x2285 + 0x40 + + + + .debug_line + 0x22c5 + 0x22c5 + 0x97 + + + + .debug_line + 0x235c + 0x235c + 0x99 + + + + .debug_line + 0x23f5 + 0x23f5 + 0x87 + + + + .debug_line + 0x247c + 0x247c + 0x178 + + + + .debug_line + 0x25f4 + 0x25f4 + 0x3e + + + + .debug_line + 0x2632 + 0x2632 + 0x3e + + + + .debug_line + 0x2670 + 0x2670 + 0x5c + + + + .debug_line + 0x26cc + 0x26cc + 0xbf + + + + .debug_line + 0x278b + 0x278b + 0x60 + + + + .debug_line + 0x27eb + 0x27eb + 0xa3 + + + + .debug_line + 0x288e + 0x288e + 0x5e + + + + .debug_line + 0x28ec + 0x28ec + 0x5e + + + + .debug_line + 0x294a + 0x294a + 0x5e + + + + .debug_line + 0x29a8 + 0x29a8 + 0x5e + + + + .debug_line + 0x2a06 + 0x2a06 + 0x60 + + + + .debug_line + 0x2a66 + 0x2a66 + 0x5e + + + + .debug_line + 0x2ac4 + 0x2ac4 + 0x5a + + + + .debug_line + 0x2b1e + 0x2b1e + 0x58 + + + + .debug_line + 0x2b76 + 0x2b76 + 0x58 + + + + .debug_line + 0x2bce + 0x2bce + 0x59 + + + + .debug_line + 0x2c27 + 0x2c27 + 0x57 + + + + .debug_line + 0x2c7e + 0x2c7e + 0x6b + + + + .debug_line + 0x2ce9 + 0x2ce9 + 0x59 + + + + .debug_line + 0x2d42 + 0x2d42 + 0x57 + + + + .debug_line + 0x2d99 + 0x2d99 + 0x57 + + + + .debug_line + 0x2df0 + 0x2df0 + 0x68 + + + + .debug_line + 0x2e58 + 0x2e58 + 0x57 + + + + .debug_line + 0x2eaf + 0x2eaf + 0x137 + + + + .debug_line + 0x2fe6 + 0x2fe6 + 0xf1 + + + + .debug_line + 0x30d7 + 0x30d7 + 0x58 + + + + .debug_line + 0x312f + 0x312f + 0x8e + + + + .debug_line + 0x31bd + 0x31bd + 0x5c + + + + .debug_line + 0x3219 + 0x3219 + 0x85 + + + + .debug_line + 0x329e + 0x329e + 0x54 + + + + .debug_line + 0x32f2 + 0x32f2 + 0x55 + + + + .debug_line + 0x3347 + 0x3347 + 0x54 + + + + .debug_line + 0x339b + 0x339b + 0x54 + + + + .debug_line + 0x33ef + 0x33ef + 0x5a + + + + .debug_line + 0x3449 + 0x3449 + 0x5a + + + + .debug_line + 0x34a3 + 0x34a3 + 0x54 + + + + .debug_line + 0x34f7 + 0x34f7 + 0x5b + + + + .debug_line + 0x3552 + 0x3552 + 0x5b + + + + .debug_line + 0x35ad + 0x35ad + 0x5a + + + + .debug_line + 0x3607 + 0x3607 + 0x54 + + + + .debug_line + 0x365b + 0x365b + 0x5c + + + + .debug_line + 0x36b7 + 0x36b7 + 0x54 + + + + .debug_line + 0x370b + 0x370b + 0x54 + + + + .debug_line + 0x375f + 0x375f + 0x3e + + + + .debug_line + 0x379d + 0x379d + 0x91 + + + + .debug_line + 0x382e + 0x382e + 0x20 + + + + .debug_line + 0x384e + 0x384e + 0x5d + + + + .debug_line + 0x38ab + 0x38ab + 0x71 + + + + .debug_line + 0x391c + 0x391c + 0x65 + + + + .debug_line + 0x3981 + 0x3981 + 0x80 + + + + .debug_line + 0x3a01 + 0x3a01 + 0x370 + + + + .debug_line + 0x3d71 + 0x3d71 + 0x3f + + + + .debug_line + 0x3db0 + 0x3db0 + 0x6c + + + + .debug_line + 0x3e1c + 0x3e1c + 0x55 + + + + .debug_line + 0x3e71 + 0x3e71 + 0xb0 + + + + .debug_line + 0x3f21 + 0x3f21 + 0x9e + + + + .debug_line + 0x3fbf + 0x3fbf + 0x84 + + + + .debug_line + 0x4043 + 0x4043 + 0xdc + + + + .debug_line + 0x411f + 0x411f + 0x6e + + + + .debug_line + 0x418d + 0x418d + 0x60 + + + + .debug_line + 0x41ed + 0x41ed + 0x3f + + + + .debug_line + 0x422c + 0x422c + 0x98 + + + + .debug_line + 0x42c4 + 0x42c4 + 0x97 + + + + .debug_line + 0x435b + 0x435b + 0x95 + + + + .debug_line + 0x43f0 + 0x43f0 + 0x20 + + + + .debug_line + 0x4410 + 0x4410 + 0x97 + + + + .debug_line + 0x44a7 + 0x44a7 + 0x20 + + + + .debug_line + 0x44c7 + 0x44c7 + 0x3c + + + + .debug_line + 0x4503 + 0x4503 + 0x88 + + + + .debug_line + 0x458b + 0x458b + 0x97 + + + + .debug_line + 0x4622 + 0x4622 + 0x5d + + + + .debug_line + 0x467f + 0x467f + 0x95 + + + + .debug_line + 0x4714 + 0x4714 + 0x3c + + + + .debug_line + 0x4750 + 0x4750 + 0x10d + + + + .debug_line + 0x485d + 0x485d + 0x7a + + + + .debug_line + 0x48d7 + 0x48d7 + 0x71 + + + + .debug_line + 0x4948 + 0x4948 + 0x69 + + + + .debug_line + 0x49b1 + 0x49b1 + 0x69 + + + + .debug_line + 0x4a1a + 0x4a1a + 0x71 + + + + .debug_line + 0x4a8b + 0x4a8b + 0x75 + + + + .debug_line + 0x4b00 + 0x4b00 + 0x69 + + + + .debug_line + 0x4b69 + 0x4b69 + 0x69 + + + + .debug_line + 0x4bd2 + 0x4bd2 + 0x69 + + + + .debug_line + 0x4c3b + 0x4c3b + 0x69 + + + + .debug_line + 0x4ca4 + 0x4ca4 + 0x75 + + + + .debug_line + 0x4d19 + 0x4d19 + 0x69 + + + + .debug_line + 0x4d82 + 0x4d82 + 0x69 + + + + .debug_line + 0x4deb + 0x4deb + 0x69 + + + + .debug_line + 0x4e54 + 0x4e54 + 0x6e + + + + .debug_line + 0x4ec2 + 0x4ec2 + 0x77 + + + + .debug_line + 0x4f39 + 0x4f39 + 0x69 + + + + .debug_line + 0x4fa2 + 0x4fa2 + 0x6f + + + + .debug_line + 0x5011 + 0x5011 + 0x6f + + + + .debug_line + 0x5080 + 0x5080 + 0x6f + + + + .debug_line + 0x50ef + 0x50ef + 0x6f + + + + .debug_line + 0x515e + 0x515e + 0x6f + + + + .debug_line + 0x51cd + 0x51cd + 0x6f + + + + .debug_line + 0x523c + 0x523c + 0x6f + + + + .debug_line + 0x52ab + 0x52ab + 0x75 + + + + .debug_line + 0x5320 + 0x5320 + 0x7d + + + + .debug_line + 0x539d + 0x539d + 0x81 + + + + .debug_line + 0x541e + 0x541e + 0x53 + + + + .debug_line + 0x5471 + 0x5471 + 0x97 + + + + .debug_line + 0x5508 + 0x5508 + 0x63 + + + + .debug_line + 0x556b + 0x556b + 0x38 + + + + .debug_line + 0x55a3 + 0x55a3 + 0x4e + + + + .debug_line + 0x55f1 + 0x55f1 + 0x5c + + + + .debug_line + 0x564d + 0x564d + 0x5b + + + + .debug_line + 0x56a8 + 0x56a8 + 0x5e + + + + .debug_line + 0x5706 + 0x5706 + 0x97 + + + + .debug_line + 0x579d + 0x579d + 0x91 + + + + .debug_line + 0x582e + 0x582e + 0x151 + + + + .debug_line + 0x597f + 0x597f + 0x3a + + + + .debug_line + 0x59b9 + 0x59b9 + 0x53 + + + + .debug_line + 0x5a0c + 0x5a0c + 0x53 + + + + .debug_line + 0x5a5f + 0x5a5f + 0x53 + + + + .debug_line + 0x5ab2 + 0x5ab2 + 0x51 + + + + .debug_line + 0x5b03 + 0x5b03 + 0x51 + + + + .debug_line + 0x5b54 + 0x5b54 + 0x54 + + + + .debug_line + 0x5ba8 + 0x5ba8 + 0x5d + + + + .debug_line + 0x5c05 + 0x5c05 + 0x5d + + + + .debug_line + 0x5c62 + 0x5c62 + 0x53 + + + + .debug_line + 0x5cb5 + 0x5cb5 + 0x51 + + + + .debug_line + 0x5d06 + 0x5d06 + 0x51 + + + + .debug_line + 0x5d57 + 0x5d57 + 0x57 + + + + .debug_line + 0x5dae + 0x5dae + 0x51 + + + + .debug_line + 0x5dff + 0x5dff + 0x59 + + + + .debug_line + 0x5e58 + 0x5e58 + 0x5f + + + + .debug_line + 0x5eb7 + 0x5eb7 + 0x5f + + + + .debug_line + 0x5f16 + 0x5f16 + 0x54 + + + + .debug_line + 0x5f6a + 0x5f6a + 0x5f + + + + .debug_line + 0x5fc9 + 0x5fc9 + 0x5f + + + + .debug_line + 0x6028 + 0x6028 + 0x54 + + + + .debug_line + 0x607c + 0x607c + 0x51 + + + + .debug_line + 0x60cd + 0x60cd + 0x58 + + + + .debug_line + 0x6125 + 0x6125 + 0x53 + + + + .debug_line + 0x6178 + 0x6178 + 0x53 + + + + .debug_line + 0x61cb + 0x61cb + 0x53 + + + + .debug_line + 0x621e + 0x621e + 0x53 + + + + .debug_line + 0x6271 + 0x6271 + 0x53 + + + + .debug_line + 0x62c4 + 0x62c4 + 0x50 + + + + .debug_line + 0x6314 + 0x6314 + 0x1c4 + + + + .debug_line + 0x64d8 + 0x64d8 + 0x38 + + + + .debug_line + 0x6510 + 0x6510 + 0x4f + + + + .debug_line + 0x655f + 0x655f + 0x4f + + + + .debug_line + 0x65ae + 0x65ae + 0x55 + + + + .debug_line + 0x6603 + 0x6603 + 0x4f + + + + .debug_line + 0x6652 + 0x6652 + 0x4e + + + + .debug_line + 0x66a0 + 0x66a0 + 0x4e + + + + .debug_line + 0x66ee + 0x66ee + 0x4e + + + + .debug_line + 0x673c + 0x673c + 0x4e + + + + .debug_line + 0x678a + 0x678a + 0x4e + + + + .debug_line + 0x67d8 + 0x67d8 + 0x50 + + + + .debug_line + 0x6828 + 0x6828 + 0x4f + + + + .debug_line + 0x6877 + 0x6877 + 0x4f + + + + .debug_line + 0x68c6 + 0x68c6 + 0x4f + + + + .debug_line + 0x6915 + 0x6915 + 0x4e + + + + .debug_line + 0x6963 + 0x6963 + 0x4e + + + + .debug_line + 0x69b1 + 0x69b1 + 0x4e + + + + .debug_line + 0x69ff + 0x69ff + 0x4e + + + + .debug_line + 0x6a4d + 0x6a4d + 0x4e + + + + .debug_line + 0x6a9b + 0x6a9b + 0x50 + + + + .debug_line + 0x6aeb + 0x6aeb + 0x4f + + + + .debug_line + 0x6b3a + 0x6b3a + 0x53 + + + + .debug_line + 0x6b8d + 0x6b8d + 0x4f + + + + .debug_line + 0x6bdc + 0x6bdc + 0x4f + + + + .debug_line + 0x6c2b + 0x6c2b + 0x4f + + + + .debug_line + 0x6c7a + 0x6c7a + 0x4f + + + + .debug_line + 0x6cc9 + 0x6cc9 + 0x4f + + + + .debug_line + 0x6d18 + 0x6d18 + 0x4f + + + + .debug_line + 0x6d67 + 0x6d67 + 0x4f + + + + .debug_line + 0x6db6 + 0x6db6 + 0x4f + + + + .debug_line + 0x6e05 + 0x6e05 + 0xd0 + + + + .debug_line + 0x6ed5 + 0x6ed5 + 0x4e + + + + .debug_line + 0x6f23 + 0x6f23 + 0x67 + + + + .debug_line + 0x6f8a + 0x6f8a + 0x4f + + + + .debug_line + 0x6fd9 + 0x6fd9 + 0x4f + + + + .debug_line + 0x7028 + 0x7028 + 0x50 + + + + .debug_line + 0x7078 + 0x7078 + 0x50 + + + + .debug_line + 0x70c8 + 0x70c8 + 0x4e + + + + .debug_line + 0x7116 + 0x7116 + 0x50 + + + + .debug_line + 0x7166 + 0x7166 + 0x50 + + + + .debug_line + 0x71b6 + 0x71b6 + 0x57 + + + + .debug_line + 0x720d + 0x720d + 0x4f + + + + .debug_line + 0x725c + 0x725c + 0x4f + + + + .debug_line + 0x72ab + 0x72ab + 0x4e + + + + .debug_line + 0x72f9 + 0x72f9 + 0x51 + + + + .debug_line + 0x734a + 0x734a + 0x52 + + + + .debug_line + 0x739c + 0x739c + 0x4f + + + + .debug_line + 0x73eb + 0x73eb + 0x4f + + + + .debug_line + 0x743a + 0x743a + 0x57 + + + + .debug_line + 0x7491 + 0x7491 + 0x14a + + + + .debug_line + 0x75db + 0x75db + 0x38 + + + + .debug_line + 0x7613 + 0x7613 + 0x56 + + + + .debug_line + 0x7669 + 0x7669 + 0x50 + + + + .debug_line + 0x76b9 + 0x76b9 + 0x5a + + + + .debug_line + 0x7713 + 0x7713 + 0x57 + + + + .debug_line + 0x776a + 0x776a + 0x5d + + + + .debug_line + 0x77c7 + 0x77c7 + 0x5a + + + + .debug_line + 0x7821 + 0x7821 + 0x6b + + + + .debug_line + 0x788c + 0x788c + 0x5b + + + + .debug_line + 0x78e7 + 0x78e7 + 0x5a + + + + .debug_line + 0x7941 + 0x7941 + 0x5b + + + + .debug_line + 0x799c + 0x799c + 0x96 + + + + .debug_line + 0x7a32 + 0x7a32 + 0x57 + + + + .debug_line + 0x7a89 + 0x7a89 + 0x51 + + + + .debug_line + 0x7ada + 0x7ada + 0x59 + + + + .debug_line + 0x7b33 + 0x7b33 + 0x2a9 + + + + .debug_line + 0x7ddc + 0x7ddc + 0x39 + + + + .debug_line + 0x7e15 + 0x7e15 + 0x39 + + + + .debug_line + 0x7e4e + 0x7e4e + 0x39 + + + + .debug_line + 0x7e87 + 0x7e87 + 0x39 + + + + .debug_line + 0x7ec0 + 0x7ec0 + 0xa7 + + + + .debug_line + 0x7f67 + 0x7f67 + 0x9f + + + + .debug_line + 0x8006 + 0x8006 + 0x5d + + + + .debug_line + 0x8063 + 0x8063 + 0x8d + + + + .debug_line + 0x80f0 + 0x80f0 + 0x70 + + + + .debug_line + 0x8160 + 0x8160 + 0x4f + + + + .debug_line + 0x81af + 0x81af + 0x84 + + + + .debug_line + 0x8233 + 0x8233 + 0x57 + + + + .debug_line + 0x828a + 0x828a + 0x64 + + + + .debug_line + 0x82ee + 0x82ee + 0x57 + + + + .debug_line + 0x8345 + 0x8345 + 0x64 + + + + .debug_line + 0x83a9 + 0x83a9 + 0x7d + + + + .debug_line + 0x8426 + 0x8426 + 0x5b + + + + .debug_line + 0x8481 + 0x8481 + 0x5c + + + + .debug_line + 0x84dd + 0x84dd + 0x68 + + + + .debug_line + 0x8545 + 0x8545 + 0x92 + + + + .debug_line + 0x85d7 + 0x85d7 + 0x39 + + + + .debug_line + 0x8610 + 0x8610 + 0x97 + + + + .debug_line + 0x86a7 + 0x86a7 + 0x3e + + + + .debug_line + 0x86e5 + 0x86e5 + 0x53 + + + + .debug_line + 0x8738 + 0x8738 + 0x66 + + + + .debug_line + 0x879e + 0x879e + 0x68 + + + + .debug_line + 0x8806 + 0x8806 + 0x3e + + + + .debug_line + 0x8844 + 0x8844 + 0x16d + + + + .debug_line + 0x89b1 + 0x89b1 + 0x4f + + + + .debug_line + 0x8a00 + 0x8a00 + 0x4e + + + + .debug_line + 0x8a4e + 0x8a4e + 0x7c + + + + .debug_line + 0x8aca + 0x8aca + 0x91 + + + + .debug_line + 0x8b5b + 0x8b5b + 0x94 + + + + .debug_line + 0x8bef + 0x8bef + 0xa6 + + + + .debug_line + 0x8c95 + 0x8c95 + 0x97 + + + + .debug_line + 0x8d2c + 0x8d2c + 0x91 + + + + .debug_line + 0x8dbd + 0x8dbd + 0x8b + + + + .debug_line + 0x8e48 + 0x8e48 + 0x99 + + + + .debug_line + 0x8ee1 + 0x8ee1 + 0x9a + + + + .debug_line + 0x8f7b + 0x8f7b + 0x97 + + + + .debug_line + 0x9012 + 0x9012 + 0x98 + + + + .debug_line + 0x90aa + 0x90aa + 0xa1 + + + + .debug_line + 0x914b + 0x914b + 0x9f + + + + .debug_line + 0x91ea + 0x91ea + 0xa3 + + + + .debug_line + 0x928d + 0x928d + 0xb0 + + + + .debug_line + 0x933d + 0x933d + 0xae + + + + .debug_line + 0x93eb + 0x93eb + 0xae + + + + .debug_line + 0x9499 + 0x9499 + 0xa3 + + + + .debug_line + 0x953c + 0x953c + 0xa8 + + + + .debug_line + 0x95e4 + 0x95e4 + 0xa6 + + + + .debug_line + 0x968a + 0x968a + 0xa6 + + + + .debug_line + 0x9730 + 0x9730 + 0x92 + + + + .debug_line + 0x97c2 + 0x97c2 + 0x9d + + + + .debug_line + 0x985f + 0x985f + 0x7e + + + + .debug_line + 0x98dd + 0x98dd + 0x80 + + + + .debug_line + 0x995d + 0x995d + 0x7a + + + + .debug_line + 0x99d7 + 0x99d7 + 0x7c + + + + .debug_line + 0x9a53 + 0x9a53 + 0x7e + + + + .debug_line + 0x9ad1 + 0x9ad1 + 0x7b + + + + .debug_line + 0x9b4c + 0x9b4c + 0x76 + + + + .debug_line + 0x9bc2 + 0x9bc2 + 0x78 + + + + .debug_line + 0x9c3a + 0x9c3a + 0x7e + + + + .debug_line + 0x9cb8 + 0x9cb8 + 0x7c + + + + .debug_line + 0x9d34 + 0x9d34 + 0x7d + + + + .debug_line + 0x9db1 + 0x9db1 + 0x86 + + + + .debug_line + 0x9e37 + 0x9e37 + 0x7b + + + + .debug_line + 0x9eb2 + 0x9eb2 + 0x7e + + + + .debug_line + 0x9f30 + 0x9f30 + 0x7a + + + + .debug_line + 0x9faa + 0x9faa + 0x7b + + + + .debug_line + 0xa025 + 0xa025 + 0x7a + + + + .debug_line + 0xa09f + 0xa09f + 0x7a + + + + .debug_line + 0xa119 + 0xa119 + 0x76 + + + + .debug_line + 0xa18f + 0xa18f + 0x7b + + + + .debug_line + 0xa20a + 0xa20a + 0x7b + + + + .debug_line + 0xa285 + 0xa285 + 0x7e + + + + .debug_line + 0xa303 + 0xa303 + 0x89 + + + + .debug_line + 0xa38c + 0xa38c + 0x7e + + + + .debug_line + 0xa40a + 0xa40a + 0x7d + + + + .debug_line + 0xa487 + 0xa487 + 0x23c + + + + .debug_line + 0xa6c3 + 0xa6c3 + 0x35 + + + + .debug_line + 0xa6f8 + 0xa6f8 + 0xf0 + + + + .debug_line + 0xa7e8 + 0xa7e8 + 0x68 + + + + .debug_line + 0xa850 + 0xa850 + 0x4b + + + + .debug_line + 0xa89b + 0xa89b + 0x7c + + + + .debug_line + 0xa917 + 0xa917 + 0x5e + + + + .debug_line + 0xa975 + 0xa975 + 0x52 + + + + .debug_line + 0xa9c7 + 0xa9c7 + 0x20 + + + + .debug_line + 0xa9e7 + 0xa9e7 + 0x46 + + + + .debug_line + 0xaa2d + 0xaa2d + 0x6b + + + + .debug_line + 0xaa98 + 0xaa98 + 0x72b + + + + .debug_line + 0xb1c3 + 0xb1c3 + 0x63 + + + + .debug_line + 0xb226 + 0xb226 + 0x63 + + + + .debug_line + 0xb289 + 0xb289 + 0x63 + + + + .debug_line + 0xb2ec + 0xb2ec + 0x5f + + + + .debug_line + 0xb34b + 0xb34b + 0x5d + + + + .debug_line + 0xb3a8 + 0xb3a8 + 0x66 + + + + .debug_line + 0xb40e + 0xb40e + 0x66 + + + + .debug_line + 0xb474 + 0xb474 + 0x63 + + + + .debug_line + 0xb4d7 + 0xb4d7 + 0x60 + + + + .debug_line + 0xb537 + 0xb537 + 0x63 + + + + .debug_line + 0xb59a + 0xb59a + 0x62 + + + + .debug_line + 0xb5fc + 0xb5fc + 0x60 + + + + .debug_line + 0xb65c + 0xb65c + 0x63 + + + + .debug_line + 0xb6bf + 0xb6bf + 0x70 + + + + .debug_line + 0xb72f + 0xb72f + 0x62 + + + + .debug_line + 0xb791 + 0xb791 + 0x62 + + + + .debug_line + 0xb7f3 + 0xb7f3 + 0x80 + + + + .debug_line + 0xb873 + 0xb873 + 0x80 + + + + .debug_line + 0xb8f3 + 0xb8f3 + 0x79 + + + + .debug_line + 0xb96c + 0xb96c + 0x61 + + + + .debug_line + 0xb9cd + 0xb9cd + 0x70 + + + + .debug_line + 0xba3d + 0xba3d + 0x79 + + + + .debug_line + 0xbab6 + 0xbab6 + 0x79 + + + + .debug_line + 0xbb2f + 0xbb2f + 0x61 + + + + .debug_line + 0xbb90 + 0xbb90 + 0x61 + + + + .debug_line + 0xbbf1 + 0xbbf1 + 0x61 + + + + .debug_line + 0xbc52 + 0xbc52 + 0x79 + + + + .debug_line + 0xbccb + 0xbccb + 0x6c + + + + .debug_line + 0xbd37 + 0xbd37 + 0x76 + + + + .debug_line + 0xbdad + 0xbdad + 0x61 + + + + .debug_line + 0xbe0e + 0xbe0e + 0x61 + + + + .debug_line + 0xbe6f + 0xbe6f + 0x61 + + + + .debug_line + 0xbed0 + 0xbed0 + 0x76 + + + + .debug_line + 0xbf46 + 0xbf46 + 0x78 + + + + .debug_line + 0xbfbe + 0xbfbe + 0x64 + + + + .debug_line + 0xc022 + 0xc022 + 0x70 + + + + .debug_line + 0xc092 + 0xc092 + 0x63 + + + + .debug_line + 0xc0f5 + 0xc0f5 + 0xc1 + + + + .debug_line + 0xc1b6 + 0xc1b6 + 0xc4 + + + + .debug_line + 0xc27a + 0xc27a + 0x6f + + + + .debug_line + 0xc2e9 + 0xc2e9 + 0x74 + + + + .debug_line + 0xc35d + 0xc35d + 0x5f + + + + .debug_line + 0xc3bc + 0xc3bc + 0x5f + + + + .debug_line + 0xc41b + 0xc41b + 0x60 + + + + .debug_line + 0xc47b + 0xc47b + 0x60 + + + + .debug_line + 0xc4db + 0xc4db + 0x60 + + + + .debug_line + 0xc53b + 0xc53b + 0x60 + + + + .debug_line + 0xc59b + 0xc59b + 0x6f + + + + .debug_line + 0xc60a + 0xc60a + 0x12e + + + + .debug_line + 0xc738 + 0xc738 + 0x77 + + + + .debug_line + 0xc7af + 0xc7af + 0x73 + + + + .debug_line + 0xc822 + 0xc822 + 0x60 + + + + .debug_line + 0xc882 + 0xc882 + 0x62 + + + + .debug_line + 0xc8e4 + 0xc8e4 + 0x69 + + + + .debug_line + 0xc94d + 0xc94d + 0x6a + + + + .debug_line + 0xc9b7 + 0xc9b7 + 0x90 + + + + .debug_line + 0xca47 + 0xca47 + 0x80 + + + + .debug_line + 0xcac7 + 0xcac7 + 0x86 + + + + .debug_line + 0xcb4d + 0xcb4d + 0x273 + + + + .debug_line + 0xcdc0 + 0xcdc0 + 0x4a + + + + .debug_line + 0xce0a + 0xce0a + 0x97 + + + + .debug_line + 0xcea1 + 0xcea1 + 0x97 + + + + .debug_line + 0xcf38 + 0xcf38 + 0x75 + + + + .debug_line + 0xcfad + 0xcfad + 0x40f + + + + .debug_line + 0xd3bc + 0xd3bc + 0x57 + + + + .debug_line + 0xd413 + 0xd413 + 0x57 + + + + .debug_line + 0xd46a + 0xd46a + 0x57 + + + + .debug_line + 0xd4c1 + 0xd4c1 + 0x6a + + + + .debug_line + 0xd52b + 0xd52b + 0x6a + + + + .debug_line + 0xd595 + 0xd595 + 0x6d + + + + .debug_line + 0xd602 + 0xd602 + 0x6d + + + + .debug_line + 0xd66f + 0xd66f + 0x6d + + + + .debug_line + 0xd6dc + 0xd6dc + 0x6e + + + + .debug_line + 0xd74a + 0xd74a + 0x6a + + + + .debug_line + 0xd7b4 + 0xd7b4 + 0xa2 + + + + .debug_line + 0xd856 + 0xd856 + 0x8e + + + + .debug_line + 0xd8e4 + 0xd8e4 + 0x70 + + + + .debug_line + 0xd954 + 0xd954 + 0x7d + + + + .debug_line + 0xd9d1 + 0xd9d1 + 0x6e + + + + .debug_line + 0xda3f + 0xda3f + 0x70 + + + + .debug_line + 0xdaaf + 0xdaaf + 0x91 + + + + .debug_line + 0xdb40 + 0xdb40 + 0x4e9 + + + + .debug_line + 0xe029 + 0xe029 + 0x55 + + + + .debug_line + 0xe07e + 0xe07e + 0x55 + + + + .debug_line + 0xe0d3 + 0xe0d3 + 0x55 + + + + .debug_line + 0xe128 + 0xe128 + 0x68 + + + + .debug_line + 0xe190 + 0xe190 + 0x6b + + + + .debug_line + 0xe1fb + 0xe1fb + 0x68 + + + + .debug_line + 0xe263 + 0xe263 + 0x98 + + + + .debug_line + 0xe2fb + 0xe2fb + 0x77 + + + + .debug_line + 0xe372 + 0xe372 + 0x70 + + + + .debug_line + 0xe3e2 + 0xe3e2 + 0x6c + + + + .debug_line + 0xe44e + 0xe44e + 0x7b + + + + .debug_line + 0xe4c9 + 0xe4c9 + 0x73 + + + + .debug_line + 0xe53c + 0xe53c + 0x6d + + + + .debug_line + 0xe5a9 + 0xe5a9 + 0x70 + + + + .debug_line + 0xe619 + 0xe619 + 0x74 + + + + .debug_line + 0xe68d + 0xe68d + 0x185 + + + + .debug_line + 0xe812 + 0xe812 + 0x1d9 + + + + .debug_line + 0xe9eb + 0xe9eb + 0x55 + + + + .debug_line + 0xea40 + 0xea40 + 0x55 + + + + .debug_line + 0xea95 + 0xea95 + 0x55 + + + + .debug_line + 0xeaea + 0xeaea + 0x68 + + + + .debug_line + 0xeb52 + 0xeb52 + 0x68 + + + + .debug_line + 0xebba + 0xebba + 0x68 + + + + .debug_line + 0xec22 + 0xec22 + 0x68 + + + + .debug_line + 0xec8a + 0xec8a + 0x6b + + + + .debug_line + 0xecf5 + 0xecf5 + 0x6c + + + + .debug_line + 0xed61 + 0xed61 + 0x68 + + + + .debug_line + 0xedc9 + 0xedc9 + 0x68 + + + + .debug_line + 0xee31 + 0xee31 + 0x7a + + + + .debug_line + 0xeeab + 0xeeab + 0x6c + + + + .debug_line + 0xef17 + 0xef17 + 0x51b + + + + .debug_line + 0xf432 + 0xf432 + 0x63 + + + + .debug_line + 0xf495 + 0xf495 + 0x63 + + + + .debug_line + 0xf4f8 + 0xf4f8 + 0x63 + + + + .debug_line + 0xf55b + 0xf55b + 0x5f + + + + .debug_line + 0xf5ba + 0xf5ba + 0x60 + + + + .debug_line + 0xf61a + 0xf61a + 0x5d + + + + .debug_line + 0xf677 + 0xf677 + 0x61 + + + + .debug_line + 0xf6d8 + 0xf6d8 + 0x5e + + + + .debug_line + 0xf736 + 0xf736 + 0x60 + + + + .debug_line + 0xf796 + 0xf796 + 0x5e + + + + .debug_line + 0xf7f4 + 0xf7f4 + 0x60 + + + + .debug_line + 0xf854 + 0xf854 + 0x60 + + + + .debug_line + 0xf8b4 + 0xf8b4 + 0xc3 + + + + .debug_line + 0xf977 + 0xf977 + 0x3a4 + + + + .debug_line + 0xfd1b + 0xfd1b + 0x4f + + + + .debug_line + 0xfd6a + 0xfd6a + 0x4f + + + + .debug_line + 0xfdb9 + 0xfdb9 + 0x4f + + + + .debug_line + 0xfe08 + 0xfe08 + 0x62 + + + + .debug_line + 0xfe6a + 0xfe6a + 0x66 + + + + .debug_line + 0xfed0 + 0xfed0 + 0x66 + + + + .debug_line + 0xff36 + 0xff36 + 0x6a + + + + .debug_line + 0xffa0 + 0xffa0 + 0x64 + + + + .debug_line + 0x10004 + 0x10004 + 0x6b + + + + .debug_line + 0x1006f + 0x1006f + 0x63 + + + + .debug_line + 0x100d2 + 0x100d2 + 0x62 + + + + .debug_line + 0x10134 + 0x10134 + 0xaa + + + + .debug_line + 0x101de + 0x101de + 0x6e3 + + + + .debug_line + 0x108c1 + 0x108c1 + 0x4d + + + + .debug_line + 0x1090e + 0x1090e + 0x4d + + + + .debug_line + 0x1095b + 0x1095b + 0x4d + + + + .debug_line + 0x109a8 + 0x109a8 + 0x4d + + + + .debug_line + 0x109f5 + 0x109f5 + 0x4d + + + + .debug_line + 0x10a42 + 0x10a42 + 0x6d + + + + .debug_line + 0x10aaf + 0x10aaf + 0x73 + + + + .debug_line + 0x10b22 + 0x10b22 + 0x72 + + + + .debug_line + 0x10b94 + 0x10b94 + 0xf1 + + + + .debug_line + 0x10c85 + 0x10c85 + 0xa9 + + + + .debug_line + 0x10d2e + 0x10d2e + 0x95 + + + + .debug_line + 0x10dc3 + 0x10dc3 + 0x60 + + + + .debug_line + 0x10e23 + 0x10e23 + 0x471 + + + + .debug_line + 0x11294 + 0x11294 + 0x4d + + + + .debug_line + 0x112e1 + 0x112e1 + 0x4d + + + + .debug_line + 0x1132e + 0x1132e + 0x4d + + + + .debug_line + 0x1137b + 0x1137b + 0x62 + + + + .debug_line + 0x113dd + 0x113dd + 0x6a + + + + .debug_line + 0x11447 + 0x11447 + 0x73 + + + + .debug_line + 0x114ba + 0x114ba + 0x69 + + + + .debug_line + 0x11523 + 0x11523 + 0x67 + + + + .debug_line + 0x1158a + 0x1158a + 0x6c + + + + .debug_line + 0x115f6 + 0x115f6 + 0x63 + + + + .debug_line + 0x11659 + 0x11659 + 0x60 + + + + .debug_line + 0x116b9 + 0x116b9 + 0xba + + + + .debug_line + 0x11773 + 0x11773 + 0x77 + + + + .debug_line + 0x117ea + 0x117ea + 0x9f + + + + .debug_line + 0x11889 + 0x11889 + 0x51e + + + + .debug_line + 0x11da7 + 0x11da7 + 0x4d + + + + .debug_line + 0x11df4 + 0x11df4 + 0x4d + + + + .debug_line + 0x11e41 + 0x11e41 + 0x4d + + + + .debug_line + 0x11e8e + 0x11e8e + 0x60 + + + + .debug_line + 0x11eee + 0x11eee + 0x63 + + + + .debug_line + 0x11f51 + 0x11f51 + 0x6a + + + + .debug_line + 0x11fbb + 0x11fbb + 0x64 + + + + .debug_line + 0x1201f + 0x1201f + 0x69 + + + + .debug_line + 0x12088 + 0x12088 + 0x64 + + + + .debug_line + 0x120ec + 0x120ec + 0x63 + + + + .debug_line + 0x1214f + 0x1214f + 0x60 + + + + .debug_line + 0x121af + 0x121af + 0xc1 + + + + .debug_line + 0x12270 + 0x12270 + 0x9f + + + + .debug_line + 0x1230f + 0x1230f + 0x20 + + + + .debug_line + 0x1232f + 0x1232f + 0x3e + + + + .debug_line + 0x1236d + 0x1236d + 0x54 + + + + .debug_line + 0x123c1 + 0x123c1 + 0x57 + + + + .debug_line + 0x12418 + 0x12418 + 0x68 + + + + .debug_line + 0x12480 + 0x12480 + 0x65 + + + + .debug_line + 0x124e5 + 0x124e5 + 0x64 + + + + .debug_line + 0x12549 + 0x12549 + 0x71 + + + + .debug_line + 0x125ba + 0x125ba + 0x57 + + + + .debug_line + 0x12611 + 0x12611 + 0x65 + + + + .debug_line + 0x12676 + 0x12676 + 0x53 + + + + .debug_line + 0x126c9 + 0x126c9 + 0x5a + + + + .debug_line + 0x12723 + 0x12723 + 0x3e + + + + .debug_line + 0x12761 + 0x12761 + 0x97 + + + + .debug_line + 0x127f8 + 0x127f8 + 0x20 + + + + .debug_line + 0x12818 + 0x12818 + 0x60 + + + + .debug_line + 0x12878 + 0x12878 + 0x63 + + + + .debug_line + 0x128db + 0x128db + 0x63 + + + + .debug_line + 0x1293e + 0x1293e + 0x63 + + + + .debug_line + 0x129a1 + 0x129a1 + 0x61 + + + + .debug_line + 0x12a02 + 0x12a02 + 0x63 + + + + .debug_line + 0x12a65 + 0x12a65 + 0x63 + + + + .debug_line + 0x12ac8 + 0x12ac8 + 0x20 + + + + .debug_line + 0x12ae8 + 0x12ae8 + 0x37 + + + + .debug_line + 0x12b1f + 0x12b1f + 0x4a + + + + .debug_line + 0x12b69 + 0x12b69 + 0x4a + + + + .debug_line + 0x12bb3 + 0x12bb3 + 0xa2 + + + + .debug_line + 0x12c55 + 0x12c55 + 0x2e + + + + .debug_line + 0x12c83 + 0x12c83 + 0x2e + + + + .debug_line + 0x12cb1 + 0x12cb1 + 0x2e + + + + .debug_line + 0x12cdf + 0x12cdf + 0x2e + + + + .debug_line + 0x12d0d + 0x12d0d + 0x2e + + + + .debug_line + 0x12d3b + 0x12d3b + 0x2e + + + + .debug_line + 0x12d69 + 0x12d69 + 0x3f + + + + .debug_line + 0x12da8 + 0x12da8 + 0x40 + + + + .debug_line + 0x12de8 + 0x12de8 + 0x3e + + + + .debug_line + 0x12e26 + 0x12e26 + 0x3e + + + + .debug_line + 0x12e64 + 0x12e64 + 0xa5 + + + + .debug_line + 0x12f09 + 0x12f09 + 0x92 + + + + .debug_line + 0x12f9b + 0x12f9b + 0x99 + + + + .debug_line + 0x13034 + 0x13034 + 0x37 + + + + .debug_line + 0x1306b + 0x1306b + 0x37 + + + + .debug_line + 0x130a2 + 0x130a2 + 0x37 + + + + .debug_line + 0x130d9 + 0x130d9 + 0x44 + + + + .debug_line + 0x1311d + 0x1311d + 0x92 + + + + .debug_line + 0x131af + 0x131af + 0x9a + + + + .debug_line + 0x13249 + 0x13249 + 0xa4 + + + + .debug_line + 0x132ed + 0x132ed + 0x48 + + + + .debug_line + 0x13335 + 0x13335 + 0x45 + + + + .debug_line + 0x1337a + 0x1337a + 0x2e + + + + .debug_line + 0x133a8 + 0x133a8 + 0x20 + + + + .debug_line + 0x133c8 + 0x133c8 + 0x99 + + + + .debug_line + 0x13461 + 0x13461 + 0x3a + + + + .debug_line + 0x1349b + 0x1349b + 0x9a + + + + .debug_line + 0x13535 + 0x13535 + 0x96 + + + + .debug_line + 0x135cb + 0x135cb + 0x20 + + + + .debug_line + 0x135eb + 0x135eb + 0x50 + + + + .debug_line + 0x1363b + 0x1363b + 0x3a + + + + .debug_line + 0x13675 + 0x13675 + 0x3d + + + + .debug_line + 0x136b2 + 0x136b2 + 0x20 + + + + .debug_line + 0x136d2 + 0x136d2 + 0x4d + + + + .debug_line + 0x1371f + 0x1371f + 0x34 + + + + .debug_line + 0x13753 + 0x13753 + 0x3f + + + + .debug_line + 0x13792 + 0x13792 + 0x3b + + + + .debug_line + 0x137cd + 0x137cd + 0x46 + + + + .debug_line + 0x13813 + 0x13813 + 0x3b + + + + .debug_line + 0x1384e + 0x1384e + 0x56 + + + + .debug_line + 0x138a4 + 0x138a4 + 0x3b + + + + .debug_line + 0x138df + 0x138df + 0x41 + + + + .debug_line + 0x13920 + 0x13920 + 0x53 + + + + .debug_line + 0x13973 + 0x13973 + 0x103 + + + + .debug_line + 0x13a76 + 0x13a76 + 0x40 + + + + .debug_line + 0x13ab6 + 0x13ab6 + 0x91 + + + + .debug_line + 0x13b47 + 0x13b47 + 0x2a + + + + .debug_line + 0x13b71 + 0x13b71 + 0x4b + + + + .debug_line + 0x13bbc + 0x13bbc + 0x45 + + + + .debug_line + 0x13c01 + 0x13c01 + 0xbf + + + + .debug_line + 0x13cc0 + 0x13cc0 + 0x80 + + + + .debug_line + 0x13d40 + 0x13d40 + 0x2e + + + + .debug_line + 0x13d6e + 0x13d6e + 0x9a + + + + .debug_line + 0x13e08 + 0x13e08 + 0x97 + + + + .debug_line + 0x13e9f + 0x13e9f + 0x93 + + + + .debug_line + 0x13f32 + 0x13f32 + 0x2a + + + + .debug_line + 0x13f5c + 0x13f5c + 0x2a + + + + .debug_line + 0x13f86 + 0x13f86 + 0x2a + + + + .debug_line + 0x13fb0 + 0x13fb0 + 0x3a + + + + .debug_line + 0x13fea + 0x13fea + 0x3e + + + + .debug_line + 0x14028 + 0x14028 + 0x10c + + + + .debug_line + 0x14134 + 0x14134 + 0x2a + + + + .debug_line + 0x1415e + 0x1415e + 0x3d + + + + .debug_line + 0x1419b + 0x1419b + 0x50 + + + + .debug_line + 0x141eb + 0x141eb + 0x20 + + + + .debug_line + 0x1420b + 0x1420b + 0x30 + + + + .debug_line + 0x1423b + 0x1423b + 0x30 + + + + .debug_line + 0x1426b + 0x1426b + 0x20 + + + + .debug_line + 0x1428b + 0x1428b + 0x2b + + + + .debug_line + 0x142b6 + 0x142b6 + 0x2b + + + + .debug_line + 0x142e1 + 0x142e1 + 0x38 + + + + .debug_line + 0x14319 + 0x14319 + 0x118 + + + + .debug_line + 0x14431 + 0x14431 + 0x5e + + + + .debug_line + 0x1448f + 0x1448f + 0x68 + + + + .debug_line + 0x144f7 + 0x144f7 + 0x189 + + + + .debug_line + 0x14680 + 0x14680 + 0x97 + + + + .debug_line + 0x14717 + 0x14717 + 0x91 + + + + .debug_line + 0x147a8 + 0x147a8 + 0x65 + + + + .debug_line + 0x1480d + 0x1480d + 0x91 + + + + .debug_line + 0x1489e + 0x1489e + 0x10f + + + + .debug_line + 0x149ad + 0x149ad + 0x2c + + + + .debug_line + 0x149d9 + 0x149d9 + 0x2c + + + + .debug_line + 0x14a05 + 0x14a05 + 0x2c + + + + .debug_line + 0x14a31 + 0x14a31 + 0x3f + + + + .debug_line + 0x14a70 + 0x14a70 + 0x42 + + + + .debug_line + 0x14ab2 + 0x14ab2 + 0x4e + + + + .debug_line + 0x14b00 + 0x14b00 + 0x55 + + + + .debug_line + 0x14b55 + 0x14b55 + 0xc2 + + + + .debug_line + 0x14c17 + 0x14c17 + 0x75 + + + + .debug_line + 0x14c8c + 0x14c8c + 0xc6 + + + + .debug_line + 0x14d52 + 0x14d52 + 0x2c + + + + .debug_line + 0x14d7e + 0x14d7e + 0x92 + + + + .debug_line + 0x14e10 + 0x14e10 + 0x43 + + + + .debug_line + 0x14e53 + 0x14e53 + 0xa6 + + + + .debug_line + 0x14ef9 + 0x14ef9 + 0x4f + + + + .debug_line + 0x14f48 + 0x14f48 + 0x2a + + + + .debug_line + 0x14f72 + 0x14f72 + 0x92 + + + + .debug_line + 0x15004 + 0x15004 + 0x4b + + + + .debug_line + 0x1504f + 0x1504f + 0x92 + + + + .debug_line + 0x150e1 + 0x150e1 + 0x31 + + + + .debug_line + 0x15112 + 0x15112 + 0x31 + + + + .debug_line + 0x15143 + 0x15143 + 0x31 + + + + .debug_line + 0x15174 + 0x15174 + 0x9d + + + + .debug_line + 0x15211 + 0x15211 + 0x48 + + + + .debug_line + 0x15259 + 0x15259 + 0x9d + + + + .debug_line + 0x152f6 + 0x152f6 + 0x4a + + + + .debug_line + 0x15340 + 0x15340 + 0x11d + + + + .debug_line + 0x1545d + 0x1545d + 0x48 + + + + .debug_line + 0x154a5 + 0x154a5 + 0x9d + + + + .debug_line + 0x15542 + 0x15542 + 0x4e + + + + .debug_line + 0x15590 + 0x15590 + 0x10f + + + + .debug_line + 0x1569f + 0x1569f + 0x4c + + + + .debug_line + 0x156eb + 0x156eb + 0x10f + + + + .debug_line + 0x157fa + 0x157fa + 0x48 + + + + .debug_line + 0x15842 + 0x15842 + 0x9d + + + + .debug_line + 0x158df + 0x158df + 0x4f + + + + .debug_line + 0x1592e + 0x1592e + 0x20 + + + + .debug_line + 0x1594e + 0x1594e + 0x2c + + + + .debug_line + 0x1597a + 0x1597a + 0x50 + + + + .debug_line + 0x159ca + 0x159ca + 0x51 + + + + .debug_line + 0x15a1b + 0x15a1b + 0x20 + + + + .debug_line + 0x15a3b + 0x15a3b + 0xb1 + + + + .debug_line + 0x15aec + 0x15aec + 0x20 + + + + .debug_line + 0x15b0c + 0x15b0c + 0x42 + + + + .debug_line + 0x15b4e + 0x15b4e + 0x20 + + + + .debug_line + 0x15b6e + 0x15b6e + 0xae + + + + .debug_line + 0x15c1c + 0x15c1c + 0x110 + + + + .debug_line + 0x15d2c + 0x15d2c + 0x86 + + + + .debug_line + 0x15db2 + 0x15db2 + 0x4b + + + + .debug_line + 0x15dfd + 0x15dfd + 0x18a + + + + .debug_line + 0x15f87 + 0x15f87 + 0x60 + + + + .debug_line + 0x15fe7 + 0x15fe7 + 0x103 + + + + .debug_line + 0x160ea + 0x160ea + 0x57 + + + + .debug_line + 0x16141 + 0x16141 + 0x9e + + + + .debug_line + 0x161df + 0x161df + 0x50 + + + + .debug_line + 0x1622f + 0x1622f + 0x5a + + + + .debug_line + 0x16289 + 0x16289 + 0x2c + + + + .debug_line + 0x162b5 + 0x162b5 + 0x91 + + + + .debug_line + 0x16346 + 0x16346 + 0x2d + + + + .debug_line + 0x16373 + 0x16373 + 0x47 + + + + .debug_line + 0x163ba + 0x163ba + 0x42 + + + + .debug_line + 0x163fc + 0x163fc + 0x3d + + + + .debug_line + 0x16439 + 0x16439 + 0xa0 + + + + .debug_line + 0x164d9 + 0x164d9 + 0x132 + + + + .debug_line + 0x1660b + 0x1660b + 0x97 + + + + .debug_line + 0x166a2 + 0x166a2 + 0x56 + + + + .debug_line + 0x166f8 + 0x166f8 + 0x84 + + + + .debug_line + 0x1677c + 0x1677c + 0x92 + + + + .debug_line + 0x1680e + 0x1680e + 0x2e + + + + .debug_line + 0x1683c + 0x1683c + 0x20 + + + + .debug_line + 0x1685c + 0x1685c + 0x48 + + + + .debug_line + 0x168a4 + 0x168a4 + 0x20 + + + + .debug_line + 0x168c4 + 0x168c4 + 0xaf + + + + .debug_line + 0x16973 + 0x16973 + 0x20 + + + + .debug_line + 0x16993 + 0x16993 + 0xaf + + + + .debug_line + 0x16a42 + 0x16a42 + 0x20 + + + + .debug_line + 0x16a62 + 0x16a62 + 0xa8 + + + + .debug_line + 0x16b0a + 0x16b0a + 0x20 + + + + .debug_line + 0x16b2a + 0x16b2a + 0xac + + + + .debug_line + 0x16bd6 + 0x16bd6 + 0x20 + + + + .debug_line + 0x16bf6 + 0x16bf6 + 0xb4 + + + + .debug_line + 0x16caa + 0x16caa + 0x103 + + + + .debug_line + 0x16dad + 0x16dad + 0x42 + + + + .debug_line + 0x16def + 0x16def + 0x2e + + + + .debug_line + 0x16e1d + 0x16e1d + 0x48 + + + + .debug_line + 0x16e65 + 0x16e65 + 0x43 + + + + .debug_line + 0x16ea8 + 0x16ea8 + 0x3e + + + + .debug_line + 0x16ee6 + 0x16ee6 + 0x92 + + + + .debug_line + 0x16f78 + 0x16f78 + 0x4b + + + + .debug_frame + 0x0 + 0x0 + 0x4c + + + + .debug_frame + 0x4c + 0x4c + 0x48 + + + + .debug_frame + 0x94 + 0x94 + 0x40 + + + + .debug_frame + 0xd4 + 0xd4 + 0x44 + + + + .debug_frame + 0x118 + 0x118 + 0x44 + + + + .debug_frame + 0x15c + 0x15c + 0x44 + + + + .debug_frame + 0x1a0 + 0x1a0 + 0x3c + + + + .debug_frame + 0x1dc + 0x1dc + 0x50 + + + + .debug_frame + 0x22c + 0x22c + 0x4c + + + + .debug_frame + 0x278 + 0x278 + 0x58 + + + + .debug_frame + 0x2d0 + 0x2d0 + 0x4c + + + + .debug_frame + 0x31c + 0x31c + 0x48 + + + + .debug_frame + 0x364 + 0x364 + 0x48 + + + + .debug_frame + 0x3ac + 0x3ac + 0x58 + + + + .debug_frame + 0x404 + 0x404 + 0x50 + + + + .debug_frame + 0x454 + 0x454 + 0x54 + + + + .debug_frame + 0x4a8 + 0x4a8 + 0x50 + + + + .debug_frame + 0x4f8 + 0x4f8 + 0x5c + + + + .debug_frame + 0x554 + 0x554 + 0x44 + + + + .debug_frame + 0x598 + 0x598 + 0x48 + + + + .debug_frame + 0x5e0 + 0x5e0 + 0x44 + + + + .debug_frame + 0x624 + 0x624 + 0x44 + + + + .debug_frame + 0x668 + 0x668 + 0x44 + + + + .debug_frame + 0x6ac + 0x6ac + 0x4c + + + + .debug_frame + 0x6f8 + 0x6f8 + 0x48 + + + + .debug_frame + 0x740 + 0x740 + 0x5c + + + + .debug_frame + 0x79c + 0x79c + 0x4c + + + + .debug_frame + 0x7e8 + 0x7e8 + 0x4c + + + + .debug_frame + 0x834 + 0x834 + 0x4c + + + + .debug_frame + 0x880 + 0x880 + 0x3c + + + + .debug_frame + 0x8bc + 0x8bc + 0x5c + + + + .debug_frame + 0x918 + 0x918 + 0x40 + + + + .debug_frame + 0x958 + 0x958 + 0x58 + + + + .debug_frame + 0x9b0 + 0x9b0 + 0x40 + + + + .debug_frame + 0x9f0 + 0x9f0 + 0x40 + + + + .debug_frame + 0xa30 + 0xa30 + 0x40 + + + + .debug_frame + 0xa70 + 0xa70 + 0x40 + + + + .debug_frame + 0xab0 + 0xab0 + 0x40 + + + + .debug_frame + 0xaf0 + 0xaf0 + 0x40 + + + + .debug_frame + 0xb30 + 0xb30 + 0x40 + + + + .debug_frame + 0xb70 + 0xb70 + 0x40 + + + + .debug_frame + 0xbb0 + 0xbb0 + 0x40 + + + + .debug_frame + 0xbf0 + 0xbf0 + 0x40 + + + + .debug_frame + 0xc30 + 0xc30 + 0x40 + + + + .debug_frame + 0xc70 + 0xc70 + 0x40 + + + + .debug_frame + 0xcb0 + 0xcb0 + 0x40 + + + + .debug_frame + 0xcf0 + 0xcf0 + 0x40 + + + + .debug_frame + 0xd30 + 0xd30 + 0x40 + + + + .debug_frame + 0xd70 + 0xd70 + 0x40 + + + + .debug_frame + 0xdb0 + 0xdb0 + 0x40 + + + + .debug_frame + 0xdf0 + 0xdf0 + 0x4c + + + + .debug_frame + 0xe3c + 0xe3c + 0x4c + + + + .debug_frame + 0xe88 + 0xe88 + 0x3c + + + + .debug_frame + 0xec4 + 0xec4 + 0x58 + + + + .debug_frame + 0xf1c + 0xf1c + 0x48 + + + + .debug_frame + 0xf64 + 0xf64 + 0x54 + + + + .debug_frame + 0xfb8 + 0xfb8 + 0x44 + + + + .debug_frame + 0xffc + 0xffc + 0x3c + + + + .debug_frame + 0x1038 + 0x1038 + 0x3c + + + + .debug_frame + 0x1074 + 0x1074 + 0x3c + + + + .debug_frame + 0x10b0 + 0x10b0 + 0x3c + + + + .debug_frame + 0x10ec + 0x10ec + 0x3c + + + + .debug_frame + 0x1128 + 0x1128 + 0x3c + + + + .debug_frame + 0x1164 + 0x1164 + 0x3c + + + + .debug_frame + 0x11a0 + 0x11a0 + 0x3c + + + + .debug_frame + 0x11dc + 0x11dc + 0x3c + + + + .debug_frame + 0x1218 + 0x1218 + 0x3c + + + + .debug_frame + 0x1254 + 0x1254 + 0x48 + + + + .debug_frame + 0x129c + 0x129c + 0x3c + + + + .debug_frame + 0x12d8 + 0x12d8 + 0x3c + + + + .debug_frame + 0x1314 + 0x1314 + 0x4c + + + + .debug_frame + 0x1360 + 0x1360 + 0x48 + + + + .debug_frame + 0x13a8 + 0x13a8 + 0x5c + + + + .debug_frame + 0x1404 + 0x1404 + 0x58 + + + + .debug_frame + 0x145c + 0x145c + 0x4c + + + + .debug_frame + 0x14a8 + 0x14a8 + 0x48 + + + + .debug_frame + 0x14f0 + 0x14f0 + 0x5c + + + + .debug_frame + 0x154c + 0x154c + 0x54 + + + + .debug_frame + 0x15a0 + 0x15a0 + 0x5c + + + + .debug_frame + 0x15fc + 0x15fc + 0x5c + + + + .debug_frame + 0x1658 + 0x1658 + 0x48 + + + + .debug_frame + 0x16a0 + 0x16a0 + 0x44 + + + + .debug_frame + 0x16e4 + 0x16e4 + 0x50 + + + + .debug_frame + 0x1734 + 0x1734 + 0x3c + + + + .debug_frame + 0x1770 + 0x1770 + 0x40 + + + + .debug_frame + 0x17b0 + 0x17b0 + 0x3c + + + + .debug_frame + 0x17ec + 0x17ec + 0x50 + + + + .debug_frame + 0x183c + 0x183c + 0x50 + + + + .debug_frame + 0x188c + 0x188c + 0x48 + + + + .debug_frame + 0x18d4 + 0x18d4 + 0x48 + + + + .debug_frame + 0x191c + 0x191c + 0x50 + + + + .debug_frame + 0x196c + 0x196c + 0x50 + + + + .debug_frame + 0x19bc + 0x19bc + 0x48 + + + + .debug_frame + 0x1a04 + 0x1a04 + 0x48 + + + + .debug_frame + 0x1a4c + 0x1a4c + 0x48 + + + + .debug_frame + 0x1a94 + 0x1a94 + 0x48 + + + + .debug_frame + 0x1adc + 0x1adc + 0x50 + + + + .debug_frame + 0x1b2c + 0x1b2c + 0x48 + + + + .debug_frame + 0x1b74 + 0x1b74 + 0x48 + + + + .debug_frame + 0x1bbc + 0x1bbc + 0x48 + + + + .debug_frame + 0x1c04 + 0x1c04 + 0x48 + + + + .debug_frame + 0x1c4c + 0x1c4c + 0x50 + + + + .debug_frame + 0x1c9c + 0x1c9c + 0x48 + + + + .debug_frame + 0x1ce4 + 0x1ce4 + 0x50 + + + + .debug_frame + 0x1d34 + 0x1d34 + 0x50 + + + + .debug_frame + 0x1d84 + 0x1d84 + 0x50 + + + + .debug_frame + 0x1dd4 + 0x1dd4 + 0x50 + + + + .debug_frame + 0x1e24 + 0x1e24 + 0x50 + + + + .debug_frame + 0x1e74 + 0x1e74 + 0x50 + + + + .debug_frame + 0x1ec4 + 0x1ec4 + 0x50 + + + + .debug_frame + 0x1f14 + 0x1f14 + 0x48 + + + + .debug_frame + 0x1f5c + 0x1f5c + 0x4c + + + + .debug_frame + 0x1fa8 + 0x1fa8 + 0x54 + + + + .debug_frame + 0x1ffc + 0x1ffc + 0x44 + + + + .debug_frame + 0x2040 + 0x2040 + 0x3c + + + + .debug_frame + 0x207c + 0x207c + 0x44 + + + + .debug_frame + 0x20c0 + 0x20c0 + 0x44 + + + + .debug_frame + 0x2104 + 0x2104 + 0x4c + + + + .debug_frame + 0x2150 + 0x2150 + 0x3c + + + + .debug_frame + 0x218c + 0x218c + 0x3c + + + + .debug_frame + 0x21c8 + 0x21c8 + 0x3c + + + + .debug_frame + 0x2204 + 0x2204 + 0x3c + + + + .debug_frame + 0x2240 + 0x2240 + 0x3c + + + + .debug_frame + 0x227c + 0x227c + 0x3c + + + + .debug_frame + 0x22b8 + 0x22b8 + 0x40 + + + + .debug_frame + 0x22f8 + 0x22f8 + 0x40 + + + + .debug_frame + 0x2338 + 0x2338 + 0x3c + + + + .debug_frame + 0x2374 + 0x2374 + 0x3c + + + + .debug_frame + 0x23b0 + 0x23b0 + 0x3c + + + + .debug_frame + 0x23ec + 0x23ec + 0x3c + + + + .debug_frame + 0x2428 + 0x2428 + 0x3c + + + + .debug_frame + 0x2464 + 0x2464 + 0x3c + + + + .debug_frame + 0x24a0 + 0x24a0 + 0x40 + + + + .debug_frame + 0x24e0 + 0x24e0 + 0x40 + + + + .debug_frame + 0x2520 + 0x2520 + 0x3c + + + + .debug_frame + 0x255c + 0x255c + 0x40 + + + + .debug_frame + 0x259c + 0x259c + 0x40 + + + + .debug_frame + 0x25dc + 0x25dc + 0x3c + + + + .debug_frame + 0x2618 + 0x2618 + 0x3c + + + + .debug_frame + 0x2654 + 0x2654 + 0x48 + + + + .debug_frame + 0x269c + 0x269c + 0x3c + + + + .debug_frame + 0x26d8 + 0x26d8 + 0x3c + + + + .debug_frame + 0x2714 + 0x2714 + 0x3c + + + + .debug_frame + 0x2750 + 0x2750 + 0x3c + + + + .debug_frame + 0x278c + 0x278c + 0x3c + + + + .debug_frame + 0x27c8 + 0x27c8 + 0x3c + + + + .debug_frame + 0x2804 + 0x2804 + 0x3c + + + + .debug_frame + 0x2840 + 0x2840 + 0x3c + + + + .debug_frame + 0x287c + 0x287c + 0x3c + + + + .debug_frame + 0x28b8 + 0x28b8 + 0x3c + + + + .debug_frame + 0x28f4 + 0x28f4 + 0x3c + + + + .debug_frame + 0x2930 + 0x2930 + 0x3c + + + + .debug_frame + 0x296c + 0x296c + 0x3c + + + + .debug_frame + 0x29a8 + 0x29a8 + 0x3c + + + + .debug_frame + 0x29e4 + 0x29e4 + 0x3c + + + + .debug_frame + 0x2a20 + 0x2a20 + 0x3c + + + + .debug_frame + 0x2a5c + 0x2a5c + 0x3c + + + + .debug_frame + 0x2a98 + 0x2a98 + 0x3c + + + + .debug_frame + 0x2ad4 + 0x2ad4 + 0x3c + + + + .debug_frame + 0x2b10 + 0x2b10 + 0x3c + + + + .debug_frame + 0x2b4c + 0x2b4c + 0x3c + + + + .debug_frame + 0x2b88 + 0x2b88 + 0x3c + + + + .debug_frame + 0x2bc4 + 0x2bc4 + 0x3c + + + + .debug_frame + 0x2c00 + 0x2c00 + 0x3c + + + + .debug_frame + 0x2c3c + 0x2c3c + 0x3c + + + + .debug_frame + 0x2c78 + 0x2c78 + 0x3c + + + + .debug_frame + 0x2cb4 + 0x2cb4 + 0x40 + + + + .debug_frame + 0x2cf4 + 0x2cf4 + 0x3c + + + + .debug_frame + 0x2d30 + 0x2d30 + 0x3c + + + + .debug_frame + 0x2d6c + 0x2d6c + 0x3c + + + + .debug_frame + 0x2da8 + 0x2da8 + 0x3c + + + + .debug_frame + 0x2de4 + 0x2de4 + 0x3c + + + + .debug_frame + 0x2e20 + 0x2e20 + 0x3c + + + + .debug_frame + 0x2e5c + 0x2e5c + 0x3c + + + + .debug_frame + 0x2e98 + 0x2e98 + 0x3c + + + + .debug_frame + 0x2ed4 + 0x2ed4 + 0x4c + + + + .debug_frame + 0x2f20 + 0x2f20 + 0x3c + + + + .debug_frame + 0x2f5c + 0x2f5c + 0x40 + + + + .debug_frame + 0x2f9c + 0x2f9c + 0x3c + + + + .debug_frame + 0x2fd8 + 0x2fd8 + 0x3c + + + + .debug_frame + 0x3014 + 0x3014 + 0x3c + + + + .debug_frame + 0x3050 + 0x3050 + 0x3c + + + + .debug_frame + 0x308c + 0x308c + 0x3c + + + + .debug_frame + 0x30c8 + 0x30c8 + 0x3c + + + + .debug_frame + 0x3104 + 0x3104 + 0x3c + + + + .debug_frame + 0x3140 + 0x3140 + 0x3c + + + + .debug_frame + 0x317c + 0x317c + 0x3c + + + + .debug_frame + 0x31b8 + 0x31b8 + 0x3c + + + + .debug_frame + 0x31f4 + 0x31f4 + 0x3c + + + + .debug_frame + 0x3230 + 0x3230 + 0x3c + + + + .debug_frame + 0x326c + 0x326c + 0x3c + + + + .debug_frame + 0x32a8 + 0x32a8 + 0x3c + + + + .debug_frame + 0x32e4 + 0x32e4 + 0x3c + + + + .debug_frame + 0x3320 + 0x3320 + 0x3c + + + + .debug_frame + 0x335c + 0x335c + 0x48 + + + + .debug_frame + 0x33a4 + 0x33a4 + 0x3c + + + + .debug_frame + 0x33e0 + 0x33e0 + 0x3c + + + + .debug_frame + 0x341c + 0x341c + 0x3c + + + + .debug_frame + 0x3458 + 0x3458 + 0x44 + + + + .debug_frame + 0x349c + 0x349c + 0x3c + + + + .debug_frame + 0x34d8 + 0x34d8 + 0x44 + + + + .debug_frame + 0x351c + 0x351c + 0x44 + + + + .debug_frame + 0x3560 + 0x3560 + 0x3c + + + + .debug_frame + 0x359c + 0x359c + 0x3c + + + + .debug_frame + 0x35d8 + 0x35d8 + 0x4c + + + + .debug_frame + 0x3624 + 0x3624 + 0x48 + + + + .debug_frame + 0x366c + 0x366c + 0x3c + + + + .debug_frame + 0x36a8 + 0x36a8 + 0x44 + + + + .debug_frame + 0x36ec + 0x36ec + 0x58 + + + + .debug_frame + 0x3744 + 0x3744 + 0x58 + + + + .debug_frame + 0x379c + 0x379c + 0x44 + + + + .debug_frame + 0x37e0 + 0x37e0 + 0x4c + + + + .debug_frame + 0x382c + 0x382c + 0x50 + + + + .debug_frame + 0x387c + 0x387c + 0x44 + + + + .debug_frame + 0x38c0 + 0x38c0 + 0x4c + + + + .debug_frame + 0x390c + 0x390c + 0x3c + + + + .debug_frame + 0x3948 + 0x3948 + 0x48 + + + + .debug_frame + 0x3990 + 0x3990 + 0x3c + + + + .debug_frame + 0x39cc + 0x39cc + 0x48 + + + + .debug_frame + 0x3a14 + 0x3a14 + 0x58 + + + + .debug_frame + 0x3a6c + 0x3a6c + 0x48 + + + + .debug_frame + 0x3ab4 + 0x3ab4 + 0x48 + + + + .debug_frame + 0x3afc + 0x3afc + 0x48 + + + + .debug_frame + 0x3b44 + 0x3b44 + 0x44 + + + + .debug_frame + 0x3b88 + 0x3b88 + 0x48 + + + + .debug_frame + 0x3bd0 + 0x3bd0 + 0x48 + + + + .debug_frame + 0x3c18 + 0x3c18 + 0x3c + + + + .debug_frame + 0x3c54 + 0x3c54 + 0x40 + + + + .debug_frame + 0x3c94 + 0x3c94 + 0x58 + + + + .debug_frame + 0x3cec + 0x3cec + 0x50 + + + + .debug_frame + 0x3d3c + 0x3d3c + 0x3c + + + + .debug_frame + 0x3d78 + 0x3d78 + 0x58 + + + + .debug_frame + 0x3dd0 + 0x3dd0 + 0x4c + + + + .debug_frame + 0x3e1c + 0x3e1c + 0x4c + + + + .debug_frame + 0x3e68 + 0x3e68 + 0x44 + + + + .debug_frame + 0x3eac + 0x3eac + 0x48 + + + + .debug_frame + 0x3ef4 + 0x3ef4 + 0x44 + + + + .debug_frame + 0x3f38 + 0x3f38 + 0x44 + + + + .debug_frame + 0x3f7c + 0x3f7c + 0x44 + + + + .debug_frame + 0x3fc0 + 0x3fc0 + 0x4c + + + + .debug_frame + 0x400c + 0x400c + 0x3c + + + + .debug_frame + 0x4048 + 0x4048 + 0x4c + + + + .debug_frame + 0x4094 + 0x4094 + 0x48 + + + + .debug_frame + 0x40dc + 0x40dc + 0x44 + + + + .debug_frame + 0x4120 + 0x4120 + 0x4c + + + + .debug_frame + 0x416c + 0x416c + 0x48 + + + + .debug_frame + 0x41b4 + 0x41b4 + 0x4c + + + + .debug_frame + 0x4200 + 0x4200 + 0x48 + + + + .debug_frame + 0x4248 + 0x4248 + 0x48 + + + + .debug_frame + 0x4290 + 0x4290 + 0x48 + + + + .debug_frame + 0x42d8 + 0x42d8 + 0x48 + + + + .debug_frame + 0x4320 + 0x4320 + 0x48 + + + + .debug_frame + 0x4368 + 0x4368 + 0x48 + + + + .debug_frame + 0x43b0 + 0x43b0 + 0x48 + + + + .debug_frame + 0x43f8 + 0x43f8 + 0x48 + + + + .debug_frame + 0x4440 + 0x4440 + 0x48 + + + + .debug_frame + 0x4488 + 0x4488 + 0x48 + + + + .debug_frame + 0x44d0 + 0x44d0 + 0x48 + + + + .debug_frame + 0x4518 + 0x4518 + 0x48 + + + + .debug_frame + 0x4560 + 0x4560 + 0x4c + + + + .debug_frame + 0x45ac + 0x45ac + 0x50 + + + + .debug_frame + 0x45fc + 0x45fc + 0x48 + + + + .debug_frame + 0x4644 + 0x4644 + 0x48 + + + + .debug_frame + 0x468c + 0x468c + 0x48 + + + + .debug_frame + 0x46d4 + 0x46d4 + 0x4c + + + + .debug_frame + 0x4720 + 0x4720 + 0x4c + + + + .debug_frame + 0x476c + 0x476c + 0x54 + + + + .debug_frame + 0x47c0 + 0x47c0 + 0x50 + + + + .debug_frame + 0x4810 + 0x4810 + 0x4c + + + + .debug_frame + 0x485c + 0x485c + 0x4c + + + + .debug_frame + 0x48a8 + 0x48a8 + 0x54 + + + + .debug_frame + 0x48fc + 0x48fc + 0x50 + + + + .debug_frame + 0x494c + 0x494c + 0x4c + + + + .debug_frame + 0x4998 + 0x4998 + 0x44 + + + + .debug_frame + 0x49dc + 0x49dc + 0x3c + + + + .debug_frame + 0x4a18 + 0x4a18 + 0x48 + + + + .debug_frame + 0x4a60 + 0x4a60 + 0x48 + + + + .debug_frame + 0x4aa8 + 0x4aa8 + 0x48 + + + + .debug_frame + 0x4af0 + 0x4af0 + 0x48 + + + + .debug_frame + 0x4b38 + 0x4b38 + 0x48 + + + + .debug_frame + 0x4b80 + 0x4b80 + 0x5c + + + + .debug_frame + 0x4bdc + 0x4bdc + 0x58 + + + + .debug_frame + 0x4c34 + 0x4c34 + 0x50 + + + + .debug_frame + 0x4c84 + 0x4c84 + 0x4c + + + + .debug_frame + 0x4cd0 + 0x4cd0 + 0x4c + + + + .debug_frame + 0x4d1c + 0x4d1c + 0x54 + + + + .debug_frame + 0x4d70 + 0x4d70 + 0x50 + + + + .debug_frame + 0x4dc0 + 0x4dc0 + 0x54 + + + + .debug_frame + 0x4e14 + 0x4e14 + 0x54 + + + + .debug_frame + 0x4e68 + 0x4e68 + 0x54 + + + + .debug_frame + 0x4ebc + 0x4ebc + 0x5c + + + + .debug_frame + 0x4f18 + 0x4f18 + 0x44 + + + + .debug_frame + 0x4f5c + 0x4f5c + 0x48 + + + + .debug_frame + 0x4fa4 + 0x4fa4 + 0x3c + + + + .debug_frame + 0x4fe0 + 0x4fe0 + 0x44 + + + + .debug_frame + 0x5024 + 0x5024 + 0x44 + + + + .debug_frame + 0x5068 + 0x5068 + 0x48 + + + + .debug_frame + 0x50b0 + 0x50b0 + 0x3c + + + + .debug_frame + 0x50ec + 0x50ec + 0x4c + + + + .debug_frame + 0x5138 + 0x5138 + 0x50 + + + + .debug_frame + 0x5188 + 0x5188 + 0x48 + + + + .debug_frame + 0x51d0 + 0x51d0 + 0x54 + + + + .debug_frame + 0x5224 + 0x5224 + 0x48 + + + + .debug_frame + 0x526c + 0x526c + 0x48 + + + + .debug_frame + 0x52b4 + 0x52b4 + 0x50 + + + + .debug_frame + 0x5304 + 0x5304 + 0x44 + + + + .debug_frame + 0x5348 + 0x5348 + 0x44 + + + + .debug_frame + 0x538c + 0x538c + 0x3c + + + + .debug_frame + 0x53c8 + 0x53c8 + 0x50 + + + + .debug_frame + 0x5418 + 0x5418 + 0x4c + + + + .debug_frame + 0x5464 + 0x5464 + 0x48 + + + + .debug_frame + 0x54ac + 0x54ac + 0x48 + + + + .debug_frame + 0x54f4 + 0x54f4 + 0x54 + + + + .debug_frame + 0x5548 + 0x5548 + 0x4c + + + + .debug_frame + 0x5594 + 0x5594 + 0x44 + + + + .debug_frame + 0x55d8 + 0x55d8 + 0x4c + + + + .debug_frame + 0x5624 + 0x5624 + 0x4c + + + + .debug_frame + 0x5670 + 0x5670 + 0x54 + + + + .debug_frame + 0x56c4 + 0x56c4 + 0x44 + + + + .debug_frame + 0x5708 + 0x5708 + 0x48 + + + + .debug_frame + 0x5750 + 0x5750 + 0x3c + + + + .debug_frame + 0x578c + 0x578c + 0x3c + + + + .debug_frame + 0x57c8 + 0x57c8 + 0x58 + + + + .debug_frame + 0x5820 + 0x5820 + 0x44 + + + + .debug_frame + 0x5864 + 0x5864 + 0x44 + + + + .debug_frame + 0x58a8 + 0x58a8 + 0x48 + + + + .debug_frame + 0x58f0 + 0x58f0 + 0x54 + + + + .debug_frame + 0x5944 + 0x5944 + 0x48 + + + + .debug_frame + 0x598c + 0x598c + 0x48 + + + + .debug_frame + 0x59d4 + 0x59d4 + 0x44 + + + + .debug_frame + 0x5a18 + 0x5a18 + 0x3c + + + + .debug_frame + 0x5a54 + 0x5a54 + 0x44 + + + + .debug_frame + 0x5a98 + 0x5a98 + 0x44 + + + + .debug_frame + 0x5adc + 0x5adc + 0x44 + + + + .debug_frame + 0x5b20 + 0x5b20 + 0x44 + + + + .debug_frame + 0x5b64 + 0x5b64 + 0x44 + + + + .debug_frame + 0x5ba8 + 0x5ba8 + 0x44 + + + + .debug_frame + 0x5bec + 0x5bec + 0x54 + + + + .debug_frame + 0x5c40 + 0x5c40 + 0x44 + + + + .debug_frame + 0x5c84 + 0x5c84 + 0x44 + + + + .debug_frame + 0x5cc8 + 0x5cc8 + 0x44 + + + + .debug_frame + 0x5d0c + 0x5d0c + 0x4c + + + + .debug_frame + 0x5d58 + 0x5d58 + 0x44 + + + + .debug_frame + 0x5d9c + 0x5d9c + 0x48 + + + + .debug_frame + 0x5de4 + 0x5de4 + 0x44 + + + + .debug_frame + 0x5e28 + 0x5e28 + 0x44 + + + + .debug_frame + 0x5e6c + 0x5e6c + 0x4c + + + + .debug_frame + 0x5eb8 + 0x5eb8 + 0x48 + + + + .debug_frame + 0x5f00 + 0x5f00 + 0x4c + + + + .debug_frame + 0x5f4c + 0x5f4c + 0x50 + + + + .debug_frame + 0x5f9c + 0x5f9c + 0x4c + + + + .debug_frame + 0x5fe8 + 0x5fe8 + 0x54 + + + + .debug_frame + 0x603c + 0x603c + 0x44 + + + + .debug_frame + 0x6080 + 0x6080 + 0x4c + + + + .debug_frame + 0x60cc + 0x60cc + 0x44 + + + + .debug_frame + 0x6110 + 0x6110 + 0x48 + + + + .debug_frame + 0x6158 + 0x6158 + 0x54 + + + + .debug_frame + 0x61ac + 0x61ac + 0x58 + + + + .debug_frame + 0x6204 + 0x6204 + 0x48 + + + + .debug_frame + 0x624c + 0x624c + 0x48 + + + + .debug_frame + 0x6294 + 0x6294 + 0x44 + + + + .debug_frame + 0x62d8 + 0x62d8 + 0x44 + + + + .debug_frame + 0x631c + 0x631c + 0x50 + + + + .debug_frame + 0x636c + 0x636c + 0x54 + + + + .debug_frame + 0x63c0 + 0x63c0 + 0x4c + + + + .debug_frame + 0x640c + 0x640c + 0x44 + + + + .debug_frame + 0x6450 + 0x6450 + 0x58 + + + + .debug_frame + 0x64a8 + 0x64a8 + 0x48 + + + + .debug_frame + 0x64f0 + 0x64f0 + 0x44 + + + + .debug_frame + 0x6534 + 0x6534 + 0x58 + + + + .debug_frame + 0x658c + 0x658c + 0x44 + + + + .debug_frame + 0x65d0 + 0x65d0 + 0x44 + + + + .debug_frame + 0x6614 + 0x6614 + 0x44 + + + + .debug_frame + 0x6658 + 0x6658 + 0x4c + + + + .debug_frame + 0x66a4 + 0x66a4 + 0x4c + + + + .debug_frame + 0x66f0 + 0x66f0 + 0x3c + + + + .debug_frame + 0x672c + 0x672c + 0x3c + + + + .debug_frame + 0x6768 + 0x6768 + 0x3c + + + + .debug_frame + 0x67a4 + 0x67a4 + 0x3c + + + + .debug_frame + 0x67e0 + 0x67e0 + 0x3c + + + + .debug_frame + 0x681c + 0x681c + 0x48 + + + + .debug_frame + 0x6864 + 0x6864 + 0x3c + + + + .debug_frame + 0x68a0 + 0x68a0 + 0x3c + + + + .debug_frame + 0x68dc + 0x68dc + 0x3c + + + + .debug_frame + 0x6918 + 0x6918 + 0x3c + + + + .debug_frame + 0x6954 + 0x6954 + 0x44 + + + + .debug_frame + 0x6998 + 0x6998 + 0x54 + + + + .debug_frame + 0x69ec + 0x69ec + 0x48 + + + + .debug_frame + 0x6a34 + 0x6a34 + 0x44 + + + + .debug_frame + 0x6a78 + 0x6a78 + 0x3c + + + + .debug_frame + 0x6ab4 + 0x6ab4 + 0x44 + + + + .debug_frame + 0x6af8 + 0x6af8 + 0x3c + + + + .debug_frame + 0x6b34 + 0x6b34 + 0x3c + + + + .debug_frame + 0x6b70 + 0x6b70 + 0x3c + + + + .debug_frame + 0x6bac + 0x6bac + 0x44 + + + + .debug_frame + 0x6bf0 + 0x6bf0 + 0x44 + + + + .debug_frame + 0x6c34 + 0x6c34 + 0x44 + + + + .debug_frame + 0x6c78 + 0x6c78 + 0x44 + + + + .debug_frame + 0x6cbc + 0x6cbc + 0x3c + + + + .debug_frame + 0x6cf8 + 0x6cf8 + 0x3c + + + + .debug_frame + 0x6d34 + 0x6d34 + 0x3c + + + + .debug_frame + 0x6d70 + 0x6d70 + 0x48 + + + + .debug_frame + 0x6db8 + 0x6db8 + 0x3c + + + + .debug_frame + 0x6df4 + 0x6df4 + 0x3c + + + + .debug_frame + 0x6e30 + 0x6e30 + 0x3c + + + + .debug_frame + 0x6e6c + 0x6e6c + 0x3c + + + + .debug_frame + 0x6ea8 + 0x6ea8 + 0x3c + + + + .debug_frame + 0x6ee4 + 0x6ee4 + 0x44 + + + + .debug_frame + 0x6f28 + 0x6f28 + 0x34 + + + + .debug_frame + 0x7e10 + 0x7e10 + 0x39 + + + + .debug_frame + 0x6f5c + 0x6f5c + 0x48 + + + + .debug_frame + 0x6fa4 + 0x6fa4 + 0x3c + + + + .debug_frame + 0x6fe0 + 0x6fe0 + 0x3c + + + + .debug_frame + 0x701c + 0x701c + 0x3c + + + + .debug_frame + 0x7058 + 0x7058 + 0x44 + + + + .debug_frame + 0x709c + 0x709c + 0x3c + + + + .debug_frame + 0x70d8 + 0x70d8 + 0x44 + + + + .debug_frame + 0x711c + 0x711c + 0x48 + + + + .debug_frame + 0x7164 + 0x7164 + 0x58 + + + + .debug_frame + 0x71bc + 0x71bc + 0x44 + + + + .debug_frame + 0x7200 + 0x7200 + 0x3c + + + + .debug_frame + 0x723c + 0x723c + 0x40 + + + + .debug_frame + 0x727c + 0x727c + 0x3c + + + + .debug_frame + 0x72b8 + 0x72b8 + 0x3c + + + + .debug_frame + 0x72f4 + 0x72f4 + 0x48 + + + + .debug_frame + 0x733c + 0x733c + 0x48 + + + + .debug_frame + 0x7384 + 0x7384 + 0x50 + + + + .debug_frame + 0x73d4 + 0x73d4 + 0x4c + + + + .debug_frame + 0x7420 + 0x7420 + 0x48 + + + + .debug_frame + 0x7468 + 0x7468 + 0x44 + + + + .debug_frame + 0x74ac + 0x74ac + 0x4c + + + + .debug_frame + 0x74f8 + 0x74f8 + 0x48 + + + + .debug_frame + 0x7540 + 0x7540 + 0x48 + + + + .debug_frame + 0x7588 + 0x7588 + 0x4c + + + + .debug_frame + 0x75d4 + 0x75d4 + 0x44 + + + + .debug_frame + 0x7618 + 0x7618 + 0x48 + + + + .debug_frame + 0x7660 + 0x7660 + 0x3c + + + + .debug_frame + 0x769c + 0x769c + 0x3c + + + + .debug_frame + 0x76d8 + 0x76d8 + 0x3c + + + + .debug_frame + 0x7714 + 0x7714 + 0x3c + + + + .debug_frame + 0x7750 + 0x7750 + 0x3c + + + + .debug_frame + 0x778c + 0x778c + 0x4c + + + + .debug_frame + 0x77d8 + 0x77d8 + 0x48 + + + + .debug_frame + 0x7820 + 0x7820 + 0x4c + + + + .debug_frame + 0x786c + 0x786c + 0x44 + + + + .debug_frame + 0x78b0 + 0x78b0 + 0x48 + + + + .debug_frame + 0x78f8 + 0x78f8 + 0x50 + + + + .debug_frame + 0x7948 + 0x7948 + 0x40 + + + + .debug_frame + 0x7988 + 0x7988 + 0x48 + + + + .debug_frame + 0x79d0 + 0x79d0 + 0x3c + + + + .debug_frame + 0x7a0c + 0x7a0c + 0x4c + + + + .debug_frame + 0x7a58 + 0x7a58 + 0x58 + + + + .debug_frame + 0x7ab0 + 0x7ab0 + 0x4c + + + + .debug_frame + 0x7afc + 0x7afc + 0x58 + + + + .debug_frame + 0x7b54 + 0x7b54 + 0x3c + + + + .debug_frame + 0x7b90 + 0x7b90 + 0x40 + + + + .debug_frame + 0x7bd0 + 0x7bd0 + 0x3c + + + + .debug_frame + 0x7c0c + 0x7c0c + 0x3c + + + + .debug_frame + 0x7c48 + 0x7c48 + 0x3c + + + + .debug_frame + 0x7c84 + 0x7c84 + 0x3c + + + + .debug_frame + 0x7cc0 + 0x7cc0 + 0x48 + + + + .debug_frame + 0x7d08 + 0x7d08 + 0x40 + + + + .debug_frame + 0x7d48 + 0x7d48 + 0x48 + + + + .debug_frame + 0x7d90 + 0x7d90 + 0x3c + + + + .debug_frame + 0x7dcc + 0x7dcc + 0x44 + + + + .debug_abbrev + 0x0 + 0x0 + 0x66 + + + + .debug_abbrev + 0x66 + 0x66 + 0x7c + + + + .debug_abbrev + 0xe2 + 0xe2 + 0x69 + + + + .debug_abbrev + 0x14b + 0x14b + 0x9f + + + + .debug_abbrev + 0x1ea + 0x1ea + 0x53 + + + + .debug_abbrev + 0x23d + 0x23d + 0x1f + + + + .debug_abbrev + 0x25c + 0x25c + 0x35 + + + + .debug_abbrev + 0x291 + 0x291 + 0x24 + + + + .debug_abbrev + 0x2b5 + 0x2b5 + 0x24 + + + + .debug_abbrev + 0x2d9 + 0x2d9 + 0xf3 + + + + .debug_abbrev + 0x3cc + 0x3cc + 0x27 + + + + .debug_abbrev + 0x3f3 + 0x3f3 + 0x27 + + + + .debug_abbrev + 0x41a + 0x41a + 0x7a + + + + .debug_abbrev + 0x494 + 0x494 + 0x71 + + + + .debug_abbrev + 0x505 + 0x505 + 0x7a + + + + .debug_abbrev + 0x57f + 0x57f + 0x7a + + + + .debug_abbrev + 0x5f9 + 0x5f9 + 0x7a + + + + .debug_abbrev + 0x673 + 0x673 + 0x5e + + + + .debug_abbrev + 0x6d1 + 0x6d1 + 0x89 + + + + .debug_abbrev + 0x75a + 0x75a + 0x82 + + + + .debug_abbrev + 0x7dc + 0x7dc + 0x73 + + + + .debug_abbrev + 0x84f + 0x84f + 0x1f + + + + .debug_abbrev + 0x86e + 0x86e + 0x24 + + + + .debug_abbrev + 0x892 + 0x892 + 0xdb + + + + .debug_abbrev + 0x96d + 0x96d + 0x7c + + + + .debug_abbrev + 0x9e9 + 0x9e9 + 0x7c + + + + .debug_abbrev + 0xa65 + 0xa65 + 0x7c + + + + .debug_abbrev + 0xae1 + 0xae1 + 0xdf + + + + .debug_abbrev + 0xbc0 + 0xbc0 + 0x4b + + + + .debug_abbrev + 0xc0b + 0xc0b + 0xae + + + + .debug_abbrev + 0xcb9 + 0xcb9 + 0x81 + + + + .debug_abbrev + 0xd3a + 0xd3a + 0x7a + + + + .debug_abbrev + 0xdb4 + 0xdb4 + 0x90 + + + + .debug_abbrev + 0xe44 + 0xe44 + 0x136 + + + + .debug_abbrev + 0xf7a + 0xf7a + 0x27 + + + + .debug_abbrev + 0xfa1 + 0xfa1 + 0x7c + + + + .debug_abbrev + 0x101d + 0x101d + 0x7c + + + + .debug_abbrev + 0x1099 + 0x1099 + 0x7a + + + + .debug_abbrev + 0x1113 + 0x1113 + 0x7a + + + + .debug_abbrev + 0x118d + 0x118d + 0x7c + + + + .debug_abbrev + 0x1209 + 0x1209 + 0x7c + + + + .debug_abbrev + 0x1285 + 0x1285 + 0x7c + + + + .debug_abbrev + 0x1301 + 0x1301 + 0x8b + + + + .debug_abbrev + 0x138c + 0x138c + 0x7c + + + + .debug_abbrev + 0x1408 + 0x1408 + 0x7c + + + + .debug_abbrev + 0x1484 + 0x1484 + 0x7c + + + + .debug_abbrev + 0x1500 + 0x1500 + 0x73 + + + + .debug_abbrev + 0x1573 + 0x1573 + 0x3a + + + + .debug_abbrev + 0x15ad + 0x15ad + 0x90 + + + + .debug_abbrev + 0x163d + 0x163d + 0x9f + + + + .debug_abbrev + 0x16dc + 0x16dc + 0x24 + + + + .debug_abbrev + 0x1700 + 0x1700 + 0xe1 + + + + .debug_abbrev + 0x17e1 + 0x17e1 + 0x27 + + + + .debug_abbrev + 0x1808 + 0x1808 + 0x7c + + + + .debug_abbrev + 0x1884 + 0x1884 + 0x7c + + + + .debug_abbrev + 0x1900 + 0x1900 + 0x7a + + + + .debug_abbrev + 0x197a + 0x197a + 0x7a + + + + .debug_abbrev + 0x19f4 + 0x19f4 + 0x7a + + + + .debug_abbrev + 0x1a6e + 0x1a6e + 0x7a + + + + .debug_abbrev + 0x1ae8 + 0x1ae8 + 0x7c + + + + .debug_abbrev + 0x1b64 + 0x1b64 + 0x82 + + + + .debug_abbrev + 0x1be6 + 0x1be6 + 0x81 + + + + .debug_abbrev + 0x1c67 + 0x1c67 + 0x62 + + + + .debug_abbrev + 0x1cc9 + 0x1cc9 + 0x66 + + + + .debug_abbrev + 0x1d2f + 0x1d2f + 0x7c + + + + .debug_abbrev + 0x1dab + 0x1dab + 0xf4 + + + + .debug_abbrev + 0x1e9f + 0x1e9f + 0x27 + + + + .debug_abbrev + 0x1ec6 + 0x1ec6 + 0x27 + + + + .debug_abbrev + 0x1eed + 0x1eed + 0x60 + + + + .debug_abbrev + 0x1f4d + 0x1f4d + 0x7a + + + + .debug_abbrev + 0x1fc7 + 0x1fc7 + 0x6c + + + + .debug_abbrev + 0x2033 + 0x2033 + 0x78 + + + + .debug_abbrev + 0x20ab + 0x20ab + 0x6c + + + + .debug_abbrev + 0x2117 + 0x2117 + 0x6c + + + + .debug_abbrev + 0x2183 + 0x2183 + 0x6c + + + + .debug_abbrev + 0x21ef + 0x21ef + 0x6c + + + + .debug_abbrev + 0x225b + 0x225b + 0x6c + + + + .debug_abbrev + 0x22c7 + 0x22c7 + 0x6c + + + + .debug_abbrev + 0x2333 + 0x2333 + 0x6c + + + + .debug_abbrev + 0x239f + 0x239f + 0x6c + + + + .debug_abbrev + 0x240b + 0x240b + 0x6c + + + + .debug_abbrev + 0x2477 + 0x2477 + 0x6c + + + + .debug_abbrev + 0x24e3 + 0x24e3 + 0x6c + + + + .debug_abbrev + 0x254f + 0x254f + 0x6c + + + + .debug_abbrev + 0x25bb + 0x25bb + 0x6c + + + + .debug_abbrev + 0x2627 + 0x2627 + 0x6c + + + + .debug_abbrev + 0x2693 + 0x2693 + 0x6c + + + + .debug_abbrev + 0x26ff + 0x26ff + 0x6c + + + + .debug_abbrev + 0x276b + 0x276b + 0x6c + + + + .debug_abbrev + 0x27d7 + 0x27d7 + 0x6c + + + + .debug_abbrev + 0x2843 + 0x2843 + 0x7c + + + + .debug_abbrev + 0x28bf + 0x28bf + 0x5e + + + + .debug_abbrev + 0x291d + 0x291d + 0x7c + + + + .debug_abbrev + 0x2999 + 0x2999 + 0x7c + + + + .debug_abbrev + 0x2a15 + 0x2a15 + 0x7c + + + + .debug_abbrev + 0x2a91 + 0x2a91 + 0x7c + + + + .debug_abbrev + 0x2b0d + 0x2b0d + 0x5e + + + + .debug_abbrev + 0x2b6b + 0x2b6b + 0x6c + + + + .debug_abbrev + 0x2bd7 + 0x2bd7 + 0x6c + + + + .debug_abbrev + 0x2c43 + 0x2c43 + 0x60 + + + + .debug_abbrev + 0x2ca3 + 0x2ca3 + 0x60 + + + + .debug_abbrev + 0x2d03 + 0x2d03 + 0x60 + + + + .debug_abbrev + 0x2d63 + 0x2d63 + 0x60 + + + + .debug_abbrev + 0x2dc3 + 0x2dc3 + 0x60 + + + + .debug_abbrev + 0x2e23 + 0x2e23 + 0x60 + + + + .debug_abbrev + 0x2e83 + 0x2e83 + 0x5e + + + + .debug_abbrev + 0x2ee1 + 0x2ee1 + 0x7c + + + + .debug_abbrev + 0x2f5d + 0x2f5d + 0x6c + + + + .debug_abbrev + 0x2fc9 + 0x2fc9 + 0x6c + + + + .debug_abbrev + 0x3035 + 0x3035 + 0x81 + + + + .debug_abbrev + 0x30b6 + 0x30b6 + 0x90 + + + + .debug_abbrev + 0x3146 + 0x3146 + 0x5e + + + + .debug_abbrev + 0x31a4 + 0x31a4 + 0x7c + + + + .debug_abbrev + 0x3220 + 0x3220 + 0x7a + + + + .debug_abbrev + 0x329a + 0x329a + 0x7a + + + + .debug_abbrev + 0x3314 + 0x3314 + 0x7c + + + + .debug_abbrev + 0x3390 + 0x3390 + 0x136 + + + + .debug_abbrev + 0x34c6 + 0x34c6 + 0x27 + + + + .debug_abbrev + 0x34ed + 0x34ed + 0x7a + + + + .debug_abbrev + 0x3567 + 0x3567 + 0x7a + + + + .debug_abbrev + 0x35e1 + 0x35e1 + 0x7a + + + + .debug_abbrev + 0x365b + 0x365b + 0x7c + + + + .debug_abbrev + 0x36d7 + 0x36d7 + 0x7c + + + + .debug_abbrev + 0x3753 + 0x3753 + 0x8b + + + + .debug_abbrev + 0x37de + 0x37de + 0x7c + + + + .debug_abbrev + 0x385a + 0x385a + 0x7c + + + + .debug_abbrev + 0x38d6 + 0x38d6 + 0x3a + + + + .debug_abbrev + 0x3910 + 0x3910 + 0x64 + + + + .debug_abbrev + 0x3974 + 0x3974 + 0x53 + + + + .debug_abbrev + 0x39c7 + 0x39c7 + 0x90 + + + + .debug_abbrev + 0x3a57 + 0x3a57 + 0x40 + + + + .debug_abbrev + 0x3a97 + 0x3a97 + 0x6e + + + + .debug_abbrev + 0x3b05 + 0x3b05 + 0x27 + + + + .debug_abbrev + 0x3b2c + 0x3b2c + 0x27 + + + + .debug_abbrev + 0x3b53 + 0x3b53 + 0x6c + + + + .debug_abbrev + 0x3bbf + 0x3bbf + 0x7c + + + + .debug_abbrev + 0x3c3b + 0x3c3b + 0x6e + + + + .debug_abbrev + 0x3ca9 + 0x3ca9 + 0x90 + + + + .debug_abbrev + 0x3d39 + 0x3d39 + 0x81 + + + + .debug_abbrev + 0x3dba + 0x3dba + 0x8a + + + + .debug_abbrev + 0x3e44 + 0x3e44 + 0x7c + + + + .debug_abbrev + 0x3ec0 + 0x3ec0 + 0x7a + + + + .debug_abbrev + 0x3f3a + 0x3f3a + 0x7a + + + + .debug_abbrev + 0x3fb4 + 0x3fb4 + 0x7a + + + + .debug_abbrev + 0x402e + 0x402e + 0x7a + + + + .debug_abbrev + 0x40a8 + 0x40a8 + 0x7a + + + + .debug_abbrev + 0x4122 + 0x4122 + 0x7a + + + + .debug_abbrev + 0x419c + 0x419c + 0x7a + + + + .debug_abbrev + 0x4216 + 0x4216 + 0x7a + + + + .debug_abbrev + 0x4290 + 0x4290 + 0x7a + + + + .debug_abbrev + 0x430a + 0x430a + 0x7a + + + + .debug_abbrev + 0x4384 + 0x4384 + 0x7a + + + + .debug_abbrev + 0x43fe + 0x43fe + 0x7a + + + + .debug_abbrev + 0x4478 + 0x4478 + 0x7a + + + + .debug_abbrev + 0x44f2 + 0x44f2 + 0x7a + + + + .debug_abbrev + 0x456c + 0x456c + 0x7a + + + + .debug_abbrev + 0x45e6 + 0x45e6 + 0x7a + + + + .debug_abbrev + 0x4660 + 0x4660 + 0x7a + + + + .debug_abbrev + 0x46da + 0x46da + 0x7a + + + + .debug_abbrev + 0x4754 + 0x4754 + 0x7a + + + + .debug_abbrev + 0x47ce + 0x47ce + 0x7a + + + + .debug_abbrev + 0x4848 + 0x4848 + 0x7a + + + + .debug_abbrev + 0x48c2 + 0x48c2 + 0x7a + + + + .debug_abbrev + 0x493c + 0x493c + 0x7a + + + + .debug_abbrev + 0x49b6 + 0x49b6 + 0x7a + + + + .debug_abbrev + 0x4a30 + 0x4a30 + 0x7c + + + + .debug_abbrev + 0x4aac + 0x4aac + 0x7c + + + + .debug_abbrev + 0x4b28 + 0x4b28 + 0x7c + + + + .debug_abbrev + 0x4ba4 + 0x4ba4 + 0x53 + + + + .debug_abbrev + 0x4bf7 + 0x4bf7 + 0xaa + + + + .debug_abbrev + 0x4ca1 + 0x4ca1 + 0x27 + + + + .debug_abbrev + 0x4cc8 + 0x4cc8 + 0x60 + + + + .debug_abbrev + 0x4d28 + 0x4d28 + 0x7a + + + + .debug_abbrev + 0x4da2 + 0x4da2 + 0x7c + + + + .debug_abbrev + 0x4e1e + 0x4e1e + 0x61 + + + + .debug_abbrev + 0x4e7f + 0x4e7f + 0x53 + + + + .debug_abbrev + 0x4ed2 + 0x4ed2 + 0x44 + + + + .debug_abbrev + 0x4f16 + 0x4f16 + 0xd2 + + + + .debug_abbrev + 0x4fe8 + 0x4fe8 + 0x27 + + + + .debug_abbrev + 0x500f + 0x500f + 0x5e + + + + .debug_abbrev + 0x506d + 0x506d + 0x5e + + + + .debug_abbrev + 0x50cb + 0x50cb + 0x5e + + + + .debug_abbrev + 0x5129 + 0x5129 + 0x5e + + + + .debug_abbrev + 0x5187 + 0x5187 + 0x5e + + + + .debug_abbrev + 0x51e5 + 0x51e5 + 0x5e + + + + .debug_abbrev + 0x5243 + 0x5243 + 0x6c + + + + .debug_abbrev + 0x52af + 0x52af + 0x6c + + + + .debug_abbrev + 0x531b + 0x531b + 0x5e + + + + .debug_abbrev + 0x5379 + 0x5379 + 0x5e + + + + .debug_abbrev + 0x53d7 + 0x53d7 + 0x5e + + + + .debug_abbrev + 0x5435 + 0x5435 + 0x60 + + + + .debug_abbrev + 0x5495 + 0x5495 + 0x5e + + + + .debug_abbrev + 0x54f3 + 0x54f3 + 0x5e + + + + .debug_abbrev + 0x5551 + 0x5551 + 0x6c + + + + .debug_abbrev + 0x55bd + 0x55bd + 0x6c + + + + .debug_abbrev + 0x5629 + 0x5629 + 0x5e + + + + .debug_abbrev + 0x5687 + 0x5687 + 0x6c + + + + .debug_abbrev + 0x56f3 + 0x56f3 + 0x6c + + + + .debug_abbrev + 0x575f + 0x575f + 0x5e + + + + .debug_abbrev + 0x57bd + 0x57bd + 0x5e + + + + .debug_abbrev + 0x581b + 0x581b + 0x7a + + + + .debug_abbrev + 0x5895 + 0x5895 + 0x5e + + + + .debug_abbrev + 0x58f3 + 0x58f3 + 0x5e + + + + .debug_abbrev + 0x5951 + 0x5951 + 0x5e + + + + .debug_abbrev + 0x59af + 0x59af + 0x5e + + + + .debug_abbrev + 0x5a0d + 0x5a0d + 0x5e + + + + .debug_abbrev + 0x5a6b + 0x5a6b + 0x60 + + + + .debug_abbrev + 0x5acb + 0x5acb + 0xe4 + + + + .debug_abbrev + 0x5baf + 0x5baf + 0x27 + + + + .debug_abbrev + 0x5bd6 + 0x5bd6 + 0x50 + + + + .debug_abbrev + 0x5c26 + 0x5c26 + 0x5e + + + + .debug_abbrev + 0x5c84 + 0x5c84 + 0x5e + + + + .debug_abbrev + 0x5ce2 + 0x5ce2 + 0x5e + + + + .debug_abbrev + 0x5d40 + 0x5d40 + 0x5e + + + + .debug_abbrev + 0x5d9e + 0x5d9e + 0x5e + + + + .debug_abbrev + 0x5dfc + 0x5dfc + 0x5e + + + + .debug_abbrev + 0x5e5a + 0x5e5a + 0x5e + + + + .debug_abbrev + 0x5eb8 + 0x5eb8 + 0x5e + + + + .debug_abbrev + 0x5f16 + 0x5f16 + 0x5e + + + + .debug_abbrev + 0x5f74 + 0x5f74 + 0x5e + + + + .debug_abbrev + 0x5fd2 + 0x5fd2 + 0x50 + + + + .debug_abbrev + 0x6022 + 0x6022 + 0x5e + + + + .debug_abbrev + 0x6080 + 0x6080 + 0x5e + + + + .debug_abbrev + 0x60de + 0x60de + 0x5e + + + + .debug_abbrev + 0x613c + 0x613c + 0x5e + + + + .debug_abbrev + 0x619a + 0x619a + 0x5e + + + + .debug_abbrev + 0x61f8 + 0x61f8 + 0x5e + + + + .debug_abbrev + 0x6256 + 0x6256 + 0x5e + + + + .debug_abbrev + 0x62b4 + 0x62b4 + 0x5e + + + + .debug_abbrev + 0x6312 + 0x6312 + 0x5e + + + + .debug_abbrev + 0x6370 + 0x6370 + 0x5e + + + + .debug_abbrev + 0x63ce + 0x63ce + 0x50 + + + + .debug_abbrev + 0x641e + 0x641e + 0x50 + + + + .debug_abbrev + 0x646e + 0x646e + 0x50 + + + + .debug_abbrev + 0x64be + 0x64be + 0x5e + + + + .debug_abbrev + 0x651c + 0x651c + 0x50 + + + + .debug_abbrev + 0x656c + 0x656c + 0x50 + + + + .debug_abbrev + 0x65bc + 0x65bc + 0x50 + + + + .debug_abbrev + 0x660c + 0x660c + 0x7a + + + + .debug_abbrev + 0x6686 + 0x6686 + 0x60 + + + + .debug_abbrev + 0x66e6 + 0x66e6 + 0x60 + + + + .debug_abbrev + 0x6746 + 0x6746 + 0x50 + + + + .debug_abbrev + 0x6796 + 0x6796 + 0x50 + + + + .debug_abbrev + 0x67e6 + 0x67e6 + 0x5e + + + + .debug_abbrev + 0x6844 + 0x6844 + 0x5e + + + + .debug_abbrev + 0x68a2 + 0x68a2 + 0x5e + + + + .debug_abbrev + 0x6900 + 0x6900 + 0x5e + + + + .debug_abbrev + 0x695e + 0x695e + 0x5e + + + + .debug_abbrev + 0x69bc + 0x69bc + 0x50 + + + + .debug_abbrev + 0x6a0c + 0x6a0c + 0x5e + + + + .debug_abbrev + 0x6a6a + 0x6a6a + 0x50 + + + + .debug_abbrev + 0x6aba + 0x6aba + 0x5e + + + + .debug_abbrev + 0x6b18 + 0x6b18 + 0x5e + + + + .debug_abbrev + 0x6b76 + 0x6b76 + 0x50 + + + + .debug_abbrev + 0x6bc6 + 0x6bc6 + 0x5e + + + + .debug_abbrev + 0x6c24 + 0x6c24 + 0x50 + + + + .debug_abbrev + 0x6c74 + 0x6c74 + 0x5e + + + + .debug_abbrev + 0x6cd2 + 0x6cd2 + 0xbc + + + + .debug_abbrev + 0x6d8e + 0x6d8e + 0x27 + + + + .debug_abbrev + 0x6db5 + 0x6db5 + 0x7c + + + + .debug_abbrev + 0x6e31 + 0x6e31 + 0x5e + + + + .debug_abbrev + 0x6e8f + 0x6e8f + 0x6c + + + + .debug_abbrev + 0x6efb + 0x6efb + 0x5e + + + + .debug_abbrev + 0x6f59 + 0x6f59 + 0x6c + + + + .debug_abbrev + 0x6fc5 + 0x6fc5 + 0x5e + + + + .debug_abbrev + 0x7023 + 0x7023 + 0x6c + + + + .debug_abbrev + 0x708f + 0x708f + 0x6c + + + + .debug_abbrev + 0x70fb + 0x70fb + 0x6c + + + + .debug_abbrev + 0x7167 + 0x7167 + 0x6c + + + + .debug_abbrev + 0x71d3 + 0x71d3 + 0x6c + + + + .debug_abbrev + 0x723f + 0x723f + 0x7c + + + + .debug_abbrev + 0x72bb + 0x72bb + 0x5e + + + + .debug_abbrev + 0x7319 + 0x7319 + 0x7c + + + + .debug_abbrev + 0x7395 + 0x7395 + 0x111 + + + + .debug_abbrev + 0x74a6 + 0x74a6 + 0x27 + + + + .debug_abbrev + 0x74cd + 0x74cd + 0x27 + + + + .debug_abbrev + 0x74f4 + 0x74f4 + 0x27 + + + + .debug_abbrev + 0x751b + 0x751b + 0x27 + + + + .debug_abbrev + 0x7542 + 0x7542 + 0x6f + + + + .debug_abbrev + 0x75b1 + 0x75b1 + 0x6f + + + + .debug_abbrev + 0x7620 + 0x7620 + 0x7c + + + + .debug_abbrev + 0x769c + 0x769c + 0x7c + + + + .debug_abbrev + 0x7718 + 0x7718 + 0x7c + + + + .debug_abbrev + 0x7794 + 0x7794 + 0x7c + + + + .debug_abbrev + 0x7810 + 0x7810 + 0x7a + + + + .debug_abbrev + 0x788a + 0x788a + 0x5c + + + + .debug_abbrev + 0x78e6 + 0x78e6 + 0x7c + + + + .debug_abbrev + 0x7962 + 0x7962 + 0x5c + + + + .debug_abbrev + 0x79be + 0x79be + 0x7c + + + + .debug_abbrev + 0x7a3a + 0x7a3a + 0x7a + + + + .debug_abbrev + 0x7ab4 + 0x7ab4 + 0x7c + + + + .debug_abbrev + 0x7b30 + 0x7b30 + 0x7c + + + + .debug_abbrev + 0x7bac + 0x7bac + 0x7c + + + + .debug_abbrev + 0x7c28 + 0x7c28 + 0xa1 + + + + .debug_abbrev + 0x7cc9 + 0x7cc9 + 0x4b + + + + .debug_abbrev + 0x7d14 + 0x7d14 + 0x7d + + + + .debug_abbrev + 0x7d91 + 0x7d91 + 0x29 + + + + .debug_abbrev + 0x7dba + 0x7dba + 0x7c + + + + .debug_abbrev + 0x7e36 + 0x7e36 + 0x7c + + + + .debug_abbrev + 0x7eb2 + 0x7eb2 + 0x7c + + + + .debug_abbrev + 0x7f2e + 0x7f2e + 0x4b + + + + .debug_abbrev + 0x7f79 + 0x7f79 + 0x12f + + + + .debug_abbrev + 0x80a8 + 0x80a8 + 0x6c + + + + .debug_abbrev + 0x8114 + 0x8114 + 0x6e + + + + .debug_abbrev + 0x8182 + 0x8182 + 0xbd + + + + .debug_abbrev + 0x823f + 0x823f + 0x64 + + + + .debug_abbrev + 0x82a3 + 0x82a3 + 0xb8 + + + + .debug_abbrev + 0x835b + 0x835b + 0xde + + + + .debug_abbrev + 0x8439 + 0x8439 + 0x53 + + + + .debug_abbrev + 0x848c + 0x848c + 0x44 + + + + .debug_abbrev + 0x84d0 + 0x84d0 + 0x9a + + + + .debug_abbrev + 0x856a + 0x856a + 0xa2 + + + + .debug_abbrev + 0x860c + 0x860c + 0x82 + + + + .debug_abbrev + 0x868e + 0x868e + 0x93 + + + + .debug_abbrev + 0x8721 + 0x8721 + 0x73 + + + + .debug_abbrev + 0x8794 + 0x8794 + 0x53 + + + + .debug_abbrev + 0x87e7 + 0x87e7 + 0x33 + + + + .debug_abbrev + 0x881a + 0x881a + 0xc5 + + + + .debug_abbrev + 0x88df + 0x88df + 0xde + + + + .debug_abbrev + 0x89bd + 0x89bd + 0x101 + + + + .debug_abbrev + 0x8abe + 0x8abe + 0xa8 + + + + .debug_abbrev + 0x8b66 + 0x8b66 + 0x86 + + + + .debug_abbrev + 0x8bec + 0x8bec + 0x94 + + + + .debug_abbrev + 0x8c80 + 0x8c80 + 0x71 + + + + .debug_abbrev + 0x8cf1 + 0x8cf1 + 0xca + + + + .debug_abbrev + 0x8dbb + 0x8dbb + 0xb8 + + + + .debug_abbrev + 0x8e73 + 0x8e73 + 0xfa + + + + .debug_abbrev + 0x8f6d + 0x8f6d + 0xcf + + + + .debug_abbrev + 0x903c + 0x903c + 0xe5 + + + + .debug_abbrev + 0x9121 + 0x9121 + 0x8c + + + + .debug_abbrev + 0x91ad + 0x91ad + 0x7d + + + + .debug_abbrev + 0x922a + 0x922a + 0x24 + + + + .debug_abbrev + 0x924e + 0x924e + 0x160 + + + + .debug_abbrev + 0x93ae + 0x93ae + 0x75 + + + + .debug_abbrev + 0x9423 + 0x9423 + 0xe9 + + + + .debug_abbrev + 0x950c + 0x950c + 0xeb + + + + .debug_abbrev + 0x95f7 + 0x95f7 + 0x91 + + + + .debug_abbrev + 0x9688 + 0x9688 + 0x79 + + + + .debug_abbrev + 0x9701 + 0x9701 + 0x5d + + + + .debug_abbrev + 0x975e + 0x975e + 0xc2 + + + + .debug_abbrev + 0x9820 + 0x9820 + 0x35 + + + + .debug_abbrev + 0x9855 + 0x9855 + 0x24 + + + + .debug_abbrev + 0x9879 + 0x9879 + 0x24 + + + + .debug_abbrev + 0x989d + 0x989d + 0xbe + + + + .debug_abbrev + 0x995b + 0x995b + 0x84 + + + + .debug_abbrev + 0x99df + 0x99df + 0x24 + + + + .debug_abbrev + 0x9a03 + 0x9a03 + 0x53 + + + + .debug_abbrev + 0x9a56 + 0x9a56 + 0xce + + + + .debug_abbrev + 0x9b24 + 0x9b24 + 0xd7 + + + + .debug_abbrev + 0x9bfb + 0x9bfb + 0x51 + + + + .debug_abbrev + 0x9c4c + 0x9c4c + 0x33 + + + + .debug_abbrev + 0x9c7f + 0x9c7f + 0xb4 + + + + .debug_abbrev + 0x9d33 + 0x9d33 + 0x11c + + + + .debug_abbrev + 0x9e4f + 0x9e4f + 0x27 + + + + .debug_abbrev + 0x9e76 + 0x9e76 + 0x7c + + + + .debug_abbrev + 0x9ef2 + 0x9ef2 + 0x7c + + + + .debug_abbrev + 0x9f6e + 0x9f6e + 0x60 + + + + .debug_abbrev + 0x9fce + 0x9fce + 0x7a + + + + .debug_abbrev + 0xa048 + 0xa048 + 0x6f + + + + .debug_abbrev + 0xa0b7 + 0xa0b7 + 0x61 + + + + .debug_abbrev + 0xa118 + 0xa118 + 0x6b + + + + .debug_abbrev + 0xa183 + 0xa183 + 0x27 + + + + .debug_abbrev + 0xa1aa + 0xa1aa + 0x7c + + + + .debug_abbrev + 0xa226 + 0xa226 + 0x216 + + + + .debug_abbrev + 0xa43c + 0xa43c + 0x29 + + + + .debug_abbrev + 0xa465 + 0xa465 + 0x29 + + + + .debug_abbrev + 0xa48e + 0xa48e + 0x29 + + + + .debug_abbrev + 0xa4b7 + 0xa4b7 + 0x86 + + + + .debug_abbrev + 0xa53d + 0xa53d + 0x78 + + + + .debug_abbrev + 0xa5b5 + 0xa5b5 + 0x78 + + + + .debug_abbrev + 0xa62d + 0xa62d + 0x78 + + + + .debug_abbrev + 0xa6a5 + 0xa6a5 + 0x86 + + + + .debug_abbrev + 0xa72b + 0xa72b + 0x6a + + + + .debug_abbrev + 0xa795 + 0xa795 + 0x86 + + + + .debug_abbrev + 0xa81b + 0xa81b + 0x86 + + + + .debug_abbrev + 0xa8a1 + 0xa8a1 + 0x78 + + + + .debug_abbrev + 0xa919 + 0xa919 + 0x86 + + + + .debug_abbrev + 0xa99f + 0xa99f + 0x86 + + + + .debug_abbrev + 0xaa25 + 0xaa25 + 0x78 + + + + .debug_abbrev + 0xaa9d + 0xaa9d + 0x86 + + + + .debug_abbrev + 0xab23 + 0xab23 + 0x86 + + + + .debug_abbrev + 0xaba9 + 0xaba9 + 0x86 + + + + .debug_abbrev + 0xac2f + 0xac2f + 0x86 + + + + .debug_abbrev + 0xacb5 + 0xacb5 + 0x86 + + + + .debug_abbrev + 0xad3b + 0xad3b + 0x86 + + + + .debug_abbrev + 0xadc1 + 0xadc1 + 0x86 + + + + .debug_abbrev + 0xae47 + 0xae47 + 0x86 + + + + .debug_abbrev + 0xaecd + 0xaecd + 0x86 + + + + .debug_abbrev + 0xaf53 + 0xaf53 + 0x86 + + + + .debug_abbrev + 0xafd9 + 0xafd9 + 0x86 + + + + .debug_abbrev + 0xb05f + 0xb05f + 0x86 + + + + .debug_abbrev + 0xb0e5 + 0xb0e5 + 0x86 + + + + .debug_abbrev + 0xb16b + 0xb16b + 0x86 + + + + .debug_abbrev + 0xb1f1 + 0xb1f1 + 0x86 + + + + .debug_abbrev + 0xb277 + 0xb277 + 0x86 + + + + .debug_abbrev + 0xb2fd + 0xb2fd + 0x86 + + + + .debug_abbrev + 0xb383 + 0xb383 + 0x78 + + + + .debug_abbrev + 0xb3fb + 0xb3fb + 0x78 + + + + .debug_abbrev + 0xb473 + 0xb473 + 0x78 + + + + .debug_abbrev + 0xb4eb + 0xb4eb + 0x78 + + + + .debug_abbrev + 0xb563 + 0xb563 + 0x78 + + + + .debug_abbrev + 0xb5db + 0xb5db + 0x78 + + + + .debug_abbrev + 0xb653 + 0xb653 + 0x78 + + + + .debug_abbrev + 0xb6cb + 0xb6cb + 0x86 + + + + .debug_abbrev + 0xb751 + 0xb751 + 0x78 + + + + .debug_abbrev + 0xb7c9 + 0xb7c9 + 0x78 + + + + .debug_abbrev + 0xb841 + 0xb841 + 0x6a + + + + .debug_abbrev + 0xb8ab + 0xb8ab + 0x87 + + + + .debug_abbrev + 0xb932 + 0xb932 + 0x87 + + + + .debug_abbrev + 0xb9b9 + 0xb9b9 + 0x87 + + + + .debug_abbrev + 0xba40 + 0xba40 + 0x87 + + + + .debug_abbrev + 0xbac7 + 0xbac7 + 0x95 + + + + .debug_abbrev + 0xbb5c + 0xbb5c + 0x95 + + + + .debug_abbrev + 0xbbf1 + 0xbbf1 + 0x87 + + + + .debug_abbrev + 0xbc78 + 0xbc78 + 0x87 + + + + .debug_abbrev + 0xbcff + 0xbcff + 0x95 + + + + .debug_abbrev + 0xbd94 + 0xbd94 + 0x95 + + + + .debug_abbrev + 0xbe29 + 0xbe29 + 0x87 + + + + .debug_abbrev + 0xbeb0 + 0xbeb0 + 0x87 + + + + .debug_abbrev + 0xbf37 + 0xbf37 + 0x95 + + + + .debug_abbrev + 0xbfcc + 0xbfcc + 0x95 + + + + .debug_abbrev + 0xc061 + 0xc061 + 0x95 + + + + .debug_abbrev + 0xc0f6 + 0xc0f6 + 0x86 + + + + .debug_abbrev + 0xc17c + 0xc17c + 0x63 + + + + .debug_abbrev + 0xc1df + 0xc1df + 0xc7 + + + + .debug_abbrev + 0xc2a6 + 0xc2a6 + 0x53 + + + + .debug_abbrev + 0xc2f9 + 0xc2f9 + 0x75 + + + + .debug_abbrev + 0xc36e + 0xc36e + 0x1ba + + + + .debug_abbrev + 0xc528 + 0xc528 + 0x29 + + + + .debug_abbrev + 0xc551 + 0xc551 + 0x29 + + + + .debug_abbrev + 0xc57a + 0xc57a + 0x29 + + + + .debug_abbrev + 0xc5a3 + 0xc5a3 + 0x78 + + + + .debug_abbrev + 0xc61b + 0xc61b + 0x86 + + + + .debug_abbrev + 0xc6a1 + 0xc6a1 + 0x6a + + + + .debug_abbrev + 0xc70b + 0xc70b + 0x78 + + + + .debug_abbrev + 0xc783 + 0xc783 + 0x78 + + + + .debug_abbrev + 0xc7fb + 0xc7fb + 0x78 + + + + .debug_abbrev + 0xc873 + 0xc873 + 0x6a + + + + .debug_abbrev + 0xc8dd + 0xc8dd + 0x87 + + + + .debug_abbrev + 0xc964 + 0xc964 + 0x87 + + + + .debug_abbrev + 0xc9eb + 0xc9eb + 0x78 + + + + .debug_abbrev + 0xca63 + 0xca63 + 0x87 + + + + .debug_abbrev + 0xcaea + 0xcaea + 0x95 + + + + .debug_abbrev + 0xcb7f + 0xcb7f + 0x87 + + + + .debug_abbrev + 0xcc06 + 0xcc06 + 0x87 + + + + .debug_abbrev + 0xcc8d + 0xcc8d + 0x1ac + + + + .debug_abbrev + 0xce39 + 0xce39 + 0x29 + + + + .debug_abbrev + 0xce62 + 0xce62 + 0x29 + + + + .debug_abbrev + 0xce8b + 0xce8b + 0x29 + + + + .debug_abbrev + 0xceb4 + 0xceb4 + 0x78 + + + + .debug_abbrev + 0xcf2c + 0xcf2c + 0x78 + + + + .debug_abbrev + 0xcfa4 + 0xcfa4 + 0x6a + + + + .debug_abbrev + 0xd00e + 0xd00e + 0x87 + + + + .debug_abbrev + 0xd095 + 0xd095 + 0x87 + + + + .debug_abbrev + 0xd11c + 0xd11c + 0x78 + + + + .debug_abbrev + 0xd194 + 0xd194 + 0x78 + + + + .debug_abbrev + 0xd20c + 0xd20c + 0x87 + + + + .debug_abbrev + 0xd293 + 0xd293 + 0x87 + + + + .debug_abbrev + 0xd31a + 0xd31a + 0x78 + + + + .debug_abbrev + 0xd392 + 0xd392 + 0x87 + + + + .debug_abbrev + 0xd419 + 0xd419 + 0x87 + + + + .debug_abbrev + 0xd4a0 + 0xd4a0 + 0x87 + + + + .debug_abbrev + 0xd527 + 0xd527 + 0x1a7 + + + + .debug_abbrev + 0xd6ce + 0xd6ce + 0x29 + + + + .debug_abbrev + 0xd6f7 + 0xd6f7 + 0x29 + + + + .debug_abbrev + 0xd720 + 0xd720 + 0x29 + + + + .debug_abbrev + 0xd749 + 0xd749 + 0x78 + + + + .debug_abbrev + 0xd7c1 + 0xd7c1 + 0x86 + + + + .debug_abbrev + 0xd847 + 0xd847 + 0x6a + + + + .debug_abbrev + 0xd8b1 + 0xd8b1 + 0x6a + + + + .debug_abbrev + 0xd91b + 0xd91b + 0x86 + + + + .debug_abbrev + 0xd9a1 + 0xd9a1 + 0x78 + + + + .debug_abbrev + 0xda19 + 0xda19 + 0x78 + + + + .debug_abbrev + 0xda91 + 0xda91 + 0x78 + + + + .debug_abbrev + 0xdb09 + 0xdb09 + 0x87 + + + + .debug_abbrev + 0xdb90 + 0xdb90 + 0x95 + + + + .debug_abbrev + 0xdc25 + 0xdc25 + 0x1e6 + + + + .debug_abbrev + 0xde0b + 0xde0b + 0x29 + + + + .debug_abbrev + 0xde34 + 0xde34 + 0x29 + + + + .debug_abbrev + 0xde5d + 0xde5d + 0x29 + + + + .debug_abbrev + 0xde86 + 0xde86 + 0x86 + + + + .debug_abbrev + 0xdf0c + 0xdf0c + 0x78 + + + + .debug_abbrev + 0xdf84 + 0xdf84 + 0x6a + + + + .debug_abbrev + 0xdfee + 0xdfee + 0x78 + + + + .debug_abbrev + 0xe066 + 0xe066 + 0x78 + + + + .debug_abbrev + 0xe0de + 0xe0de + 0x78 + + + + .debug_abbrev + 0xe156 + 0xe156 + 0x78 + + + + .debug_abbrev + 0xe1ce + 0xe1ce + 0x78 + + + + .debug_abbrev + 0xe246 + 0xe246 + 0x78 + + + + .debug_abbrev + 0xe2be + 0xe2be + 0x87 + + + + .debug_abbrev + 0xe345 + 0xe345 + 0x1ac + + + + .debug_abbrev + 0xe4f1 + 0xe4f1 + 0x29 + + + + .debug_abbrev + 0xe51a + 0xe51a + 0x29 + + + + .debug_abbrev + 0xe543 + 0xe543 + 0x29 + + + + .debug_abbrev + 0xe56c + 0xe56c + 0x78 + + + + .debug_abbrev + 0xe5e4 + 0xe5e4 + 0x86 + + + + .debug_abbrev + 0xe66a + 0xe66a + 0x86 + + + + .debug_abbrev + 0xe6f0 + 0xe6f0 + 0x78 + + + + .debug_abbrev + 0xe768 + 0xe768 + 0x78 + + + + .debug_abbrev + 0xe7e0 + 0xe7e0 + 0x78 + + + + .debug_abbrev + 0xe858 + 0xe858 + 0x78 + + + + .debug_abbrev + 0xe8d0 + 0xe8d0 + 0x78 + + + + .debug_abbrev + 0xe948 + 0xe948 + 0x87 + + + + .debug_abbrev + 0xe9cf + 0xe9cf + 0x196 + + + + .debug_abbrev + 0xeb65 + 0xeb65 + 0x27 + + + + .debug_abbrev + 0xeb8c + 0xeb8c + 0x27 + + + + .debug_abbrev + 0xebb3 + 0xebb3 + 0x27 + + + + .debug_abbrev + 0xebda + 0xebda + 0x27 + + + + .debug_abbrev + 0xec01 + 0xec01 + 0x27 + + + + .debug_abbrev + 0xec28 + 0xec28 + 0x86 + + + + .debug_abbrev + 0xecae + 0xecae + 0x86 + + + + .debug_abbrev + 0xed34 + 0xed34 + 0x95 + + + + .debug_abbrev + 0xedc9 + 0xedc9 + 0x87 + + + + .debug_abbrev + 0xee50 + 0xee50 + 0x87 + + + + .debug_abbrev + 0xeed7 + 0xeed7 + 0x7b + + + + .debug_abbrev + 0xef52 + 0xef52 + 0x61 + + + + .debug_abbrev + 0xefb3 + 0xefb3 + 0x1ac + + + + .debug_abbrev + 0xf15f + 0xf15f + 0x29 + + + + .debug_abbrev + 0xf188 + 0xf188 + 0x29 + + + + .debug_abbrev + 0xf1b1 + 0xf1b1 + 0x29 + + + + .debug_abbrev + 0xf1da + 0xf1da + 0x78 + + + + .debug_abbrev + 0xf252 + 0xf252 + 0x86 + + + + .debug_abbrev + 0xf2d8 + 0xf2d8 + 0x86 + + + + .debug_abbrev + 0xf35e + 0xf35e + 0x86 + + + + .debug_abbrev + 0xf3e4 + 0xf3e4 + 0x78 + + + + .debug_abbrev + 0xf45c + 0xf45c + 0x78 + + + + .debug_abbrev + 0xf4d4 + 0xf4d4 + 0x78 + + + + .debug_abbrev + 0xf54c + 0xf54c + 0x78 + + + + .debug_abbrev + 0xf5c4 + 0xf5c4 + 0x87 + + + + .debug_abbrev + 0xf64b + 0xf64b + 0x87 + + + + .debug_abbrev + 0xf6d2 + 0xf6d2 + 0x87 + + + + .debug_abbrev + 0xf759 + 0xf759 + 0x1ac + + + + .debug_abbrev + 0xf905 + 0xf905 + 0x29 + + + + .debug_abbrev + 0xf92e + 0xf92e + 0x29 + + + + .debug_abbrev + 0xf957 + 0xf957 + 0x29 + + + + .debug_abbrev + 0xf980 + 0xf980 + 0x78 + + + + .debug_abbrev + 0xf9f8 + 0xf9f8 + 0x86 + + + + .debug_abbrev + 0xfa7e + 0xfa7e + 0x86 + + + + .debug_abbrev + 0xfb04 + 0xfb04 + 0x86 + + + + .debug_abbrev + 0xfb8a + 0xfb8a + 0x86 + + + + .debug_abbrev + 0xfc10 + 0xfc10 + 0x78 + + + + .debug_abbrev + 0xfc88 + 0xfc88 + 0x78 + + + + .debug_abbrev + 0xfd00 + 0xfd00 + 0x78 + + + + .debug_abbrev + 0xfd78 + 0xfd78 + 0x87 + + + + .debug_abbrev + 0xfdff + 0xfdff + 0x87 + + + + .debug_abbrev + 0xfe86 + 0xfe86 + 0x5b + + + + .debug_abbrev + 0xfee1 + 0xfee1 + 0x27 + + + + .debug_abbrev + 0xff08 + 0xff08 + 0x6e + + + + .debug_abbrev + 0xff76 + 0xff76 + 0x6e + + + + .debug_abbrev + 0xffe4 + 0xffe4 + 0x7c + + + + .debug_abbrev + 0x10060 + 0x10060 + 0x7c + + + + .debug_abbrev + 0x100dc + 0x100dc + 0x6e + + + + .debug_abbrev + 0x1014a + 0x1014a + 0x7c + + + + .debug_abbrev + 0x101c6 + 0x101c6 + 0x6e + + + + .debug_abbrev + 0x10234 + 0x10234 + 0x7c + + + + .debug_abbrev + 0x102b0 + 0x102b0 + 0x6e + + + + .debug_abbrev + 0x1031e + 0x1031e + 0x6e + + + + .debug_abbrev + 0x1038c + 0x1038c + 0x3a + + + + .debug_abbrev + 0x103c6 + 0x103c6 + 0x64 + + + + .debug_abbrev + 0x1042a + 0x1042a + 0x40 + + + + .debug_abbrev + 0x1046a + 0x1046a + 0x7c + + + + .debug_abbrev + 0x104e6 + 0x104e6 + 0x7c + + + + .debug_abbrev + 0x10562 + 0x10562 + 0x7c + + + + .debug_abbrev + 0x105de + 0x105de + 0x7c + + + + .debug_abbrev + 0x1065a + 0x1065a + 0x6e + + + + .debug_abbrev + 0x106c8 + 0x106c8 + 0x7c + + + + .debug_abbrev + 0x10744 + 0x10744 + 0x6e + + + + .debug_abbrev + 0x107b2 + 0x107b2 + 0x40 + + + + .debug_abbrev + 0x107f2 + 0x107f2 + 0x27 + + + + .debug_abbrev + 0x10819 + 0x10819 + 0x52 + + + + .debug_abbrev + 0x1086b + 0x1086b + 0x52 + + + + .debug_abbrev + 0x108bd + 0x108bd + 0x152 + + + + .debug_abbrev + 0x10a0f + 0x10a0f + 0x29 + + + + .debug_abbrev + 0x10a38 + 0x10a38 + 0x29 + + + + .debug_abbrev + 0x10a61 + 0x10a61 + 0x29 + + + + .debug_abbrev + 0x10a8a + 0x10a8a + 0x29 + + + + .debug_abbrev + 0x10ab3 + 0x10ab3 + 0x29 + + + + .debug_abbrev + 0x10adc + 0x10adc + 0x29 + + + + .debug_abbrev + 0x10b05 + 0x10b05 + 0x7b + + + + .debug_abbrev + 0x10b80 + 0x10b80 + 0x7b + + + + .debug_abbrev + 0x10bfb + 0x10bfb + 0x65 + + + + .debug_abbrev + 0x10c60 + 0x10c60 + 0x65 + + + + .debug_abbrev + 0x10cc5 + 0x10cc5 + 0xc4 + + + + .debug_abbrev + 0x10d89 + 0x10d89 + 0x24 + + + + .debug_abbrev + 0x10dad + 0x10dad + 0x85 + + + + .debug_abbrev + 0x10e32 + 0x10e32 + 0x123 + + + + .debug_abbrev + 0x10f55 + 0x10f55 + 0x29 + + + + .debug_abbrev + 0x10f7e + 0x10f7e + 0x29 + + + + .debug_abbrev + 0x10fa7 + 0x10fa7 + 0x5f + + + + .debug_abbrev + 0x11006 + 0x11006 + 0x24 + + + + .debug_abbrev + 0x1102a + 0x1102a + 0x97 + + + + .debug_abbrev + 0x110c1 + 0x110c1 + 0xca + + + + .debug_abbrev + 0x1118b + 0x1118b + 0x80 + + + + .debug_abbrev + 0x1120b + 0x1120b + 0x72 + + + + .debug_abbrev + 0x1127d + 0x1127d + 0x4e + + + + .debug_abbrev + 0x112cb + 0x112cb + 0x40 + + + + .debug_abbrev + 0x1130b + 0x1130b + 0x6f + + + + .debug_abbrev + 0x1137a + 0x1137a + 0x24 + + + + .debug_abbrev + 0x1139e + 0x1139e + 0x35 + + + + .debug_abbrev + 0x113d3 + 0x113d3 + 0x24 + + + + .debug_abbrev + 0x113f7 + 0x113f7 + 0x40 + + + + .debug_abbrev + 0x11437 + 0x11437 + 0x74 + + + + .debug_abbrev + 0x114ab + 0x114ab + 0x24 + + + + .debug_abbrev + 0x114cf + 0x114cf + 0x28 + + + + .debug_abbrev + 0x114f7 + 0x114f7 + 0x40 + + + + .debug_abbrev + 0x11537 + 0x11537 + 0x6f + + + + .debug_abbrev + 0x115a6 + 0x115a6 + 0x24 + + + + .debug_abbrev + 0x115ca + 0x115ca + 0x58 + + + + .debug_abbrev + 0x11622 + 0x11622 + 0x64 + + + + .debug_abbrev + 0x11686 + 0x11686 + 0x3c + + + + .debug_abbrev + 0x116c2 + 0x116c2 + 0x3c + + + + .debug_abbrev + 0x116fe + 0x116fe + 0x3c + + + + .debug_abbrev + 0x1173a + 0x1173a + 0x3c + + + + .debug_abbrev + 0x11776 + 0x11776 + 0x3c + + + + .debug_abbrev + 0x117b2 + 0x117b2 + 0x71 + + + + .debug_abbrev + 0x11823 + 0x11823 + 0xc5 + + + + .debug_abbrev + 0x118e8 + 0x118e8 + 0x6f + + + + .debug_abbrev + 0x11957 + 0x11957 + 0x4b + + + + .debug_abbrev + 0x119a2 + 0x119a2 + 0x29 + + + + .debug_abbrev + 0x119cb + 0x119cb + 0x58 + + + + .debug_abbrev + 0x11a23 + 0x11a23 + 0x50 + + + + .debug_abbrev + 0x11a73 + 0x11a73 + 0xcb + + + + .debug_abbrev + 0x11b3e + 0x11b3e + 0x7e + + + + .debug_abbrev + 0x11bbc + 0x11bbc + 0x24 + + + + .debug_abbrev + 0x11be0 + 0x11be0 + 0x24 + + + + .debug_abbrev + 0x11c04 + 0x11c04 + 0x24 + + + + .debug_abbrev + 0x11c28 + 0x11c28 + 0x4b + + + + .debug_abbrev + 0x11c73 + 0x11c73 + 0x46 + + + + .debug_abbrev + 0x11cb9 + 0x11cb9 + 0x29 + + + + .debug_abbrev + 0x11ce2 + 0x11ce2 + 0x29 + + + + .debug_abbrev + 0x11d0b + 0x11d0b + 0x53 + + + + .debug_abbrev + 0x11d5e + 0x11d5e + 0x55 + + + + .debug_abbrev + 0x11db3 + 0x11db3 + 0x78 + + + + .debug_abbrev + 0x11e2b + 0x11e2b + 0x29 + + + + .debug_abbrev + 0x11e54 + 0x11e54 + 0x45 + + + + .debug_abbrev + 0x11e99 + 0x11e99 + 0x8c + + + + .debug_abbrev + 0x11f25 + 0x11f25 + 0x33 + + + + .debug_abbrev + 0x11f58 + 0x11f58 + 0x29 + + + + .debug_abbrev + 0x11f81 + 0x11f81 + 0x29 + + + + .debug_abbrev + 0x11faa + 0x11faa + 0x3e + + + + .debug_abbrev + 0x11fe8 + 0x11fe8 + 0x29 + + + + .debug_abbrev + 0x12011 + 0x12011 + 0x29 + + + + .debug_abbrev + 0x1203a + 0x1203a + 0x53 + + + + .debug_abbrev + 0x1208d + 0x1208d + 0xb6 + + + + .debug_abbrev + 0x12143 + 0x12143 + 0x7f + + + + .debug_abbrev + 0x121c2 + 0x121c2 + 0x8e + + + + .debug_abbrev + 0x12250 + 0x12250 + 0xbf + + + + .debug_abbrev + 0x1230f + 0x1230f + 0x8e + + + + .debug_abbrev + 0x1239d + 0x1239d + 0x7c + + + + .debug_abbrev + 0x12419 + 0x12419 + 0x7f + + + + .debug_abbrev + 0x12498 + 0x12498 + 0x5c + + + + .debug_abbrev + 0x124f4 + 0x124f4 + 0xbd + + + + .debug_abbrev + 0x125b1 + 0x125b1 + 0x29 + + + + .debug_abbrev + 0x125da + 0x125da + 0x27 + + + + .debug_abbrev + 0x12601 + 0x12601 + 0x27 + + + + .debug_abbrev + 0x12628 + 0x12628 + 0x76 + + + + .debug_abbrev + 0x1269e + 0x1269e + 0x61 + + + + .debug_abbrev + 0x126ff + 0x126ff + 0x6d + + + + .debug_abbrev + 0x1276c + 0x1276c + 0x6d + + + + .debug_abbrev + 0x127d9 + 0x127d9 + 0x8c + + + + .debug_abbrev + 0x12865 + 0x12865 + 0x7b + + + + .debug_abbrev + 0x128e0 + 0x128e0 + 0x8e + + + + .debug_abbrev + 0x1296e + 0x1296e + 0x7f + + + + .debug_abbrev + 0x129ed + 0x129ed + 0x24 + + + + .debug_abbrev + 0x12a11 + 0x12a11 + 0x3c + + + + .debug_abbrev + 0x12a4d + 0x12a4d + 0x8c + + + + .debug_abbrev + 0x12ad9 + 0x12ad9 + 0x8e + + + + .debug_abbrev + 0x12b67 + 0x12b67 + 0x24 + + + + .debug_abbrev + 0x12b8b + 0x12b8b + 0x83 + + + + .debug_abbrev + 0x12c0e + 0x12c0e + 0x8e + + + + .debug_abbrev + 0x12c9c + 0x12c9c + 0x5a + + + + .debug_abbrev + 0x12cf6 + 0x12cf6 + 0x7a + + + + .debug_abbrev + 0x12d70 + 0x12d70 + 0x29 + + + + .debug_abbrev + 0x12d99 + 0x12d99 + 0x29 + + + + .debug_abbrev + 0x12dc2 + 0x12dc2 + 0x95 + + + + .debug_abbrev + 0x12e57 + 0x12e57 + 0x8e + + + + .debug_abbrev + 0x12ee5 + 0x12ee5 + 0x95 + + + + .debug_abbrev + 0x12f7a + 0x12f7a + 0x8e + + + + .debug_abbrev + 0x13008 + 0x13008 + 0xcc + + + + .debug_abbrev + 0x130d4 + 0x130d4 + 0x8e + + + + .debug_abbrev + 0x13162 + 0x13162 + 0x9e + + + + .debug_abbrev + 0x13200 + 0x13200 + 0x8e + + + + .debug_abbrev + 0x1328e + 0x1328e + 0xd5 + + + + .debug_abbrev + 0x13363 + 0x13363 + 0x8e + + + + .debug_abbrev + 0x133f1 + 0x133f1 + 0xb6 + + + + .debug_abbrev + 0x134a7 + 0x134a7 + 0x8e + + + + .debug_abbrev + 0x13535 + 0x13535 + 0x9e + + + + .debug_abbrev + 0x135d3 + 0x135d3 + 0x8e + + + + .debug_abbrev + 0x13661 + 0x13661 + 0x5b + + + + .debug_abbrev + 0x136bc + 0x136bc + 0x29 + + + + .debug_abbrev + 0x136e5 + 0x136e5 + 0x6f + + + + .debug_abbrev + 0x13754 + 0x13754 + 0x6f + + + + .debug_abbrev + 0x137c3 + 0x137c3 + 0x40 + + + + .debug_abbrev + 0x13803 + 0x13803 + 0x71 + + + + .debug_abbrev + 0x13874 + 0x13874 + 0x50 + + + + .debug_abbrev + 0x138c4 + 0x138c4 + 0x71 + + + + .debug_abbrev + 0x13935 + 0x13935 + 0x40 + + + + .debug_abbrev + 0x13975 + 0x13975 + 0x71 + + + + .debug_abbrev + 0x139e6 + 0x139e6 + 0xb4 + + + + .debug_abbrev + 0x13a9a + 0x13a9a + 0x8e + + + + .debug_abbrev + 0x13b28 + 0x13b28 + 0x6f + + + + .debug_abbrev + 0x13b97 + 0x13b97 + 0xb6 + + + + .debug_abbrev + 0x13c4d + 0x13c4d + 0x8e + + + + .debug_abbrev + 0x13cdb + 0x13cdb + 0x8a + + + + .debug_abbrev + 0x13d65 + 0x13d65 + 0x8e + + + + .debug_abbrev + 0x13df3 + 0x13df3 + 0xc3 + + + + .debug_abbrev + 0x13eb6 + 0x13eb6 + 0x7f + + + + .debug_abbrev + 0x13f35 + 0x13f35 + 0x7f + + + + .debug_abbrev + 0x13fb4 + 0x13fb4 + 0x49 + + + + .debug_abbrev + 0x13ffd + 0x13ffd + 0x24 + + + + .debug_abbrev + 0x14021 + 0x14021 + 0x81 + + + + .debug_abbrev + 0x140a2 + 0x140a2 + 0x84 + + + + .debug_abbrev + 0x14126 + 0x14126 + 0x7d + + + + .debug_abbrev + 0x141a3 + 0x141a3 + 0x6f + + + + .debug_abbrev + 0x14212 + 0x14212 + 0xad + + + + .debug_abbrev + 0x142bf + 0x142bf + 0x7d + + + + .debug_abbrev + 0x1433c + 0x1433c + 0x7d + + + + .debug_abbrev + 0x143b9 + 0x143b9 + 0x8a + + + + .debug_abbrev + 0x14443 + 0x14443 + 0x8e + + + + .debug_abbrev + 0x144d1 + 0x144d1 + 0x49 + + + + .debug_abbrev + 0x1451a + 0x1451a + 0x24 + + + + .debug_abbrev + 0x1453e + 0x1453e + 0x40 + + + + .debug_abbrev + 0x1457e + 0x1457e + 0x71 + + + + .debug_abbrev + 0x145ef + 0x145ef + 0x49 + + + + .debug_abbrev + 0x14638 + 0x14638 + 0x71 + + + + .debug_abbrev + 0x146a9 + 0x146a9 + 0x37 + + + + .debug_abbrev + 0x146e0 + 0x146e0 + 0x71 + + + + .debug_abbrev + 0x14751 + 0x14751 + 0x50 + + + + .debug_abbrev + 0x147a1 + 0x147a1 + 0x71 + + + + .debug_abbrev + 0x14812 + 0x14812 + 0x37 + + + + .debug_abbrev + 0x14849 + 0x14849 + 0x71 + + + + .debug_abbrev + 0x148ba + 0x148ba + 0x50 + + + + .debug_abbrev + 0x1490a + 0x1490a + 0x71 + + + + .debug_abbrev + 0x1497b + 0x1497b + 0xa2 + + + + .debug_abbrev + 0x14a1d + 0x14a1d + 0x8e + + + + .debug_abbrev + 0x14aab + 0x14aab + 0x81 + + + + .debug_abbrev + 0x14b2c + 0x14b2c + 0x7f + + + + .debug_abbrev + 0x14bab + 0x14bab + 0x7d + + + + .debug_abbrev + 0x14c28 + 0x14c28 + 0x6f + + + + .debug_abbrev + 0x14c97 + 0x14c97 + 0x8c + + + + .debug_abbrev + 0x14d23 + 0x14d23 + 0x8e + + + + .debug_abbrev + 0x14db1 + 0x14db1 + 0xf + + + .debug_str + 0x0 + 0x0 + 0x2f5 + + + + .debug_str + 0x2f5 + 0x2f5 + 0x347 + + + + .debug_str + 0x63c + 0x63c + 0x241 + + + + .debug_str + 0x87d + 0x87d + 0x100 + + + + .debug_str + 0x97d + 0x97d + 0x373 + + + + .debug_str + 0xcf0 + 0xcf0 + 0x18d + + + + .debug_str + 0xe7d + 0xe7d + 0x145 + + + + .debug_str + 0xfc2 + 0xfc2 + 0x356 + + + + .debug_str + 0x1318 + 0x1318 + 0x465 + + + + .debug_str + 0x177d + 0x177d + 0x36b + + + + .debug_str + 0x1ae8 + 0x1ae8 + 0x100 + + + + .debug_str + 0x1be8 + 0x1be8 + 0x128 + + + + .debug_str + 0x1d10 + 0x1d10 + 0x24c0 + + + + .debug_str + 0x41d0 + 0x41d0 + 0x1b8 + + + + .debug_str + 0x4388 + 0x4388 + 0x5b9 + + + + .debug_str + 0x4941 + 0x4941 + 0xa8c + + + + .debug_str + 0x53cd + 0x53cd + 0x7c3 + + + + .debug_str + 0x5b90 + 0x5b90 + 0x2b6 + + + + .debug_str + 0x5e46 + 0x5e46 + 0x465 + + + + .debug_str + 0x62ab + 0x62ab + 0x16a + + + + .debug_str + 0x6415 + 0x6415 + 0x4a9 + + + + .debug_str + 0x68be + 0x68be + 0x30a + + + + .debug_str + 0x6bc8 + 0x6bc8 + 0x127 + + + + .debug_str + 0x6cef + 0x6cef + 0x465 + + + + .debug_str + 0x7154 + 0x7154 + 0x2f1 + + + + .debug_str + 0x7445 + 0x7445 + 0x236 + + + + .debug_str + 0x767b + 0x767b + 0x84d + + + + .debug_str + 0x7ec8 + 0x7ec8 + 0x379 + + + + .debug_str + 0x8241 + 0x8241 + 0x137 + + + + .debug_str + 0x8378 + 0x8378 + 0x36b + + + + .debug_str + 0x86e3 + 0x86e3 + 0x1b9 + + + + .debug_str + 0x889c + 0x889c + 0x3a6 + + + + .debug_str + 0x8c42 + 0x8c42 + 0x3a6 + + + + .debug_str + 0x8fe8 + 0x8fe8 + 0x190 + + + + .debug_str + 0x9178 + 0x9178 + 0x268 + + + + .debug_str + 0x93e0 + 0x93e0 + 0x273 + + + + .debug_str + 0x9653 + 0x9653 + 0x218 + + + + .debug_str + 0x986b + 0x986b + 0x30a + + + + .debug_str + 0x9b75 + 0x9b75 + 0x1b9 + + + + .debug_str + 0x9d2e + 0x9d2e + 0x102 + + + + .debug_str + 0x9e30 + 0x9e30 + 0x1685 + + + + .debug_str + 0xb4b5 + 0xb4b5 + 0x1ec + + + + .debug_str + 0xb6a1 + 0xb6a1 + 0x395 + + + + .debug_str + 0xba36 + 0xba36 + 0x7df + + + + .debug_str + 0xc215 + 0xc215 + 0x273 + + + + .debug_str + 0xc488 + 0xc488 + 0x218 + + + + .debug_str + 0xc6a0 + 0xc6a0 + 0xb09 + + + + .debug_str + 0xd1a9 + 0xd1a9 + 0x39a + + + + .debug_str + 0xd543 + 0xd543 + 0x465 + + + + .debug_str + 0xd9a8 + 0xd9a8 + 0x811 + + + + .debug_str + 0xe1b9 + 0xe1b9 + 0x36b + + + + .debug_str + 0xe524 + 0xe524 + 0x33a + + + + .debug_str + 0xe85e + 0xe85e + 0x297 + + + + .debug_str + 0xeaf5 + 0xeaf5 + 0x1d67 + + + + .debug_str + 0x1085c + 0x1085c + 0x8ca + + + + .debug_str + 0x11126 + 0x11126 + 0xb71 + + + + .debug_str + 0x11c97 + 0x11c97 + 0x65f + + + + .debug_str + 0x122f6 + 0x122f6 + 0x564 + + + + .debug_str + 0x1285a + 0x1285a + 0x590 + + + + .debug_str + 0x12dea + 0x12dea + 0x44a + + + + .debug_str + 0x13234 + 0x13234 + 0x6dd + + + + .debug_str + 0x13911 + 0x13911 + 0x379 + + + + .debug_str + 0x13c8a + 0x13c8a + 0x2ea4 + + + + .debug_str + 0x16b2e + 0x16b2e + 0x4a4 + + + + .debug_str + 0x16fd2 + 0x16fd2 + 0x2b75 + + + + .debug_str + 0x19b47 + 0x19b47 + 0x3b9 + + + + .debug_str + 0x19f00 + 0x19f00 + 0xf39 + + + + .debug_str + 0x1ae39 + 0x1ae39 + 0x132 + + + + .debug_str + 0x1af6b + 0x1af6b + 0xb8d + + + + .debug_str + 0x1baf8 + 0x1baf8 + 0x1d0 + + + + .debug_str + 0x1bcc8 + 0x1bcc8 + 0x3ee + + + + .debug_str + 0x1c0b6 + 0x1c0b6 + 0x4c0 + + + + .debug_str + 0x1c576 + 0x1c576 + 0x2a3 + + + + .debug_str + 0x1c819 + 0x1c819 + 0x4a7 + + + + .debug_str + 0x1ccc0 + 0x1ccc0 + 0x282 + + + + .debug_str + 0x1cf42 + 0x1cf42 + 0x21dd + + + + .debug_str + 0x1f11f + 0x1f11f + 0x373 + + + + .debug_str + 0x1f492 + 0x1f492 + 0x200 + + + + .debug_str + 0x1f692 + 0x1f692 + 0x18d + + + + .debug_str + 0x1f81f + 0x1f81f + 0x6c3 + + + + .debug_str + 0x1fee2 + 0x1fee2 + 0x333 + + + + .debug_str + 0x20215 + 0x20215 + 0x13d + + + + .debug_str + 0x20352 + 0x20352 + 0x929 + + + + .debug_str + 0x20c7b + 0x20c7b + 0x956 + + + + .debug_str + 0x215d1 + 0x215d1 + 0xba0 + + + + .debug_str + 0x22171 + 0x22171 + 0x5d5 + + + + .debug_str + 0x22746 + 0x22746 + 0x13a + + + + .debug_str + 0x22880 + 0x22880 + 0x3ef + + + + .debug_str + 0x22c6f + 0x22c6f + 0x1e6 + + + + .debug_str + 0x22e55 + 0x22e55 + 0x677 + + + + .debug_str + 0x234cc + 0x234cc + 0x268 + + + + .debug_str + 0x23734 + 0x23734 + 0x185 + + + + .debug_str + 0x238b9 + 0x238b9 + 0x10f + + + + .debug_str + 0x239c8 + 0x239c8 + 0x236 + + + + .debug_str + 0x23bfe + 0x23bfe + 0xc21 + + + + .debug_str + 0x2481f + 0x2481f + 0x141 + + + + .debug_str + 0x24960 + 0x24960 + 0x2c9 + + + + .debug_str + 0x24c29 + 0x24c29 + 0x141 + + + + .debug_str + 0x24d6a + 0x24d6a + 0x1eb + + + + .debug_str + 0x24f55 + 0x24f55 + 0x129 + + + + .debug_str + 0x2507e + 0x2507e + 0x119 + + + + .debug_str + 0x25197 + 0x25197 + 0x16c + + + + .debug_str + 0x25303 + 0x25303 + 0x159 + + + + .debug_str + 0x2545c + 0x2545c + 0x10c + + + + .debug_str + 0x25568 + 0x25568 + 0x106 + + + + .debug_str + 0x2566e + 0x2566e + 0x168 + + + + .debug_str + 0x257d6 + 0x257d6 + 0xee + + + + .debug_str + 0x258c4 + 0x258c4 + 0x14d + + + + .debug_str + 0x25a11 + 0x25a11 + 0x148 + + + + .debug_str + 0x25b59 + 0x25b59 + 0x198 + + + + .debug_str + 0x25cf1 + 0x25cf1 + 0x16f + + + + .debug_str + 0x25e60 + 0x25e60 + 0x10b + + + + .debug_str + 0x25f6b + 0x25f6b + 0x141 + + + + .debug_str + 0x260ac + 0x260ac + 0xd8 + + + + .debug_str + 0x26184 + 0x26184 + 0x18b + + + + .debug_str + 0x2630f + 0x2630f + 0x111 + + + + .debug_str + 0x26420 + 0x26420 + 0x140 + + + + .debug_str + 0x26560 + 0x26560 + 0x15e + + + + .debug_str + 0x266be + 0x266be + 0xe3 + + + + .debug_aranges + 0x0 + 0x0 + 0x20 + + + + .debug_aranges + 0x20 + 0x20 + 0x20 + + + + .debug_aranges + 0x40 + 0x40 + 0x20 + + + + .debug_aranges + 0x60 + 0x60 + 0x20 + + + + .debug_aranges + 0x80 + 0x80 + 0x20 + + + + .debug_aranges + 0xa0 + 0xa0 + 0x20 + + + + .debug_aranges + 0xc0 + 0xc0 + 0x20 + + + + .debug_aranges + 0xe0 + 0xe0 + 0x20 + + + + .debug_aranges + 0x100 + 0x100 + 0x20 + + + + .debug_aranges + 0x120 + 0x120 + 0x20 + + + + .debug_aranges + 0x140 + 0x140 + 0x20 + + + + .debug_aranges + 0x160 + 0x160 + 0x20 + + + + .debug_aranges + 0x180 + 0x180 + 0x20 + + + + .debug_aranges + 0x1a0 + 0x1a0 + 0x20 + + + + .debug_aranges + 0x1c0 + 0x1c0 + 0x20 + + + + .debug_aranges + 0x1e0 + 0x1e0 + 0x20 + + + + .debug_aranges + 0x200 + 0x200 + 0x20 + + + + .debug_aranges + 0x220 + 0x220 + 0x20 + + + + .debug_aranges + 0x240 + 0x240 + 0x20 + + + + .debug_aranges + 0x260 + 0x260 + 0x20 + + + + .debug_aranges + 0x280 + 0x280 + 0x20 + + + + .debug_aranges + 0x2a0 + 0x2a0 + 0x20 + + + + .debug_aranges + 0x2c0 + 0x2c0 + 0x20 + + + + .debug_aranges + 0x2e0 + 0x2e0 + 0x20 + + + + .debug_aranges + 0x300 + 0x300 + 0x20 + + + + .debug_aranges + 0x320 + 0x320 + 0x20 + + + + .debug_aranges + 0x340 + 0x340 + 0x20 + + + + .debug_aranges + 0x360 + 0x360 + 0x20 + + + + .debug_aranges + 0x380 + 0x380 + 0x20 + + + + .debug_aranges + 0x3a0 + 0x3a0 + 0x20 + + + + .debug_aranges + 0x3c0 + 0x3c0 + 0x20 + + + + .debug_aranges + 0x3e0 + 0x3e0 + 0x20 + + + + .debug_aranges + 0x400 + 0x400 + 0x20 + + + + .debug_aranges + 0x420 + 0x420 + 0x20 + + + + .debug_aranges + 0x440 + 0x440 + 0x20 + + + + .debug_aranges + 0x460 + 0x460 + 0x20 + + + + .debug_aranges + 0x480 + 0x480 + 0x20 + + + + .debug_aranges + 0x4a0 + 0x4a0 + 0x20 + + + + .debug_aranges + 0x4c0 + 0x4c0 + 0x20 + + + + .debug_aranges + 0x4e0 + 0x4e0 + 0x20 + + + + .debug_aranges + 0x500 + 0x500 + 0x20 + + + + .debug_aranges + 0x520 + 0x520 + 0x20 + + + + .debug_aranges + 0x540 + 0x540 + 0x20 + + + + .debug_aranges + 0x560 + 0x560 + 0x20 + + + + .debug_aranges + 0x580 + 0x580 + 0x20 + + + + .debug_aranges + 0x5a0 + 0x5a0 + 0x20 + + + + .debug_aranges + 0x5c0 + 0x5c0 + 0x20 + + + + .debug_aranges + 0x5e0 + 0x5e0 + 0x20 + + + + .debug_aranges + 0x600 + 0x600 + 0x20 + + + + .debug_aranges + 0x620 + 0x620 + 0x20 + + + + .debug_aranges + 0x640 + 0x640 + 0x20 + + + + .debug_aranges + 0x660 + 0x660 + 0x20 + + + + .debug_aranges + 0x680 + 0x680 + 0x20 + + + + .debug_aranges + 0x6a0 + 0x6a0 + 0x20 + + + + .debug_aranges + 0x6c0 + 0x6c0 + 0x20 + + + + .debug_aranges + 0x6e0 + 0x6e0 + 0x20 + + + + .debug_aranges + 0x700 + 0x700 + 0x20 + + + + .debug_aranges + 0x720 + 0x720 + 0x20 + + + + .debug_aranges + 0x740 + 0x740 + 0x20 + + + + .debug_aranges + 0x760 + 0x760 + 0x20 + + + + .debug_aranges + 0x780 + 0x780 + 0x20 + + + + .debug_aranges + 0x7a0 + 0x7a0 + 0x20 + + + + .debug_aranges + 0x7c0 + 0x7c0 + 0x20 + + + + .debug_aranges + 0x7e0 + 0x7e0 + 0x20 + + + + .debug_aranges + 0x800 + 0x800 + 0x20 + + + + .debug_aranges + 0x820 + 0x820 + 0x20 + + + + .debug_aranges + 0x840 + 0x840 + 0x20 + + + + .debug_aranges + 0x860 + 0x860 + 0x20 + + + + .debug_aranges + 0x880 + 0x880 + 0x20 + + + + .debug_aranges + 0x8a0 + 0x8a0 + 0x20 + + + + .debug_aranges + 0x8c0 + 0x8c0 + 0x20 + + + + .debug_aranges + 0x8e0 + 0x8e0 + 0x20 + + + + .debug_aranges + 0x900 + 0x900 + 0x20 + + + + .debug_aranges + 0x920 + 0x920 + 0x20 + + + + .debug_aranges + 0x940 + 0x940 + 0x20 + + + + .debug_aranges + 0x960 + 0x960 + 0x20 + + + + .debug_aranges + 0x980 + 0x980 + 0x20 + + + + .debug_aranges + 0x9a0 + 0x9a0 + 0x20 + + + + .debug_aranges + 0x9c0 + 0x9c0 + 0x20 + + + + .debug_aranges + 0x9e0 + 0x9e0 + 0x20 + + + + .debug_aranges + 0xa00 + 0xa00 + 0x20 + + + + .debug_aranges + 0xa20 + 0xa20 + 0x20 + + + + .debug_aranges + 0xa40 + 0xa40 + 0x20 + + + + .debug_aranges + 0xa60 + 0xa60 + 0x20 + + + + .debug_aranges + 0xa80 + 0xa80 + 0x20 + + + + .debug_aranges + 0xaa0 + 0xaa0 + 0x20 + + + + .debug_aranges + 0xac0 + 0xac0 + 0x20 + + + + .debug_aranges + 0xae0 + 0xae0 + 0x20 + + + + .debug_aranges + 0xb00 + 0xb00 + 0x20 + + + + .debug_aranges + 0xb20 + 0xb20 + 0x20 + + + + .debug_aranges + 0xb40 + 0xb40 + 0x20 + + + + .debug_aranges + 0xb60 + 0xb60 + 0x20 + + + + .debug_aranges + 0xb80 + 0xb80 + 0x20 + + + + .debug_aranges + 0xba0 + 0xba0 + 0x20 + + + + .debug_aranges + 0xbc0 + 0xbc0 + 0x20 + + + + .debug_aranges + 0xbe0 + 0xbe0 + 0x20 + + + + .debug_aranges + 0xc00 + 0xc00 + 0x20 + + + + .debug_aranges + 0xc20 + 0xc20 + 0x20 + + + + .debug_aranges + 0xc40 + 0xc40 + 0x20 + + + + .debug_aranges + 0xc60 + 0xc60 + 0x20 + + + + .debug_aranges + 0xc80 + 0xc80 + 0x20 + + + + .debug_aranges + 0xca0 + 0xca0 + 0x20 + + + + .debug_aranges + 0xcc0 + 0xcc0 + 0x20 + + + + .debug_aranges + 0xce0 + 0xce0 + 0x20 + + + + .debug_aranges + 0xd00 + 0xd00 + 0x20 + + + + .debug_aranges + 0xd20 + 0xd20 + 0x20 + + + + .debug_aranges + 0xd40 + 0xd40 + 0x20 + + + + .debug_aranges + 0xd60 + 0xd60 + 0x20 + + + + .debug_aranges + 0xd80 + 0xd80 + 0x20 + + + + .debug_aranges + 0xda0 + 0xda0 + 0x20 + + + + .debug_aranges + 0xdc0 + 0xdc0 + 0x20 + + + + .debug_aranges + 0xde0 + 0xde0 + 0x20 + + + + .debug_aranges + 0xe00 + 0xe00 + 0x20 + + + + .debug_aranges + 0xe20 + 0xe20 + 0x20 + + + + .debug_aranges + 0xe40 + 0xe40 + 0x20 + + + + .debug_aranges + 0xe60 + 0xe60 + 0x20 + + + + .debug_aranges + 0xe80 + 0xe80 + 0x20 + + + + .debug_aranges + 0xea0 + 0xea0 + 0x20 + + + + .debug_aranges + 0xec0 + 0xec0 + 0x20 + + + + .debug_aranges + 0xee0 + 0xee0 + 0x20 + + + + .debug_aranges + 0xf00 + 0xf00 + 0x20 + + + + .debug_aranges + 0xf20 + 0xf20 + 0x20 + + + + .debug_aranges + 0xf40 + 0xf40 + 0x20 + + + + .debug_aranges + 0xf60 + 0xf60 + 0x20 + + + + .debug_aranges + 0xf80 + 0xf80 + 0x20 + + + + .debug_aranges + 0xfa0 + 0xfa0 + 0x20 + + + + .debug_aranges + 0xfc0 + 0xfc0 + 0x20 + + + + .debug_aranges + 0xfe0 + 0xfe0 + 0x20 + + + + .debug_aranges + 0x1000 + 0x1000 + 0x20 + + + + .debug_aranges + 0x1020 + 0x1020 + 0x20 + + + + .debug_aranges + 0x1040 + 0x1040 + 0x20 + + + + .debug_aranges + 0x1060 + 0x1060 + 0x20 + + + + .debug_aranges + 0x1080 + 0x1080 + 0x20 + + + + .debug_aranges + 0x10a0 + 0x10a0 + 0x20 + + + + .debug_aranges + 0x10c0 + 0x10c0 + 0x20 + + + + .debug_aranges + 0x10e0 + 0x10e0 + 0x20 + + + + .debug_aranges + 0x1100 + 0x1100 + 0x20 + + + + .debug_aranges + 0x1120 + 0x1120 + 0x20 + + + + .debug_aranges + 0x1140 + 0x1140 + 0x20 + + + + .debug_aranges + 0x1160 + 0x1160 + 0x20 + + + + .debug_aranges + 0x1180 + 0x1180 + 0x20 + + + + .debug_aranges + 0x11a0 + 0x11a0 + 0x20 + + + + .debug_aranges + 0x11c0 + 0x11c0 + 0x20 + + + + .debug_aranges + 0x11e0 + 0x11e0 + 0x20 + + + + .debug_aranges + 0x1200 + 0x1200 + 0x20 + + + + .debug_aranges + 0x1220 + 0x1220 + 0x20 + + + + .debug_aranges + 0x1240 + 0x1240 + 0x20 + + + + .debug_aranges + 0x1260 + 0x1260 + 0x20 + + + + .debug_aranges + 0x1280 + 0x1280 + 0x20 + + + + .debug_aranges + 0x12a0 + 0x12a0 + 0x20 + + + + .debug_aranges + 0x12c0 + 0x12c0 + 0x20 + + + + .debug_aranges + 0x12e0 + 0x12e0 + 0x20 + + + + .debug_aranges + 0x1300 + 0x1300 + 0x20 + + + + .debug_aranges + 0x1320 + 0x1320 + 0x20 + + + + .debug_aranges + 0x1340 + 0x1340 + 0x20 + + + + .debug_aranges + 0x1360 + 0x1360 + 0x20 + + + + .debug_aranges + 0x1380 + 0x1380 + 0x20 + + + + .debug_aranges + 0x13a0 + 0x13a0 + 0x20 + + + + .debug_aranges + 0x13c0 + 0x13c0 + 0x20 + + + + .debug_aranges + 0x13e0 + 0x13e0 + 0x20 + + + + .debug_aranges + 0x1400 + 0x1400 + 0x20 + + + + .debug_aranges + 0x1420 + 0x1420 + 0x20 + + + + .debug_aranges + 0x1440 + 0x1440 + 0x20 + + + + .debug_aranges + 0x1460 + 0x1460 + 0x20 + + + + .debug_aranges + 0x1480 + 0x1480 + 0x20 + + + + .debug_aranges + 0x14a0 + 0x14a0 + 0x20 + + + + .debug_aranges + 0x14c0 + 0x14c0 + 0x20 + + + + .debug_aranges + 0x14e0 + 0x14e0 + 0x20 + + + + .debug_aranges + 0x1500 + 0x1500 + 0x20 + + + + .debug_aranges + 0x1520 + 0x1520 + 0x20 + + + + .debug_aranges + 0x1540 + 0x1540 + 0x20 + + + + .debug_aranges + 0x1560 + 0x1560 + 0x20 + + + + .debug_aranges + 0x1580 + 0x1580 + 0x20 + + + + .debug_aranges + 0x15a0 + 0x15a0 + 0x20 + + + + .debug_aranges + 0x15c0 + 0x15c0 + 0x20 + + + + .debug_aranges + 0x15e0 + 0x15e0 + 0x20 + + + + .debug_aranges + 0x1600 + 0x1600 + 0x20 + + + + .debug_aranges + 0x1620 + 0x1620 + 0x20 + + + + .debug_aranges + 0x1640 + 0x1640 + 0x20 + + + + .debug_aranges + 0x1660 + 0x1660 + 0x20 + + + + .debug_aranges + 0x1680 + 0x1680 + 0x20 + + + + .debug_aranges + 0x16a0 + 0x16a0 + 0x20 + + + + .debug_aranges + 0x16c0 + 0x16c0 + 0x20 + + + + .debug_aranges + 0x16e0 + 0x16e0 + 0x20 + + + + .debug_aranges + 0x1700 + 0x1700 + 0x20 + + + + .debug_aranges + 0x1720 + 0x1720 + 0x20 + + + + .debug_aranges + 0x1740 + 0x1740 + 0x20 + + + + .debug_aranges + 0x1760 + 0x1760 + 0x20 + + + + .debug_aranges + 0x1780 + 0x1780 + 0x20 + + + + .debug_aranges + 0x17a0 + 0x17a0 + 0x20 + + + + .debug_aranges + 0x17c0 + 0x17c0 + 0x20 + + + + .debug_aranges + 0x17e0 + 0x17e0 + 0x20 + + + + .debug_aranges + 0x1800 + 0x1800 + 0x20 + + + + .debug_aranges + 0x1820 + 0x1820 + 0x20 + + + + .debug_aranges + 0x1840 + 0x1840 + 0x20 + + + + .debug_aranges + 0x1860 + 0x1860 + 0x20 + + + + .debug_aranges + 0x1880 + 0x1880 + 0x20 + + + + .debug_aranges + 0x18a0 + 0x18a0 + 0x20 + + + + .debug_aranges + 0x18c0 + 0x18c0 + 0x20 + + + + .debug_aranges + 0x18e0 + 0x18e0 + 0x20 + + + + .debug_aranges + 0x1900 + 0x1900 + 0x20 + + + + .debug_aranges + 0x1920 + 0x1920 + 0x20 + + + + .debug_aranges + 0x1940 + 0x1940 + 0x20 + + + + .debug_aranges + 0x1960 + 0x1960 + 0x20 + + + + .debug_aranges + 0x1980 + 0x1980 + 0x20 + + + + .debug_aranges + 0x19a0 + 0x19a0 + 0x20 + + + + .debug_aranges + 0x19c0 + 0x19c0 + 0x20 + + + + .debug_aranges + 0x19e0 + 0x19e0 + 0x20 + + + + .debug_aranges + 0x1a00 + 0x1a00 + 0x20 + + + + .debug_aranges + 0x1a20 + 0x1a20 + 0x20 + + + + .debug_aranges + 0x1a40 + 0x1a40 + 0x20 + + + + .debug_aranges + 0x1a60 + 0x1a60 + 0x20 + + + + .debug_aranges + 0x1a80 + 0x1a80 + 0x20 + + + + .debug_aranges + 0x1aa0 + 0x1aa0 + 0x20 + + + + .debug_aranges + 0x1ac0 + 0x1ac0 + 0x20 + + + + .debug_aranges + 0x1ae0 + 0x1ae0 + 0x20 + + + + .debug_aranges + 0x1b00 + 0x1b00 + 0x20 + + + + .debug_aranges + 0x1b20 + 0x1b20 + 0x20 + + + + .debug_aranges + 0x1b40 + 0x1b40 + 0x20 + + + + .debug_aranges + 0x1b60 + 0x1b60 + 0x20 + + + + .debug_aranges + 0x1b80 + 0x1b80 + 0x20 + + + + .debug_aranges + 0x1ba0 + 0x1ba0 + 0x20 + + + + .debug_aranges + 0x1bc0 + 0x1bc0 + 0x20 + + + + .debug_aranges + 0x1be0 + 0x1be0 + 0x20 + + + + .debug_aranges + 0x1c00 + 0x1c00 + 0x20 + + + + .debug_aranges + 0x1c20 + 0x1c20 + 0x20 + + + + .debug_aranges + 0x1c40 + 0x1c40 + 0x20 + + + + .debug_aranges + 0x1c60 + 0x1c60 + 0x20 + + + + .debug_aranges + 0x1c80 + 0x1c80 + 0x20 + + + + .debug_aranges + 0x1ca0 + 0x1ca0 + 0x20 + + + + .debug_aranges + 0x1cc0 + 0x1cc0 + 0x20 + + + + .debug_aranges + 0x1ce0 + 0x1ce0 + 0x20 + + + + .debug_aranges + 0x1d00 + 0x1d00 + 0x20 + + + + .debug_aranges + 0x1d20 + 0x1d20 + 0x20 + + + + .debug_aranges + 0x1d40 + 0x1d40 + 0x20 + + + + .debug_aranges + 0x1d60 + 0x1d60 + 0x20 + + + + .debug_aranges + 0x1d80 + 0x1d80 + 0x20 + + + + .debug_aranges + 0x1da0 + 0x1da0 + 0x20 + + + + .debug_aranges + 0x1dc0 + 0x1dc0 + 0x20 + + + + .debug_aranges + 0x1de0 + 0x1de0 + 0x20 + + + + .debug_aranges + 0x1e00 + 0x1e00 + 0x20 + + + + .debug_aranges + 0x1e20 + 0x1e20 + 0x20 + + + + .debug_aranges + 0x1e40 + 0x1e40 + 0x20 + + + + .debug_aranges + 0x1e60 + 0x1e60 + 0x20 + + + + .debug_aranges + 0x1e80 + 0x1e80 + 0x20 + + + + .debug_aranges + 0x1ea0 + 0x1ea0 + 0x20 + + + + .debug_aranges + 0x1ec0 + 0x1ec0 + 0x20 + + + + .debug_aranges + 0x1ee0 + 0x1ee0 + 0x20 + + + + .debug_aranges + 0x1f00 + 0x1f00 + 0x20 + + + + .debug_aranges + 0x1f20 + 0x1f20 + 0x20 + + + + .debug_aranges + 0x1f40 + 0x1f40 + 0x20 + + + + .debug_aranges + 0x1f60 + 0x1f60 + 0x20 + + + + .debug_aranges + 0x1f80 + 0x1f80 + 0x20 + + + + .debug_aranges + 0x1fa0 + 0x1fa0 + 0x20 + + + + .debug_aranges + 0x1fc0 + 0x1fc0 + 0x20 + + + + .debug_aranges + 0x1fe0 + 0x1fe0 + 0x20 + + + + .debug_aranges + 0x2000 + 0x2000 + 0x20 + + + + .debug_aranges + 0x2020 + 0x2020 + 0x20 + + + + .debug_aranges + 0x2040 + 0x2040 + 0x20 + + + + .debug_aranges + 0x2060 + 0x2060 + 0x20 + + + + .debug_aranges + 0x2080 + 0x2080 + 0x20 + + + + .debug_aranges + 0x20a0 + 0x20a0 + 0x20 + + + + .debug_aranges + 0x20c0 + 0x20c0 + 0x20 + + + + .debug_aranges + 0x20e0 + 0x20e0 + 0x20 + + + + .debug_aranges + 0x2100 + 0x2100 + 0x20 + + + + .debug_aranges + 0x2120 + 0x2120 + 0x20 + + + + .debug_aranges + 0x2140 + 0x2140 + 0x20 + + + + .debug_aranges + 0x2160 + 0x2160 + 0x20 + + + + .debug_aranges + 0x2180 + 0x2180 + 0x20 + + + + .debug_aranges + 0x21a0 + 0x21a0 + 0x20 + + + + .debug_aranges + 0x21c0 + 0x21c0 + 0x20 + + + + .debug_aranges + 0x21e0 + 0x21e0 + 0x20 + + + + .debug_aranges + 0x2200 + 0x2200 + 0x20 + + + + .debug_aranges + 0x2220 + 0x2220 + 0x20 + + + + .debug_aranges + 0x2240 + 0x2240 + 0x20 + + + + .debug_aranges + 0x2260 + 0x2260 + 0x20 + + + + .debug_aranges + 0x2280 + 0x2280 + 0x20 + + + + .debug_aranges + 0x22a0 + 0x22a0 + 0x20 + + + + .debug_aranges + 0x22c0 + 0x22c0 + 0x20 + + + + .debug_aranges + 0x22e0 + 0x22e0 + 0x20 + + + + .debug_aranges + 0x2300 + 0x2300 + 0x20 + + + + .debug_aranges + 0x2320 + 0x2320 + 0x20 + + + + .debug_aranges + 0x2340 + 0x2340 + 0x20 + + + + .debug_aranges + 0x2360 + 0x2360 + 0x20 + + + + .debug_aranges + 0x2380 + 0x2380 + 0x20 + + + + .debug_aranges + 0x23a0 + 0x23a0 + 0x20 + + + + .debug_aranges + 0x23c0 + 0x23c0 + 0x20 + + + + .debug_aranges + 0x23e0 + 0x23e0 + 0x20 + + + + .debug_aranges + 0x2400 + 0x2400 + 0x20 + + + + .debug_aranges + 0x2420 + 0x2420 + 0x20 + + + + .debug_aranges + 0x2440 + 0x2440 + 0x20 + + + + .debug_aranges + 0x2460 + 0x2460 + 0x20 + + + + .debug_aranges + 0x2480 + 0x2480 + 0x20 + + + + .debug_aranges + 0x24a0 + 0x24a0 + 0x20 + + + + .debug_aranges + 0x24c0 + 0x24c0 + 0x20 + + + + .debug_aranges + 0x24e0 + 0x24e0 + 0x20 + + + + .debug_aranges + 0x2500 + 0x2500 + 0x20 + + + + .debug_aranges + 0x2520 + 0x2520 + 0x20 + + + + .debug_aranges + 0x2540 + 0x2540 + 0x20 + + + + .debug_aranges + 0x2560 + 0x2560 + 0x20 + + + + .debug_aranges + 0x2580 + 0x2580 + 0x20 + + + + .debug_aranges + 0x25a0 + 0x25a0 + 0x20 + + + + .debug_aranges + 0x25c0 + 0x25c0 + 0x20 + + + + .debug_aranges + 0x25e0 + 0x25e0 + 0x20 + + + + .debug_aranges + 0x2600 + 0x2600 + 0x20 + + + + .debug_aranges + 0x2620 + 0x2620 + 0x20 + + + + .debug_aranges + 0x2640 + 0x2640 + 0x20 + + + + .debug_aranges + 0x2660 + 0x2660 + 0x20 + + + + .debug_aranges + 0x2680 + 0x2680 + 0x20 + + + + .debug_aranges + 0x26a0 + 0x26a0 + 0x20 + + + + .debug_aranges + 0x26c0 + 0x26c0 + 0x20 + + + + .debug_aranges + 0x26e0 + 0x26e0 + 0x20 + + + + .debug_aranges + 0x2700 + 0x2700 + 0x20 + + + + .debug_aranges + 0x2720 + 0x2720 + 0x20 + + + + .debug_aranges + 0x2740 + 0x2740 + 0x20 + + + + .debug_aranges + 0x2760 + 0x2760 + 0x20 + + + + .debug_aranges + 0x2780 + 0x2780 + 0x20 + + + + .debug_aranges + 0x27a0 + 0x27a0 + 0x20 + + + + .debug_aranges + 0x27c0 + 0x27c0 + 0x20 + + + + .debug_aranges + 0x27e0 + 0x27e0 + 0x20 + + + + .debug_aranges + 0x2800 + 0x2800 + 0x20 + + + + .debug_aranges + 0x2820 + 0x2820 + 0x20 + + + + .debug_aranges + 0x2840 + 0x2840 + 0x20 + + + + .debug_aranges + 0x2860 + 0x2860 + 0x20 + + + + .debug_aranges + 0x2880 + 0x2880 + 0x20 + + + + .debug_aranges + 0x28a0 + 0x28a0 + 0x20 + + + + .debug_aranges + 0x28c0 + 0x28c0 + 0x20 + + + + .debug_aranges + 0x28e0 + 0x28e0 + 0x20 + + + + .debug_aranges + 0x2900 + 0x2900 + 0x20 + + + + .debug_aranges + 0x2920 + 0x2920 + 0x20 + + + + .debug_aranges + 0x2940 + 0x2940 + 0x20 + + + + .debug_aranges + 0x2960 + 0x2960 + 0x20 + + + + .debug_aranges + 0x2980 + 0x2980 + 0x20 + + + + .debug_aranges + 0x29a0 + 0x29a0 + 0x20 + + + + .debug_aranges + 0x29c0 + 0x29c0 + 0x20 + + + + .debug_aranges + 0x29e0 + 0x29e0 + 0x20 + + + + .debug_aranges + 0x2a00 + 0x2a00 + 0x20 + + + + .debug_aranges + 0x2a20 + 0x2a20 + 0x20 + + + + .debug_aranges + 0x2a40 + 0x2a40 + 0x20 + + + + .debug_aranges + 0x2a60 + 0x2a60 + 0x20 + + + + .debug_aranges + 0x2a80 + 0x2a80 + 0x20 + + + + .debug_aranges + 0x2aa0 + 0x2aa0 + 0x20 + + + + .debug_aranges + 0x2ac0 + 0x2ac0 + 0x20 + + + + .debug_aranges + 0x2ae0 + 0x2ae0 + 0x20 + + + + .debug_aranges + 0x2b00 + 0x2b00 + 0x20 + + + + .debug_aranges + 0x2b20 + 0x2b20 + 0x20 + + + + .debug_aranges + 0x2b40 + 0x2b40 + 0x20 + + + + .debug_aranges + 0x2b60 + 0x2b60 + 0x20 + + + + .debug_aranges + 0x2b80 + 0x2b80 + 0x20 + + + + .debug_aranges + 0x2ba0 + 0x2ba0 + 0x20 + + + + .debug_aranges + 0x2bc0 + 0x2bc0 + 0x20 + + + + .debug_aranges + 0x2be0 + 0x2be0 + 0x20 + + + + .debug_aranges + 0x2c00 + 0x2c00 + 0x20 + + + + .debug_aranges + 0x2c20 + 0x2c20 + 0x20 + + + + .debug_aranges + 0x2c40 + 0x2c40 + 0x20 + + + + .debug_aranges + 0x2c60 + 0x2c60 + 0x20 + + + + .debug_aranges + 0x2c80 + 0x2c80 + 0x20 + + + + .debug_aranges + 0x2ca0 + 0x2ca0 + 0x20 + + + + .debug_aranges + 0x2cc0 + 0x2cc0 + 0x20 + + + + .debug_aranges + 0x2ce0 + 0x2ce0 + 0x20 + + + + .debug_aranges + 0x2d00 + 0x2d00 + 0x20 + + + + .debug_aranges + 0x2d20 + 0x2d20 + 0x20 + + + + .debug_aranges + 0x2d40 + 0x2d40 + 0x20 + + + + .debug_aranges + 0x2d60 + 0x2d60 + 0x20 + + + + .debug_aranges + 0x2d80 + 0x2d80 + 0x20 + + + + .debug_aranges + 0x2da0 + 0x2da0 + 0x20 + + + + .debug_aranges + 0x2dc0 + 0x2dc0 + 0x20 + + + + .debug_aranges + 0x2de0 + 0x2de0 + 0x20 + + + + .debug_aranges + 0x2e00 + 0x2e00 + 0x20 + + + + .debug_aranges + 0x2e20 + 0x2e20 + 0x20 + + + + .debug_aranges + 0x2e40 + 0x2e40 + 0x20 + + + + .debug_aranges + 0x2e60 + 0x2e60 + 0x20 + + + + .debug_aranges + 0x2e80 + 0x2e80 + 0x20 + + + + .debug_aranges + 0x2ea0 + 0x2ea0 + 0x20 + + + + .debug_aranges + 0x2ec0 + 0x2ec0 + 0x20 + + + + .debug_aranges + 0x2ee0 + 0x2ee0 + 0x20 + + + + .debug_aranges + 0x2f00 + 0x2f00 + 0x20 + + + + .debug_aranges + 0x2f20 + 0x2f20 + 0x20 + + + + .debug_aranges + 0x2f40 + 0x2f40 + 0x20 + + + + .debug_aranges + 0x2f60 + 0x2f60 + 0x20 + + + + .debug_aranges + 0x2f80 + 0x2f80 + 0x20 + + + + .debug_aranges + 0x2fa0 + 0x2fa0 + 0x20 + + + + .debug_aranges + 0x2fc0 + 0x2fc0 + 0x20 + + + + .debug_aranges + 0x2fe0 + 0x2fe0 + 0x20 + + + + .debug_aranges + 0x3000 + 0x3000 + 0x20 + + + + .debug_aranges + 0x3020 + 0x3020 + 0x20 + + + + .debug_aranges + 0x3040 + 0x3040 + 0x20 + + + + .debug_aranges + 0x3060 + 0x3060 + 0x20 + + + + .debug_aranges + 0x3080 + 0x3080 + 0x20 + + + + .debug_aranges + 0x30a0 + 0x30a0 + 0x20 + + + + .debug_aranges + 0x30c0 + 0x30c0 + 0x20 + + + + .debug_aranges + 0x30e0 + 0x30e0 + 0x20 + + + + .debug_aranges + 0x3100 + 0x3100 + 0x20 + + + + .debug_aranges + 0x3120 + 0x3120 + 0x20 + + + + .debug_aranges + 0x3140 + 0x3140 + 0x20 + + + + .debug_aranges + 0x3160 + 0x3160 + 0x20 + + + + .debug_aranges + 0x3180 + 0x3180 + 0x20 + + + + .debug_aranges + 0x31a0 + 0x31a0 + 0x20 + + + + .debug_aranges + 0x31c0 + 0x31c0 + 0x20 + + + + .debug_aranges + 0x31e0 + 0x31e0 + 0x20 + + + + .debug_aranges + 0x3200 + 0x3200 + 0x20 + + + + .debug_aranges + 0x3220 + 0x3220 + 0x20 + + + + .debug_aranges + 0x3240 + 0x3240 + 0x20 + + + + .debug_aranges + 0x3260 + 0x3260 + 0x20 + + + + .debug_aranges + 0x3280 + 0x3280 + 0x20 + + + + .debug_aranges + 0x32a0 + 0x32a0 + 0x20 + + + + .debug_aranges + 0x32c0 + 0x32c0 + 0x20 + + + + .debug_aranges + 0x32e0 + 0x32e0 + 0x20 + + + + .debug_aranges + 0x3300 + 0x3300 + 0x20 + + + + .debug_aranges + 0x3320 + 0x3320 + 0x20 + + + + .debug_aranges + 0x3340 + 0x3340 + 0x20 + + + + .debug_aranges + 0x3360 + 0x3360 + 0x20 + + + + .debug_aranges + 0x3380 + 0x3380 + 0x20 + + + + .debug_aranges + 0x33a0 + 0x33a0 + 0x20 + + + + .debug_aranges + 0x33c0 + 0x33c0 + 0x20 + + + + .debug_aranges + 0x33e0 + 0x33e0 + 0x20 + + + + .debug_aranges + 0x3400 + 0x3400 + 0x20 + + + + .debug_aranges + 0x3420 + 0x3420 + 0x20 + + + + .debug_aranges + 0x3440 + 0x3440 + 0x20 + + + + .debug_aranges + 0x3460 + 0x3460 + 0x20 + + + + .debug_aranges + 0x3480 + 0x3480 + 0x20 + + + + .debug_aranges + 0x34a0 + 0x34a0 + 0x20 + + + + .debug_aranges + 0x34c0 + 0x34c0 + 0x20 + + + + .debug_aranges + 0x34e0 + 0x34e0 + 0x20 + + + + .debug_aranges + 0x3500 + 0x3500 + 0x20 + + + + .debug_aranges + 0x3520 + 0x3520 + 0x20 + + + + .debug_aranges + 0x3540 + 0x3540 + 0x20 + + + + .debug_aranges + 0x3560 + 0x3560 + 0x20 + + + + .debug_aranges + 0x3580 + 0x3580 + 0x20 + + + + .debug_aranges + 0x35a0 + 0x35a0 + 0x20 + + + + .debug_aranges + 0x35c0 + 0x35c0 + 0x20 + + + + .debug_aranges + 0x35e0 + 0x35e0 + 0x20 + + + + .debug_aranges + 0x3600 + 0x3600 + 0x20 + + + + .debug_aranges + 0x3620 + 0x3620 + 0x20 + + + + .debug_aranges + 0x3640 + 0x3640 + 0x20 + + + + .debug_aranges + 0x3660 + 0x3660 + 0x20 + + + + .debug_aranges + 0x3680 + 0x3680 + 0x20 + + + + .debug_aranges + 0x36a0 + 0x36a0 + 0x20 + + + + .debug_aranges + 0x36c0 + 0x36c0 + 0x20 + + + + .debug_aranges + 0x36e0 + 0x36e0 + 0x20 + + + + .debug_aranges + 0x3700 + 0x3700 + 0x20 + + + + .debug_aranges + 0x3720 + 0x3720 + 0x20 + + + + .debug_aranges + 0x3740 + 0x3740 + 0x20 + + + + .debug_aranges + 0x3760 + 0x3760 + 0x20 + + + + .debug_aranges + 0x3780 + 0x3780 + 0x20 + + + + .debug_aranges + 0x37a0 + 0x37a0 + 0x20 + + + + .debug_aranges + 0x37c0 + 0x37c0 + 0x20 + + + + .debug_aranges + 0x37e0 + 0x37e0 + 0x20 + + + + .debug_aranges + 0x3800 + 0x3800 + 0x20 + + + + .debug_aranges + 0x3820 + 0x3820 + 0x20 + + + + .debug_aranges + 0x3840 + 0x3840 + 0x20 + + + + .debug_aranges + 0x3860 + 0x3860 + 0x20 + + + + .debug_aranges + 0x3880 + 0x3880 + 0x20 + + + + .debug_aranges + 0x38a0 + 0x38a0 + 0x20 + + + + .debug_aranges + 0x38c0 + 0x38c0 + 0x20 + + + + .debug_aranges + 0x38e0 + 0x38e0 + 0x20 + + + + .debug_aranges + 0x3900 + 0x3900 + 0x20 + + + + .debug_aranges + 0x3920 + 0x3920 + 0x20 + + + + .debug_aranges + 0x3940 + 0x3940 + 0x20 + + + + .debug_aranges + 0x3960 + 0x3960 + 0x20 + + + + .debug_aranges + 0x3980 + 0x3980 + 0x20 + + + + .debug_aranges + 0x39a0 + 0x39a0 + 0x20 + + + + .debug_aranges + 0x39c0 + 0x39c0 + 0x20 + + + + .debug_aranges + 0x39e0 + 0x39e0 + 0x20 + + + + .debug_aranges + 0x3a00 + 0x3a00 + 0x20 + + + + .debug_aranges + 0x3a20 + 0x3a20 + 0x20 + + + + .debug_aranges + 0x3a40 + 0x3a40 + 0x20 + + + + .debug_aranges + 0x3a60 + 0x3a60 + 0x20 + + + + .debug_aranges + 0x3a80 + 0x3a80 + 0x20 + + + + .debug_aranges + 0x3aa0 + 0x3aa0 + 0x20 + + + + .debug_aranges + 0x3ac0 + 0x3ac0 + 0x20 + + + + .debug_aranges + 0x3ae0 + 0x3ae0 + 0x20 + + + + .debug_pubnames + 0x0 + 0x0 + 0x31 + + + + .debug_pubnames + 0x31 + 0x31 + 0x23 + + + + .debug_pubnames + 0x54 + 0x54 + 0x44 + + + + .debug_pubnames + 0x98 + 0x98 + 0x45 + + + + .debug_pubnames + 0xdd + 0xdd + 0x3f + + + + .debug_pubnames + 0x11c + 0x11c + 0x2d + + + + .debug_pubnames + 0x149 + 0x149 + 0x36 + + + + .debug_pubnames + 0x17f + 0x17f + 0x38 + + + + .debug_pubnames + 0x1b7 + 0x1b7 + 0x28 + + + + .debug_pubnames + 0x1df + 0x1df + 0x3d + + + + .debug_pubnames + 0x21c + 0x21c + 0x3f + + + + .debug_pubnames + 0x25b + 0x25b + 0x39 + + + + .debug_pubnames + 0x294 + 0x294 + 0x1f + + + + .debug_pubnames + 0x2b3 + 0x2b3 + 0x30 + + + + .debug_pubnames + 0x2e3 + 0x2e3 + 0x32 + + + + .debug_pubnames + 0x315 + 0x315 + 0x34 + + + + .debug_pubnames + 0x349 + 0x349 + 0x33 + + + + .debug_pubnames + 0x37c + 0x37c + 0x31 + + + + .debug_pubnames + 0x3ad + 0x3ad + 0x33 + + + + .debug_pubnames + 0x3e0 + 0x3e0 + 0x34 + + + + .debug_pubnames + 0x414 + 0x414 + 0x33 + + + + .debug_pubnames + 0x447 + 0x447 + 0x33 + + + + .debug_pubnames + 0x47a + 0x47a + 0x2a + + + + .debug_pubnames + 0x4a4 + 0x4a4 + 0x2d + + + + .debug_pubnames + 0x4d1 + 0x4d1 + 0x26 + + + + .debug_pubnames + 0x4f7 + 0x4f7 + 0x2c + + + + .debug_pubnames + 0x523 + 0x523 + 0x2a + + + + .debug_pubnames + 0x54d + 0x54d + 0x2c + + + + .debug_pubnames + 0x579 + 0x579 + 0x2b + + + + .debug_pubnames + 0x5a4 + 0x5a4 + 0x38 + + + + .debug_pubnames + 0x5dc + 0x5dc + 0x2f + + + + .debug_pubnames + 0x60b + 0x60b + 0x2c + + + + .debug_pubnames + 0x637 + 0x637 + 0x30 + + + + .debug_pubnames + 0x667 + 0x667 + 0x20 + + + + .debug_pubnames + 0x687 + 0x687 + 0x52 + + + + .debug_pubnames + 0x6d9 + 0x6d9 + 0x44 + + + + .debug_pubnames + 0x71d + 0x71d + 0x36 + + + + .debug_pubnames + 0x753 + 0x753 + 0x37 + + + + .debug_pubnames + 0x78a + 0x78a + 0x37 + + + + .debug_pubnames + 0x7c1 + 0x7c1 + 0x38 + + + + .debug_pubnames + 0x7f9 + 0x7f9 + 0x38 + + + + .debug_pubnames + 0x831 + 0x831 + 0x37 + + + + .debug_pubnames + 0x868 + 0x868 + 0x37 + + + + .debug_pubnames + 0x89f + 0x89f + 0x2f + + + + .debug_pubnames + 0x8ce + 0x8ce + 0x2c + + + + .debug_pubnames + 0x8fa + 0x8fa + 0x30 + + + + .debug_pubnames + 0x92a + 0x92a + 0x38 + + + + .debug_pubnames + 0x962 + 0x962 + 0x38 + + + + .debug_pubnames + 0x99a + 0x99a + 0x30 + + + + .debug_pubnames + 0x9ca + 0x9ca + 0x30 + + + + .debug_pubnames + 0x9fa + 0x9fa + 0x2e + + + + .debug_pubnames + 0xa28 + 0xa28 + 0x2e + + + + .debug_pubnames + 0xa56 + 0xa56 + 0x2e + + + + .debug_pubnames + 0xa84 + 0xa84 + 0x2e + + + + .debug_pubnames + 0xab2 + 0xab2 + 0x2d + + + + .debug_pubnames + 0xadf + 0xadf + 0x2d + + + + .debug_pubnames + 0xb0c + 0xb0c + 0x2c + + + + .debug_pubnames + 0xb38 + 0xb38 + 0x33 + + + + .debug_pubnames + 0xb6b + 0xb6b + 0x33 + + + + .debug_pubnames + 0xb9e + 0xb9e + 0x49 + + + + .debug_pubnames + 0xbe7 + 0xbe7 + 0x3b + + + + .debug_pubnames + 0xc22 + 0xc22 + 0x3b + + + + .debug_pubnames + 0xc5d + 0xc5d + 0x48 + + + + .debug_pubnames + 0xca5 + 0xca5 + 0x28 + + + + .debug_pubnames + 0xccd + 0xccd + 0x40 + + + + .debug_pubnames + 0xd0d + 0xd0d + 0x40 + + + + .debug_pubnames + 0xd4d + 0xd4d + 0x3a + + + + .debug_pubnames + 0xd87 + 0xd87 + 0x39 + + + + .debug_pubnames + 0xdc0 + 0xdc0 + 0x48 + + + + .debug_pubnames + 0xe08 + 0xe08 + 0x37 + + + + .debug_pubnames + 0xe3f + 0xe3f + 0x39 + + + + .debug_pubnames + 0xe78 + 0xe78 + 0x43 + + + + .debug_pubnames + 0xebb + 0xebb + 0x28 + + + + .debug_pubnames + 0xee3 + 0xee3 + 0x3f + + + + .debug_pubnames + 0xf22 + 0xf22 + 0x42 + + + + .debug_pubnames + 0xf64 + 0xf64 + 0x42 + + + + .debug_pubnames + 0xfa6 + 0xfa6 + 0x35 + + + + .debug_pubnames + 0xfdb + 0xfdb + 0x22 + + + + .debug_pubnames + 0xffd + 0xffd + 0x23 + + + + .debug_pubnames + 0x1020 + 0x1020 + 0x45 + + + + .debug_pubnames + 0x1065 + 0x1065 + 0x1f + + + + .debug_pubnames + 0x1084 + 0x1084 + 0x3c + + + + .debug_pubnames + 0x10c0 + 0x10c0 + 0x32 + + + + .debug_pubnames + 0x10f2 + 0x10f2 + 0x3f + + + + .debug_pubnames + 0x1131 + 0x1131 + 0x2a + + + + .debug_pubnames + 0x115b + 0x115b + 0x3c + + + + .debug_pubnames + 0x1197 + 0x1197 + 0x31 + + + + .debug_pubnames + 0x11c8 + 0x11c8 + 0x28 + + + + .debug_pubnames + 0x11f0 + 0x11f0 + 0x2b + + + + .debug_pubnames + 0x121b + 0x121b + 0x29 + + + + .debug_pubnames + 0x1244 + 0x1244 + 0x26 + + + + .debug_pubnames + 0x126a + 0x126a + 0x2b + + + + .debug_pubnames + 0x1295 + 0x1295 + 0x28 + + + + .debug_pubnames + 0x12bd + 0x12bd + 0x28 + + + + .debug_pubnames + 0x12e5 + 0x12e5 + 0x39 + + + + .debug_pubnames + 0x131e + 0x131e + 0x3e + + + + .debug_pubnames + 0x135c + 0x135c + 0x3e + + + + .debug_pubnames + 0x139a + 0x139a + 0x37 + + + + .debug_pubnames + 0x13d1 + 0x13d1 + 0x3f + + + + .debug_pubnames + 0x1410 + 0x1410 + 0x43 + + + + .debug_pubnames + 0x1453 + 0x1453 + 0x45 + + + + .debug_pubnames + 0x1498 + 0x1498 + 0x46 + + + + .debug_pubnames + 0x14de + 0x14de + 0x43 + + + + .debug_pubnames + 0x1521 + 0x1521 + 0x49 + + + + .debug_pubnames + 0x156a + 0x156a + 0x3d + + + + .debug_pubnames + 0x15a7 + 0x15a7 + 0x3f + + + + .debug_pubnames + 0x15e6 + 0x15e6 + 0x43 + + + + .debug_pubnames + 0x1629 + 0x1629 + 0x41 + + + + .debug_pubnames + 0x166a + 0x166a + 0x41 + + + + .debug_pubnames + 0x16ab + 0x16ab + 0x43 + + + + .debug_pubnames + 0x16ee + 0x16ee + 0x46 + + + + .debug_pubnames + 0x1734 + 0x1734 + 0x41 + + + + .debug_pubnames + 0x1775 + 0x1775 + 0x44 + + + + .debug_pubnames + 0x17b9 + 0x17b9 + 0x3f + + + + .debug_pubnames + 0x17f8 + 0x17f8 + 0x43 + + + + .debug_pubnames + 0x183b + 0x183b + 0x42 + + + + .debug_pubnames + 0x187d + 0x187d + 0x41 + + + + .debug_pubnames + 0x18be + 0x18be + 0x43 + + + + .debug_pubnames + 0x1901 + 0x1901 + 0x35 + + + + .debug_pubnames + 0x1936 + 0x1936 + 0x31 + + + + .debug_pubnames + 0x1967 + 0x1967 + 0x34 + + + + .debug_pubnames + 0x199b + 0x199b + 0x2d + + + + .debug_pubnames + 0x19c8 + 0x19c8 + 0x38 + + + + .debug_pubnames + 0x1a00 + 0x1a00 + 0x26 + + + + .debug_pubnames + 0x1a26 + 0x1a26 + 0x1f + + + + .debug_pubnames + 0x1a45 + 0x1a45 + 0x2c + + + + .debug_pubnames + 0x1a71 + 0x1a71 + 0x20 + + + + .debug_pubnames + 0x1a91 + 0x1a91 + 0x21 + + + + .debug_pubnames + 0x1ab2 + 0x1ab2 + 0x28 + + + + .debug_pubnames + 0x1ada + 0x1ada + 0x29 + + + + .debug_pubnames + 0x1b03 + 0x1b03 + 0x2e + + + + .debug_pubnames + 0x1b31 + 0x1b31 + 0x29 + + + + .debug_pubnames + 0x1b5a + 0x1b5a + 0x26 + + + + .debug_pubnames + 0x1b80 + 0x1b80 + 0x2c + + + + .debug_pubnames + 0x1bac + 0x1bac + 0x28 + + + + .debug_pubnames + 0x1bd4 + 0x1bd4 + 0x2a + + + + .debug_pubnames + 0x1bfe + 0x1bfe + 0x29 + + + + .debug_pubnames + 0x1c27 + 0x1c27 + 0x25 + + + + .debug_pubnames + 0x1c4c + 0x1c4c + 0x24 + + + + .debug_pubnames + 0x1c70 + 0x1c70 + 0x22 + + + + .debug_pubnames + 0x1c92 + 0x1c92 + 0x25 + + + + .debug_pubnames + 0x1cb7 + 0x1cb7 + 0x27 + + + + .debug_pubnames + 0x1cde + 0x1cde + 0x29 + + + + .debug_pubnames + 0x1d07 + 0x1d07 + 0x28 + + + + .debug_pubnames + 0x1d2f + 0x1d2f + 0x2d + + + + .debug_pubnames + 0x1d5c + 0x1d5c + 0x2b + + + + .debug_pubnames + 0x1d87 + 0x1d87 + 0x2a + + + + .debug_pubnames + 0x1db1 + 0x1db1 + 0x2f + + + + .debug_pubnames + 0x1de0 + 0x1de0 + 0x28 + + + + .debug_pubnames + 0x1e08 + 0x1e08 + 0x27 + + + + .debug_pubnames + 0x1e2f + 0x1e2f + 0x28 + + + + .debug_pubnames + 0x1e57 + 0x1e57 + 0x2f + + + + .debug_pubnames + 0x1e86 + 0x1e86 + 0x34 + + + + .debug_pubnames + 0x1eba + 0x1eba + 0x35 + + + + .debug_pubnames + 0x1eef + 0x1eef + 0x36 + + + + .debug_pubnames + 0x1f25 + 0x1f25 + 0x29 + + + + .debug_pubnames + 0x1f4e + 0x1f4e + 0x21 + + + + .debug_pubnames + 0x1f6f + 0x1f6f + 0x22 + + + + .debug_pubnames + 0x1f91 + 0x1f91 + 0x2c + + + + .debug_pubnames + 0x1fbd + 0x1fbd + 0x2d + + + + .debug_pubnames + 0x1fea + 0x1fea + 0x24 + + + + .debug_pubnames + 0x200e + 0x200e + 0x25 + + + + .debug_pubnames + 0x2033 + 0x2033 + 0x25 + + + + .debug_pubnames + 0x2058 + 0x2058 + 0x25 + + + + .debug_pubnames + 0x207d + 0x207d + 0x25 + + + + .debug_pubnames + 0x20a2 + 0x20a2 + 0x25 + + + + .debug_pubnames + 0x20c7 + 0x20c7 + 0x27 + + + + .debug_pubnames + 0x20ee + 0x20ee + 0x23 + + + + .debug_pubnames + 0x2111 + 0x2111 + 0x20 + + + + .debug_pubnames + 0x2131 + 0x2131 + 0x28 + + + + .debug_pubnames + 0x2159 + 0x2159 + 0x29 + + + + .debug_pubnames + 0x2182 + 0x2182 + 0x29 + + + + .debug_pubnames + 0x21ab + 0x21ab + 0x29 + + + + .debug_pubnames + 0x21d4 + 0x21d4 + 0x29 + + + + .debug_pubnames + 0x21fd + 0x21fd + 0x29 + + + + .debug_pubnames + 0x2226 + 0x2226 + 0x2b + + + + .debug_pubnames + 0x2251 + 0x2251 + 0x27 + + + + .debug_pubnames + 0x2278 + 0x2278 + 0x27 + + + + .debug_pubnames + 0x229f + 0x229f + 0x23 + + + + .debug_pubnames + 0x22c2 + 0x22c2 + 0x24 + + + + .debug_pubnames + 0x22e6 + 0x22e6 + 0x26 + + + + .debug_pubnames + 0x230c + 0x230c + 0x22 + + + + .debug_pubnames + 0x232e + 0x232e + 0x24 + + + + .debug_pubnames + 0x2352 + 0x2352 + 0x25 + + + + .debug_pubnames + 0x2377 + 0x2377 + 0x27 + + + + .debug_pubnames + 0x239e + 0x239e + 0x23 + + + + .debug_pubnames + 0x23c1 + 0x23c1 + 0x26 + + + + .debug_pubnames + 0x23e7 + 0x23e7 + 0x24 + + + + .debug_pubnames + 0x240b + 0x240b + 0x2b + + + + .debug_pubnames + 0x2436 + 0x2436 + 0x29 + + + + .debug_pubnames + 0x245f + 0x245f + 0x29 + + + + .debug_pubnames + 0x2488 + 0x2488 + 0x35 + + + + .debug_pubnames + 0x24bd + 0x24bd + 0x36 + + + + .debug_pubnames + 0x24f3 + 0x24f3 + 0x2d + + + + .debug_pubnames + 0x2520 + 0x2520 + 0x26 + + + + .debug_pubnames + 0x2546 + 0x2546 + 0x26 + + + + .debug_pubnames + 0x256c + 0x256c + 0x23 + + + + .debug_pubnames + 0x258f + 0x258f + 0x26 + + + + .debug_pubnames + 0x25b5 + 0x25b5 + 0x29 + + + + .debug_pubnames + 0x25de + 0x25de + 0x2e + + + + .debug_pubnames + 0x260c + 0x260c + 0x27 + + + + .debug_pubnames + 0x2633 + 0x2633 + 0x24 + + + + .debug_pubnames + 0x2657 + 0x2657 + 0x27 + + + + .debug_pubnames + 0x267e + 0x267e + 0x2a + + + + .debug_pubnames + 0x26a8 + 0x26a8 + 0x20 + + + + .debug_pubnames + 0x26c8 + 0x26c8 + 0x20 + + + + .debug_pubnames + 0x26e8 + 0x26e8 + 0x21 + + + + .debug_pubnames + 0x2709 + 0x2709 + 0x20 + + + + .debug_pubnames + 0x2729 + 0x2729 + 0x24 + + + + .debug_pubnames + 0x274d + 0x274d + 0x29 + + + + .debug_pubnames + 0x2776 + 0x2776 + 0x23 + + + + .debug_pubnames + 0x2799 + 0x2799 + 0x22 + + + + .debug_pubnames + 0x27bb + 0x27bb + 0x28 + + + + .debug_pubnames + 0x27e3 + 0x27e3 + 0x28 + + + + .debug_pubnames + 0x280b + 0x280b + 0x23 + + + + .debug_pubnames + 0x282e + 0x282e + 0x27 + + + + .debug_pubnames + 0x2855 + 0x2855 + 0x24 + + + + .debug_pubnames + 0x2879 + 0x2879 + 0x20 + + + + .debug_pubnames + 0x2899 + 0x2899 + 0x20 + + + + .debug_pubnames + 0x28b9 + 0x28b9 + 0x30 + + + + .debug_pubnames + 0x28e9 + 0x28e9 + 0x25 + + + + .debug_pubnames + 0x290e + 0x290e + 0x25 + + + + .debug_pubnames + 0x2933 + 0x2933 + 0x21 + + + + .debug_pubnames + 0x2954 + 0x2954 + 0x21 + + + + .debug_pubnames + 0x2975 + 0x2975 + 0x22 + + + + .debug_pubnames + 0x2997 + 0x2997 + 0x22 + + + + .debug_pubnames + 0x29b9 + 0x29b9 + 0x24 + + + + .debug_pubnames + 0x29dd + 0x29dd + 0x25 + + + + .debug_pubnames + 0x2a02 + 0x2a02 + 0x24 + + + + .debug_pubnames + 0x2a26 + 0x2a26 + 0x2a + + + + .debug_pubnames + 0x2a50 + 0x2a50 + 0x26 + + + + .debug_pubnames + 0x2a76 + 0x2a76 + 0x26 + + + + .debug_pubnames + 0x2a9c + 0x2a9c + 0x22 + + + + .debug_pubnames + 0x2abe + 0x2abe + 0x26 + + + + .debug_pubnames + 0x2ae4 + 0x2ae4 + 0x22 + + + + .debug_pubnames + 0x2b06 + 0x2b06 + 0x24 + + + + .debug_pubnames + 0x2b2a + 0x2b2a + 0x3f + + + + .debug_pubnames + 0x2b69 + 0x2b69 + 0x2c + + + + .debug_pubnames + 0x2b95 + 0x2b95 + 0x2c + + + + .debug_pubnames + 0x2bc1 + 0x2bc1 + 0x1f + + + + .debug_pubnames + 0x2be0 + 0x2be0 + 0x26 + + + + .debug_pubnames + 0x2c06 + 0x2c06 + 0x2d + + + + .debug_pubnames + 0x2c33 + 0x2c33 + 0x26 + + + + .debug_pubnames + 0x2c59 + 0x2c59 + 0x24 + + + + .debug_pubnames + 0x2c7d + 0x2c7d + 0x1b + + + + .debug_pubnames + 0x2c98 + 0x2c98 + 0x9e + + + + .debug_pubnames + 0x2d36 + 0x2d36 + 0x27 + + + + .debug_pubnames + 0x2d5d + 0x2d5d + 0x24 + + + + .debug_pubnames + 0x2d81 + 0x2d81 + 0x38 + + + + .debug_pubnames + 0x2db9 + 0x2db9 + 0x34 + + + + .debug_pubnames + 0x2ded + 0x2ded + 0x28 + + + + .debug_pubnames + 0x2e15 + 0x2e15 + 0x24 + + + + .debug_pubnames + 0x2e39 + 0x2e39 + 0x221 + + + + .debug_pubnames + 0x305a + 0x305a + 0x24 + + + + .debug_pubnames + 0x307e + 0x307e + 0x46 + + + + .debug_pubnames + 0x30c4 + 0x30c4 + 0x38 + + + + .debug_pubnames + 0x30fc + 0x30fc + 0x3d + + + + .debug_pubnames + 0x3139 + 0x3139 + 0x40 + + + + .debug_pubnames + 0x3179 + 0x3179 + 0x3a + + + + .debug_pubnames + 0x31b3 + 0x31b3 + 0x56 + + + + .debug_pubnames + 0x3209 + 0x3209 + 0x53 + + + + .debug_pubnames + 0x325c + 0x325c + 0x52 + + + + .debug_pubnames + 0x32ae + 0x32ae + 0x4f + + + + .debug_pubnames + 0x32fd + 0x32fd + 0x4f + + + + .debug_pubnames + 0x334c + 0x334c + 0x4f + + + + .debug_pubnames + 0x339b + 0x339b + 0x4e + + + + .debug_pubnames + 0x33e9 + 0x33e9 + 0x4e + + + + .debug_pubnames + 0x3437 + 0x3437 + 0x4d + + + + .debug_pubnames + 0x3484 + 0x3484 + 0x4b + + + + .debug_pubnames + 0x34cf + 0x34cf + 0x4a + + + + .debug_pubnames + 0x3519 + 0x3519 + 0x4c + + + + .debug_pubnames + 0x3565 + 0x3565 + 0x4a + + + + .debug_pubnames + 0x35af + 0x35af + 0x4b + + + + .debug_pubnames + 0x35fa + 0x35fa + 0x4c + + + + .debug_pubnames + 0x3646 + 0x3646 + 0x48 + + + + .debug_pubnames + 0x368e + 0x368e + 0x4a + + + + .debug_pubnames + 0x36d8 + 0x36d8 + 0x4c + + + + .debug_pubnames + 0x3724 + 0x3724 + 0x4a + + + + .debug_pubnames + 0x376e + 0x376e + 0x4c + + + + .debug_pubnames + 0x37ba + 0x37ba + 0x48 + + + + .debug_pubnames + 0x3802 + 0x3802 + 0x46 + + + + .debug_pubnames + 0x3848 + 0x3848 + 0x4c + + + + .debug_pubnames + 0x3894 + 0x3894 + 0x4c + + + + .debug_pubnames + 0x38e0 + 0x38e0 + 0x48 + + + + .debug_pubnames + 0x3928 + 0x3928 + 0x40 + + + + .debug_pubnames + 0x3968 + 0x3968 + 0x47 + + + + .debug_pubnames + 0x39af + 0x39af + 0x46 + + + + .debug_pubnames + 0x39f5 + 0x39f5 + 0x44 + + + + .debug_pubnames + 0x3a39 + 0x3a39 + 0x49 + + + + .debug_pubnames + 0x3a82 + 0x3a82 + 0x4a + + + + .debug_pubnames + 0x3acc + 0x3acc + 0x48 + + + + .debug_pubnames + 0x3b14 + 0x3b14 + 0x3f + + + + .debug_pubnames + 0x3b53 + 0x3b53 + 0x47 + + + + .debug_pubnames + 0x3b9a + 0x3b9a + 0x40 + + + + .debug_pubnames + 0x3bda + 0x3bda + 0x45 + + + + .debug_pubnames + 0x3c1f + 0x3c1f + 0x40 + + + + .debug_pubnames + 0x3c5f + 0x3c5f + 0x46 + + + + .debug_pubnames + 0x3ca5 + 0x3ca5 + 0x42 + + + + .debug_pubnames + 0x3ce7 + 0x3ce7 + 0x44 + + + + .debug_pubnames + 0x3d2b + 0x3d2b + 0x47 + + + + .debug_pubnames + 0x3d72 + 0x3d72 + 0x48 + + + + .debug_pubnames + 0x3dba + 0x3dba + 0x41 + + + + .debug_pubnames + 0x3dfb + 0x3dfb + 0x48 + + + + .debug_pubnames + 0x3e43 + 0x3e43 + 0x4c + + + + .debug_pubnames + 0x3e8f + 0x3e8f + 0x49 + + + + .debug_pubnames + 0x3ed8 + 0x3ed8 + 0x47 + + + + .debug_pubnames + 0x3f1f + 0x3f1f + 0x3e + + + + .debug_pubnames + 0x3f5d + 0x3f5d + 0x3e + + + + .debug_pubnames + 0x3f9b + 0x3f9b + 0x44 + + + + .debug_pubnames + 0x3fdf + 0x3fdf + 0x43 + + + + .debug_pubnames + 0x4022 + 0x4022 + 0x45 + + + + .debug_pubnames + 0x4067 + 0x4067 + 0x4c + + + + .debug_pubnames + 0x40b3 + 0x40b3 + 0x4c + + + + .debug_pubnames + 0x40ff + 0x40ff + 0x53 + + + + .debug_pubnames + 0x4152 + 0x4152 + 0x45 + + + + .debug_pubnames + 0x4197 + 0x4197 + 0x4a + + + + .debug_pubnames + 0x41e1 + 0x41e1 + 0x5a + + + + .debug_pubnames + 0x423b + 0x423b + 0x5a + + + + .debug_pubnames + 0x4295 + 0x4295 + 0x5b + + + + .debug_pubnames + 0x42f0 + 0x42f0 + 0x55 + + + + .debug_pubnames + 0x4345 + 0x4345 + 0x4f + + + + .debug_pubnames + 0x4394 + 0x4394 + 0x51 + + + + .debug_pubnames + 0x43e5 + 0x43e5 + 0x53 + + + + .debug_pubnames + 0x4438 + 0x4438 + 0x4e + + + + .debug_pubnames + 0x4486 + 0x4486 + 0x64 + + + + .debug_pubnames + 0x44ea + 0x44ea + 0x4b + + + + .debug_pubnames + 0x4535 + 0x4535 + 0x52 + + + + .debug_pubnames + 0x4587 + 0x4587 + 0x59 + + + + .debug_pubnames + 0x45e0 + 0x45e0 + 0x58 + + + + .debug_pubnames + 0x4638 + 0x4638 + 0x47 + + + + .debug_pubnames + 0x467f + 0x467f + 0x51 + + + + .debug_pubnames + 0x46d0 + 0x46d0 + 0x43 + + + + .debug_pubnames + 0x4713 + 0x4713 + 0x48 + + + + .debug_pubnames + 0x475b + 0x475b + 0x56 + + + + .debug_pubnames + 0x47b1 + 0x47b1 + 0x4d + + + + .debug_pubnames + 0x47fe + 0x47fe + 0x51 + + + + .debug_pubnames + 0x484f + 0x484f + 0x4c + + + + .debug_pubnames + 0x489b + 0x489b + 0x63 + + + + .debug_pubnames + 0x48fe + 0x48fe + 0x5a + + + + .debug_pubnames + 0x4958 + 0x4958 + 0x49 + + + + .debug_pubnames + 0x49a1 + 0x49a1 + 0x50 + + + + .debug_pubnames + 0x49f1 + 0x49f1 + 0x63 + + + + .debug_pubnames + 0x4a54 + 0x4a54 + 0x66 + + + + .debug_pubnames + 0x4aba + 0x4aba + 0x65 + + + + .debug_pubnames + 0x4b1f + 0x4b1f + 0x63 + + + + .debug_pubnames + 0x4b82 + 0x4b82 + 0x45 + + + + .debug_pubnames + 0x4bc7 + 0x4bc7 + 0x51 + + + + .debug_pubnames + 0x4c18 + 0x4c18 + 0x43 + + + + .debug_pubnames + 0x4c5b + 0x4c5b + 0x48 + + + + .debug_pubnames + 0x4ca3 + 0x4ca3 + 0x56 + + + + .debug_pubnames + 0x4cf9 + 0x4cf9 + 0x56 + + + + .debug_pubnames + 0x4d4f + 0x4d4f + 0x45 + + + + .debug_pubnames + 0x4d94 + 0x4d94 + 0x59 + + + + .debug_pubnames + 0x4ded + 0x4ded + 0x57 + + + + .debug_pubnames + 0x4e44 + 0x4e44 + 0x49 + + + + .debug_pubnames + 0x4e8d + 0x4e8d + 0x4d + + + + .debug_pubnames + 0x4eda + 0x4eda + 0x4f + + + + .debug_pubnames + 0x4f29 + 0x4f29 + 0x50 + + + + .debug_pubnames + 0x4f79 + 0x4f79 + 0x55 + + + + .debug_pubnames + 0x4fce + 0x4fce + 0x46 + + + + .debug_pubnames + 0x5014 + 0x5014 + 0x38 + + + + .debug_pubnames + 0x504c + 0x504c + 0x3d + + + + .debug_pubnames + 0x5089 + 0x5089 + 0x40 + + + + .debug_pubnames + 0x50c9 + 0x50c9 + 0x3a + + + + .debug_pubnames + 0x5103 + 0x5103 + 0x46 + + + + .debug_pubnames + 0x5149 + 0x5149 + 0x45 + + + + .debug_pubnames + 0x518e + 0x518e + 0x44 + + + + .debug_pubnames + 0x51d2 + 0x51d2 + 0x42 + + + + .debug_pubnames + 0x5214 + 0x5214 + 0x42 + + + + .debug_pubnames + 0x5256 + 0x5256 + 0x41 + + + + .debug_pubnames + 0x5297 + 0x5297 + 0x40 + + + + .debug_pubnames + 0x52d7 + 0x52d7 + 0x3e + + + + .debug_pubnames + 0x5315 + 0x5315 + 0x4b + + + + .debug_pubnames + 0x5360 + 0x5360 + 0x3d + + + + .debug_pubnames + 0x539d + 0x539d + 0x42 + + + + .debug_pubnames + 0x53df + 0x53df + 0x4a + + + + .debug_pubnames + 0x5429 + 0x5429 + 0x4f + + + + .debug_pubnames + 0x5478 + 0x5478 + 0x51 + + + + .debug_pubnames + 0x54c9 + 0x54c9 + 0x43 + + + + .debug_pubnames + 0x550c + 0x550c + 0x47 + + + + .debug_pubnames + 0x5553 + 0x5553 + 0x46 + + + + .debug_pubnames + 0x5599 + 0x5599 + 0x49 + + + + .debug_pubnames + 0x55e2 + 0x55e2 + 0x4b + + + + .debug_pubnames + 0x562d + 0x562d + 0x3f + + + + .debug_pubnames + 0x566c + 0x566c + 0x4c + + + + .debug_pubnames + 0x56b8 + 0x56b8 + 0x4c + + + + .debug_pubnames + 0x5704 + 0x5704 + 0x4c + + + + .debug_pubnames + 0x5750 + 0x5750 + 0x4c + + + + .debug_pubnames + 0x579c + 0x579c + 0x91 + + + + .debug_pubnames + 0x582d + 0x582d + 0x46 + + + + .debug_pubnames + 0x5873 + 0x5873 + 0x4f + + + + .debug_pubnames + 0x58c2 + 0x58c2 + 0x4b + + + + .debug_pubnames + 0x590d + 0x590d + 0x39 + + + + .debug_pubnames + 0x5946 + 0x5946 + 0x40 + + + + .debug_pubnames + 0x5986 + 0x5986 + 0x40 + + + + .debug_pubnames + 0x59c6 + 0x59c6 + 0x1e + + + + .debug_pubnames + 0x59e4 + 0x59e4 + 0x49 + + + + .debug_pubnames + 0x5a2d + 0x5a2d + 0x3b + + + + .debug_pubnames + 0x5a68 + 0x5a68 + 0x40 + + + + .debug_pubnames + 0x5aa8 + 0x5aa8 + 0x46 + + + + .debug_pubnames + 0x5aee + 0x5aee + 0x4d + + + + .debug_pubnames + 0x5b3b + 0x5b3b + 0x43 + + + + .debug_pubnames + 0x5b7e + 0x5b7e + 0x4b + + + + .debug_pubnames + 0x5bc9 + 0x5bc9 + 0x42 + + + + .debug_pubnames + 0x5c0b + 0x5c0b + 0x41 + + + + .debug_pubnames + 0x5c4c + 0x5c4c + 0x45 + + + + .debug_pubnames + 0x5c91 + 0x5c91 + 0x49 + + + + .debug_pubnames + 0x5cda + 0x5cda + 0x44 + + + + .debug_pubnames + 0x5d1e + 0x5d1e + 0x48 + + + + .debug_pubnames + 0x5d66 + 0x5d66 + 0x3d + + + + .debug_pubnames + 0x5da3 + 0x5da3 + 0x49 + + + + .debug_pubnames + 0x5dec + 0x5dec + 0x3b + + + + .debug_pubnames + 0x5e27 + 0x5e27 + 0x40 + + + + .debug_pubnames + 0x5e67 + 0x5e67 + 0x46 + + + + .debug_pubnames + 0x5ead + 0x5ead + 0x4d + + + + .debug_pubnames + 0x5efa + 0x5efa + 0x4f + + + + .debug_pubnames + 0x5f49 + 0x5f49 + 0x4a + + + + .debug_pubnames + 0x5f93 + 0x5f93 + 0x4b + + + + .debug_pubnames + 0x5fde + 0x5fde + 0x41 + + + + .debug_pubnames + 0x601f + 0x601f + 0x45 + + + + .debug_pubnames + 0x6064 + 0x6064 + 0x49 + + + + .debug_pubnames + 0x60ad + 0x60ad + 0x44 + + + + .debug_pubnames + 0x60f1 + 0x60f1 + 0x3d + + + + .debug_pubnames + 0x612e + 0x612e + 0x27 + + + + .debug_pubnames + 0x6155 + 0x6155 + 0x2c + + + + .debug_pubnames + 0x6181 + 0x6181 + 0x27 + + + + .debug_pubnames + 0x61a8 + 0x61a8 + 0x2f + + + + .debug_pubnames + 0x61d7 + 0x61d7 + 0x26 + + + + .debug_pubnames + 0x61fd + 0x61fd + 0x29 + + + + .debug_pubnames + 0x6226 + 0x6226 + 0x27 + + + + .debug_pubnames + 0x624d + 0x624d + 0x28 + + + + .debug_pubnames + 0x6275 + 0x6275 + 0x26 + + + + .debug_pubnames + 0x629b + 0x629b + 0x2c + + + + .debug_pubnames + 0x62c7 + 0x62c7 + 0x28 + + + + .debug_pubnames + 0x62ef + 0x62ef + 0x35 + + + + .debug_pubnames + 0x6324 + 0x6324 + 0x36 + + + + .debug_pubnames + 0x635a + 0x635a + 0x36 + + + + .debug_pubnames + 0x6390 + 0x6390 + 0x36 + + + + .debug_pubnames + 0x63c6 + 0x63c6 + 0x37 + + + + .debug_pubnames + 0x63fd + 0x63fd + 0x38 + + + + .debug_pubnames + 0x6435 + 0x6435 + 0x38 + + + + .debug_pubnames + 0x646d + 0x646d + 0x27 + + + + .debug_pubnames + 0x6494 + 0x6494 + 0x32 + + + + .debug_pubnames + 0x64c6 + 0x64c6 + 0x39 + + + + .debug_pubnames + 0x64ff + 0x64ff + 0x2c + + + + .debug_pubnames + 0x652b + 0x652b + 0x4f + + + + .debug_pubnames + 0x657a + 0x657a + 0x52 + + + + .debug_pubnames + 0x65cc + 0x65cc + 0x41 + + + + .debug_pubnames + 0x660d + 0x660d + 0x44 + + + + .debug_pubnames + 0x6651 + 0x6651 + 0x46 + + + + .debug_pubnames + 0x6697 + 0x6697 + 0x49 + + + + .debug_pubnames + 0x66e0 + 0x66e0 + 0x4e + + + + .debug_pubnames + 0x672e + 0x672e + 0x54 + + + + .debug_pubnames + 0x6782 + 0x6782 + 0x2c + + + + .debug_pubnames + 0x67ae + 0x67ae + 0x29 + + + + .debug_pubnames + 0x67d7 + 0x67d7 + 0x32 + + + + .debug_pubnames + 0x6809 + 0x6809 + 0x37 + + + + .debug_pubnames + 0x6840 + 0x6840 + 0x31 + + + + .debug_pubnames + 0x6871 + 0x6871 + 0x23 + + + + .debug_pubnames + 0x6894 + 0x6894 + 0x27 + + + + .debug_pubnames + 0x68bb + 0x68bb + 0x27 + + + + .debug_pubnames + 0x68e2 + 0x68e2 + 0x2b + + + + .debug_pubnames + 0x690d + 0x690d + 0x2b + + + + .debug_pubnames + 0x6938 + 0x6938 + 0x2b + + + + .debug_pubnames + 0x6963 + 0x6963 + 0x25 + + + + .debug_pubnames + 0x6988 + 0x6988 + 0x29 + + + + .debug_pubnames + 0x69b1 + 0x69b1 + 0x28 + + + + .debug_pubnames + 0x69d9 + 0x69d9 + 0x29 + + + + .debug_pubnames + 0x6a02 + 0x6a02 + 0x24 + + + + .debug_pubnames + 0x6a26 + 0x6a26 + 0x27 + + + + .debug_pubnames + 0x6a4d + 0x6a4d + 0x24 + + + + .debug_pubnames + 0x6a71 + 0x6a71 + 0x24 + + + + .debug_pubnames + 0x6a95 + 0x6a95 + 0x25 + + + + .debug_pubnames + 0x6aba + 0x6aba + 0x21 + + + + .debug_pubnames + 0x6adb + 0x6adb + 0x1d + + + + .debug_pubnames + 0x6af8 + 0x6af8 + 0x2a + + + + .debug_pubnames + 0x6b22 + 0x6b22 + 0x21 + + + + .debug_pubnames + 0x6b43 + 0x6b43 + 0x3e + + + + .debug_pubnames + 0x6b81 + 0x6b81 + 0x23 + + + + .debug_pubnames + 0x6ba4 + 0x6ba4 + 0x1e + + + + .debug_pubnames + 0x6bc2 + 0x6bc2 + 0x22 + + + + .debug_pubnames + 0x6be4 + 0x6be4 + 0x29 + + + + .debug_pubnames + 0x6c0d + 0x6c0d + 0x27 + + + + .debug_pubnames + 0x6c34 + 0x6c34 + 0x36 + + + + .debug_pubnames + 0x6c6a + 0x6c6a + 0x1c + + + + .debug_pubnames + 0x6c86 + 0x6c86 + 0x1b + + + + .debug_pubnames + 0x6ca1 + 0x6ca1 + 0x27 + + + + .debug_pubnames + 0x6cc8 + 0x6cc8 + 0x25 + + + + .debug_pubnames + 0x6ced + 0x6ced + 0x1c + + + + .debug_pubnames + 0x6d09 + 0x6d09 + 0x1e + + + + .debug_pubnames + 0x6d27 + 0x6d27 + 0x1b + + + + .debug_pubnames + 0x6d42 + 0x6d42 + 0x23 + + + + .debug_pubnames + 0x6d65 + 0x6d65 + 0x1d + + + + .debug_pubnames + 0x6d82 + 0x6d82 + 0x1c + + + + .debug_pubnames + 0x6d9e + 0x6d9e + 0x22 + + + + .debug_pubnames + 0x6dc0 + 0x6dc0 + 0x22 + + + + .debug_pubnames + 0x6de2 + 0x6de2 + 0x2c + + + + .debug_pubnames + 0x6e0e + 0x6e0e + 0x1f + + + + .debug_pubnames + 0x6e2d + 0x6e2d + 0x1d + + + + .debug_pubnames + 0x6e4a + 0x6e4a + 0x21 + + + + .debug_pubnames + 0x6e6b + 0x6e6b + 0x27 + + + + .debug_pubnames + 0x6e92 + 0x6e92 + 0x27 + + + + .debug_pubnames + 0x6eb9 + 0x6eb9 + 0x1b + + + + .debug_pubnames + 0x6ed4 + 0x6ed4 + 0x1c + + + + .debug_pubnames + 0x6ef0 + 0x6ef0 + 0x24 + + + + .debug_pubnames + 0x6f14 + 0x6f14 + 0x24 + + + + .debug_pubnames + 0x6f38 + 0x6f38 + 0x1c + + + + .debug_pubnames + 0x6f54 + 0x6f54 + 0x1c + + + + .debug_pubnames + 0x6f70 + 0x6f70 + 0x1e + + + + .debug_pubnames + 0x6f8e + 0x6f8e + 0x1e + + + + .debug_pubnames + 0x6fac + 0x6fac + 0x20 + + + + .debug_pubnames + 0x6fcc + 0x6fcc + 0x20 + + + + .debug_pubnames + 0x6fec + 0x6fec + 0x1e + + + + .debug_pubnames + 0x700a + 0x700a + 0x1f + + + + .debug_pubnames + 0x7029 + 0x7029 + 0x1f + + + + .debug_pubnames + 0x7048 + 0x7048 + 0x21 + + + + .debug_pubnames + 0x7069 + 0x7069 + 0x21 + + + + .debug_pubnames + 0x708a + 0x708a + 0x20 + + + + .debug_pubnames + 0x70aa + 0x70aa + 0x1f + + + + .debug_pubnames + 0x70c9 + 0x70c9 + 0x24 + + + + .debug_pubnames + 0x70ed + 0x70ed + 0x23 + + + + .debug_pubnames + 0x7110 + 0x7110 + 0x1d + + + + .debug_pubnames + 0x712d + 0x712d + 0x1d + + + + .debug_pubnames + 0x714a + 0x714a + 0x1d + + + + .debug_pubnames + 0x7167 + 0x7167 + 0x1e + + + + .debug_pubnames + 0x7185 + 0x7185 + 0x23 + + + + .debug_pubnames + 0x71a8 + 0x71a8 + 0x25 + + + + .debug_pubnames + 0x71cd + 0x71cd + 0x1c + + + + .debug_pubnames + 0x71e9 + 0x71e9 + 0x21 + + + + .debug_pubnames + 0x720a + 0x720a + 0x20 + + + + .debug_pubnames + 0x722a + 0x722a + 0x1e + + + + .debug_pubnames + 0x7248 + 0x7248 + 0x1c + + + + .debug_pubnames + 0x7264 + 0x7264 + 0x1c + + + + .debug_pubnames + 0x7280 + 0x7280 + 0x24 + + + + .debug_pubnames + 0x72a4 + 0x72a4 + 0x20 + + + + .debug_pubnames + 0x72c4 + 0x72c4 + 0x21 + + + + .debug_pubnames + 0x72e5 + 0x72e5 + 0x2b + + + + .debug_pubnames + 0x7310 + 0x7310 + 0x1e + + + + .debug_pubnames + 0x732e + 0x732e + 0x1d + + + + .debug_pubnames + 0x734b + 0x734b + 0x1d + + + + .debug_pubnames + 0x7368 + 0x7368 + 0x1d + + + + .debug_pubnames + 0x7385 + 0x7385 + 0x1d + + + + .debug_pubnames + 0x73a2 + 0x73a2 + 0x1e + + + + .debug_pubnames + 0x73c0 + 0x73c0 + 0x1d + + + + .debug_pubnames + 0x73dd + 0x73dd + 0x1f + + + + .debug_pubnames + 0x73fc + 0x73fc + 0x1c + + + + .debug_pubnames + 0x7418 + 0x7418 + 0x1c + + + + .debug_pubnames + 0x7434 + 0x7434 + 0x1c + + + + .debug_pubtypes + 0x0 + 0x0 + 0x25c + + + + .debug_pubtypes + 0x25c + 0x25c + 0xf0 + + + + .debug_pubtypes + 0x34c + 0x34c + 0x8a + + + + .debug_pubtypes + 0x3d6 + 0x3d6 + 0xed + + + + .debug_pubtypes + 0x4c3 + 0x4c3 + 0x315 + + + + .debug_pubtypes + 0x7d8 + 0x7d8 + 0xaa + + + + .debug_pubtypes + 0x882 + 0x882 + 0x47 + + + + .debug_pubtypes + 0x8c9 + 0x8c9 + 0xc8 + + + + .debug_pubtypes + 0x991 + 0x991 + 0xb1 + + + + .debug_pubtypes + 0xa42 + 0xa42 + 0x6f + + + + .debug_pubtypes + 0xab1 + 0xab1 + 0xff + + + + .debug_pubtypes + 0xbb0 + 0xbb0 + 0x1e + + + + .debug_pubtypes + 0xbce + 0xbce + 0xc3b + + + + .debug_pubtypes + 0x1809 + 0x1809 + 0x2e + + + + .debug_pubtypes + 0x1837 + 0x1837 + 0xc6 + + + + .debug_pubtypes + 0x18fd + 0x18fd + 0x17c + + + + .debug_pubtypes + 0x1a79 + 0x1a79 + 0x170 + + + + .debug_pubtypes + 0x1be9 + 0x1be9 + 0xad + + + + .debug_pubtypes + 0x1c96 + 0x1c96 + 0xb1 + + + + .debug_pubtypes + 0x1d47 + 0x1d47 + 0x2b + + + + .debug_pubtypes + 0x1d72 + 0x1d72 + 0xa8 + + + + .debug_pubtypes + 0x1e1a + 0x1e1a + 0x8a + + + + .debug_pubtypes + 0x1ea4 + 0x1ea4 + 0x1d + + + + .debug_pubtypes + 0x1ec1 + 0x1ec1 + 0xb1 + + + + .debug_pubtypes + 0x1f72 + 0x1f72 + 0xd8 + + + + .debug_pubtypes + 0x204a + 0x204a + 0x4f + + + + .debug_pubtypes + 0x2099 + 0x2099 + 0x1e4 + + + + .debug_pubtypes + 0x227d + 0x227d + 0xce + + + + .debug_pubtypes + 0x234b + 0x234b + 0x29 + + + + .debug_pubtypes + 0x2374 + 0x2374 + 0x6f + + + + .debug_pubtypes + 0x23e3 + 0x23e3 + 0x40 + + + + .debug_pubtypes + 0x2423 + 0x2423 + 0x90 + + + + .debug_pubtypes + 0x24b3 + 0x24b3 + 0x90 + + + + .debug_pubtypes + 0x2543 + 0x2543 + 0x70 + + + + .debug_pubtypes + 0x25b3 + 0x25b3 + 0x3e + + + + .debug_pubtypes + 0x25f1 + 0x25f1 + 0x40 + + + + .debug_pubtypes + 0x2631 + 0x2631 + 0x32 + + + + .debug_pubtypes + 0x2663 + 0x2663 + 0x8a + + + + .debug_pubtypes + 0x26ed + 0x26ed + 0x4a + + + + .debug_pubtypes + 0x2737 + 0x2737 + 0x30 + + + + .debug_pubtypes + 0x2767 + 0x2767 + 0x28 + + + + .debug_pubtypes + 0x278f + 0x278f + 0x8aa + + + + .debug_pubtypes + 0x3039 + 0x3039 + 0x2e + + + + .debug_pubtypes + 0x3067 + 0x3067 + 0xf0 + + + + .debug_pubtypes + 0x3157 + 0x3157 + 0x8b + + + + .debug_pubtypes + 0x31e2 + 0x31e2 + 0x40 + + + + .debug_pubtypes + 0x3222 + 0x3222 + 0x32 + + + + .debug_pubtypes + 0x3254 + 0x3254 + 0x17c + + + + .debug_pubtypes + 0x33d0 + 0x33d0 + 0xc8 + + + + .debug_pubtypes + 0x3498 + 0x3498 + 0xb1 + + + + .debug_pubtypes + 0x3549 + 0x3549 + 0x170 + + + + .debug_pubtypes + 0x36b9 + 0x36b9 + 0x6f + + + + .debug_pubtypes + 0x3728 + 0x3728 + 0x2e + + + + .debug_pubtypes + 0x3756 + 0x3756 + 0x2c + + + + .debug_pubtypes + 0x3782 + 0x3782 + 0x30 + + + + .debug_pubtypes + 0x37b2 + 0x37b2 + 0x71 + + + + .debug_pubtypes + 0x3823 + 0x3823 + 0x9a + + + + .debug_pubtypes + 0x38bd + 0x38bd + 0x3b + + + + .debug_pubtypes + 0x38f8 + 0x38f8 + 0x30 + + + + .debug_pubtypes + 0x3928 + 0x3928 + 0x35 + + + + .debug_pubtypes + 0x395d + 0x395d + 0x33 + + + + .debug_pubtypes + 0x3990 + 0x3990 + 0x5d + + + + .debug_pubtypes + 0x39ed + 0x39ed + 0x8a + + + + .debug_pubtypes + 0x3a77 + 0x3a77 + 0xc56 + + + + .debug_pubtypes + 0x46cd + 0x46cd + 0x8a + + + + .debug_pubtypes + 0x4757 + 0x4757 + 0xb57 + + + + .debug_pubtypes + 0x52ae + 0x52ae + 0xdd + + + + .debug_pubtypes + 0x538b + 0x538b + 0x46d + + + + .debug_pubtypes + 0x57f8 + 0x57f8 + 0x20 + + + + .debug_pubtypes + 0x5818 + 0x5818 + 0x1d3 + + + + .debug_pubtypes + 0x59eb + 0x59eb + 0x7a + + + + .debug_pubtypes + 0x5a65 + 0x5a65 + 0x82 + + + + .debug_pubtypes + 0x5ae7 + 0x5ae7 + 0x9d + + + + .debug_pubtypes + 0x5b84 + 0x5b84 + 0x57 + + + + .debug_pubtypes + 0x5bdb + 0x5bdb + 0x15e + + + + .debug_pubtypes + 0x5d39 + 0x5d39 + 0x8c + + + + .debug_pubtypes + 0x5dc5 + 0x5dc5 + 0x137 + + + + .debug_pubtypes + 0x5efc + 0x5efc + 0x315 + + + + .debug_pubtypes + 0x6211 + 0x6211 + 0x12e + + + + .debug_pubtypes + 0x633f + 0x633f + 0xaa + + + + .debug_pubtypes + 0x63e9 + 0x63e9 + 0xfc + + + + .debug_pubtypes + 0x64e5 + 0x64e5 + 0x26e + + + + .debug_pubtypes + 0x6753 + 0x6753 + 0x3b + + + + .debug_pubtypes + 0x678e + 0x678e + 0x1e3 + + + + .debug_pubtypes + 0x6971 + 0x6971 + 0x43e + + + + .debug_pubtypes + 0x6daf + 0x6daf + 0x10c + + + + .debug_pubtypes + 0x6ebb + 0x6ebb + 0xc0 + + + + .debug_pubtypes + 0x6f7b + 0x6f7b + 0x1f + + + + .debug_pubtypes + 0x6f9a + 0x6f9a + 0x4c + + + + .debug_pubtypes + 0x6fe6 + 0x6fe6 + 0x28 + + + + .debug_pubtypes + 0x700e + 0x700e + 0x131 + + + + .debug_pubtypes + 0x713f + 0x713f + 0x31 + + + + .debug_pubtypes + 0x7170 + 0x7170 + 0xc6 + + + + .debug_pubtypes + 0x7236 + 0x7236 + 0x3e + + + + .debug_pubtypes + 0x7274 + 0x7274 + 0x32 + + + + .debug_pubtypes + 0x72a6 + 0x72a6 + 0x131 + + + + .debug_pubtypes + 0x73d7 + 0x73d7 + 0x131 + + + + .debug_pubtypes + 0x7508 + 0x7508 + 0x131 + + + + .debug_pubtypes + 0x7639 + 0x7639 + 0x131 + + + + .debug_pubtypes + 0x776a + 0x776a + 0x131 + + + + .debug_pubtypes + 0x789b + 0x789b + 0x28 + + + + .debug_pubtypes + 0x78c3 + 0x78c3 + 0x131 + + + + .debug_pubtypes + 0x79f4 + 0x79f4 + 0x131 + + + + .debug_pubtypes + 0x7b25 + 0x7b25 + 0x21 + + + + .debug_pubtypes + 0x7b46 + 0x7b46 + 0x4f + + + + .debug_pubtypes + 0x7b95 + 0x7b95 + 0x9b + + + + .debug_pubtypes + 0x7c30 + 0x7c30 + 0x1ec + + + + .debug_pubtypes + 0x7e1c + 0x7e1c + 0x1d + + + + .debug_pubtypes + 0x7e39 + 0x7e39 + 0x25 + + + + .debug_pubtypes + 0x7e5e + 0x7e5e + 0x51 + + + + .debug_pubtypes + 0x7eaf + 0x7eaf + 0x1d + + + + .debug_pubtypes + 0x7ecc + 0x7ecc + 0x25 + + + + .debug_pubtypes + 0x7ef1 + 0x7ef1 + 0x35 + + + + .debug_pubtypes + 0x7f26 + 0x7f26 + 0x5d + + + + .debug_pubtypes + 0x7f83 + 0x7f83 + 0x48 + + + + .debug_pubtypes + 0x7fcb + 0x7fcb + 0x35 + + + + .debug_pubtypes + 0x8000 + 0x8000 + 0x48 + + + + .debug_pubtypes + 0x8048 + 0x8048 + 0x48 + + + + .debug_pubtypes + 0x8090 + 0x8090 + 0x27 + + + + .debug_pubtypes + 0x80b7 + 0x80b7 + 0x32 + + + + .debug_pubtypes + 0x80e9 + 0x80e9 + 0x21 + + + + .debug_pubtypes + 0x810a + 0x810a + 0x1f + + + + .debug_pubtypes + 0x8129 + 0x8129 + 0x50 + + + + .debug_pubtypes + 0x8179 + 0x8179 + 0x32 + + + + .debug_pubtypes + 0x81ab + 0x81ab + 0x26 + + + + .debug_pubtypes + 0x81d1 + 0x81d1 + 0x1d + + + + .debug_pubtypes + 0x81ee + 0x81ee + 0x1c + + + + .debug_pubtypes + 0x820a + 0x820a + 0x2e + + + + .debug_pubtypes + 0x8238 + 0x8238 + 0x1e + + + + .debug_pubtypes + 0x8256 + 0x8256 + 0x1d + + + + .debug_pubtypes + 0x8273 + 0x8273 + 0x1e + + + + .debug_pubtypes + 0x8291 + 0x8291 + 0x27 + + + + + + .TI.persistent + 0x4000 + 0x4000 + 0x2 + + + + + + .cio + 0x4002 + 0x120 + + + + + + .sysmem + 0x4124 + 0x8 + + + + + + + READ_WRITE_MEMORY + 0x4000 + 0x4000 + 0x400 + + + + + + + + .ipestruct + 0x4400 + 0x0 + + + + + .ipe + 0x4400 + 0x0 + + + + + .ipe_const + 0x4400 + 0x0 + + + + + .ipe:_isr + 0x4400 + 0x0 + + + + + IPENCAPSULATED_MEMORY + 0x4400 + 0x0 + + + + + + + + + RW_IPE + 0x4000 + 0x4000 + 0x400 + + + + + + + .cinit + 0xd08c + 0xd08c + 0x92 + + + + + + + + + .binit + 0x4000 + 0x4000 + 0x0 + + + + + + .pinit + 0x0 + 0x0 + + + + + .init_array + 0x0 + 0x0 + + + + + .mspabi.exidx + 0x0 + 0x0 + + + + + .mspabi.extab + 0x0 + 0x0 + + + + + .text:_isr + 0x4400 + 0x4400 + 0x2f8 + + + + + + + + + + + + + .const + 0x46f8 + 0x46f8 + 0x8993 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .const + + + + + + .text + 0x10000 + 0x10000 + 0xb552 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .text + + + + + + .TI.ramfunc + 0x0 + 0x0 + + + + + .jtagsignature + 0x0 + 0x0 + + + + + .bslsignature + 0x0 + 0x0 + + + + + .ipesignature + 0x0 + 0x0 + + + + + .jtagpassword + 0x0 + 0x0 + + + + + SIGNATURE_SHAREDMEMORY + 0x0 + 0x0 + + + + + + + .bss + 0x1c00 + 0xd0e + + + + + + + + + + + + + + + .data + 0x290e + 0xc82 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .TI.noinit + 0x0 + 0x0 + + + + + .stack + 0x362c + 0x5d4 + + + + + + + .tinyram + 0x0 + 0x0 + + + + + .infoA + 0x0 + 0x0 + + + + + .infoB + 0x0 + 0x0 + + + + + .infoC + 0x0 + 0x0 + + + + + .infoD + 0x0 + 0x0 + + + + + .int00 + 0x0 + 0x0 + + + + + .int01 + 0x0 + 0x0 + + + + + .int02 + 0x0 + 0x0 + + + + + .int03 + 0x0 + 0x0 + + + + + .int04 + 0x0 + 0x0 + + + + + .int05 + 0x0 + 0x0 + + + + + .int06 + 0x0 + 0x0 + + + + + .int07 + 0x0 + 0x0 + + + + + .int08 + 0x0 + 0x0 + + + + + .int09 + 0x0 + 0x0 + + + + + .int10 + 0x0 + 0x0 + + + + + .int11 + 0x0 + 0x0 + + + + + .int12 + 0x0 + 0x0 + + + + + .int13 + 0x0 + 0x0 + + + + + .int14 + 0x0 + 0x0 + + + + + .int15 + 0x0 + 0x0 + + + + + .int16 + 0x0 + 0x0 + + + + + .int17 + 0x0 + 0x0 + + + + + LEA + 0xffb4 + 0xffb4 + 0x2 + + + + + + PORT8 + 0xffb6 + 0xffb6 + 0x2 + + + + + + PORT7 + 0xffb8 + 0xffb8 + 0x2 + + + + + + EUSCI_B3 + 0xffba + 0xffba + 0x2 + + + + + + EUSCI_B2 + 0xffbc + 0xffbc + 0x2 + + + + + + EUSCI_B1 + 0xffbe + 0xffbe + 0x2 + + + + + + EUSCI_A3 + 0xffc0 + 0xffc0 + 0x2 + + + + + + EUSCI_A2 + 0xffc2 + 0xffc2 + 0x2 + + + + + + PORT6 + 0xffc4 + 0xffc4 + 0x2 + + + + + + PORT5 + 0xffc6 + 0xffc6 + 0x2 + + + + + + TIMER4_A1 + 0xffc8 + 0xffc8 + 0x2 + + + + + + TIMER4_A0 + 0xffca + 0xffca + 0x2 + + + + + + AES256 + 0xffcc + 0xffcc + 0x2 + + + + + + RTC_C + 0xffce + 0xffce + 0x2 + + + + + + PORT4 + 0xffd0 + 0xffd0 + 0x2 + + + + + + PORT3 + 0xffd2 + 0xffd2 + 0x2 + + + + + + TIMER3_A1 + 0xffd4 + 0xffd4 + 0x2 + + + + + + TIMER3_A0 + 0xffd6 + 0xffd6 + 0x2 + + + + + + PORT2 + 0xffd8 + 0xffd8 + 0x2 + + + + + + TIMER2_A1 + 0xffda + 0xffda + 0x2 + + + + + + TIMER2_A0 + 0xffdc + 0xffdc + 0x2 + + + + + + PORT1 + 0xffde + 0xffde + 0x2 + + + + + + TIMER1_A1 + 0xffe0 + 0xffe0 + 0x2 + + + + + + TIMER1_A0 + 0xffe2 + 0xffe2 + 0x2 + + + + + + DMA + 0xffe4 + 0xffe4 + 0x2 + + + + + + EUSCI_A1 + 0xffe6 + 0xffe6 + 0x2 + + + + + + TIMER0_A1 + 0xffe8 + 0xffe8 + 0x2 + + + + + + TIMER0_A0 + 0xffea + 0xffea + 0x2 + + + + + + ADC12_B + 0xffec + 0xffec + 0x2 + + + + + + EUSCI_B0 + 0xffee + 0xffee + 0x2 + + + + + + EUSCI_A0 + 0xfff0 + 0xfff0 + 0x2 + + + + + + WDT + 0xfff2 + 0xfff2 + 0x2 + + + + + + TIMER0_B1 + 0xfff4 + 0xfff4 + 0x2 + + + + + + TIMER0_B0 + 0xfff6 + 0xfff6 + 0x2 + + + + + + COMP_E + 0xfff8 + 0xfff8 + 0x2 + + + + + + UNMI + 0xfffa + 0xfffa + 0x2 + + + + + + SYSNMI + 0xfffc + 0xfffc + 0x2 + + + + + + .reset + 0xfffe + 0xfffe + 0x2 + + + + + + .debug_info + 0x0 + 0x0 + 0x8efd4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .debug_line + 0x0 + 0x0 + 0x16fc3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .debug_frame + 0x0 + 0x0 + 0x7e49 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .debug_abbrev + 0x0 + 0x0 + 0x14dc0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .debug_str + 0x0 + 0x0 + 0x267a1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .debug_aranges + 0x0 + 0x0 + 0x3b00 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .debug_pubnames + 0x0 + 0x0 + 0x7450 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .debug_pubtypes + 0x0 + 0x0 + 0x82b8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $fill000 + 0xff80 + 0xff80 + 0x4 + + + + + $fill001 + 0xff84 + 0xff84 + 0x4 + + + + + $fill002 + 0xff88 + 0xff88 + 0x8 + + + + + SEGMENT_0 + 0x1c00 + 0x1990 + 0x6 + + + + + + + SEGMENT_1 + 0x362c + 0x5d4 + 0x6 + + + + + + SEGMENT_2 + 0x4000 + 0x4000 + 0x122 + 0x6 + + + + + + + SEGMENT_3 + 0x4124 + 0x8 + 0x6 + + + + + + SEGMENT_4 + 0x4400 + 0x4400 + 0x8c8b + 0x5 + + + + + + + SEGMENT_5 + 0xd08c + 0xd08c + 0x92 + 0x4 + + + + + + SEGMENT_6 + 0xff80 + 0xff80 + 0x10 + 0x4 + + + + + + + + SEGMENT_7 + 0xffb4 + 0xffb4 + 0xb59e + 0x5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TINYRAM + 0x0 + 0xa + 0x16 + 0x0 + 0x16 + RWIX + + + + + BSL + 0x0 + 0x1000 + 0x800 + 0x0 + 0x800 + RWIX + + + + + INFOD + 0x0 + 0x1800 + 0x80 + 0x0 + 0x80 + RWIX + + + + + INFOC + 0x0 + 0x1880 + 0x80 + 0x0 + 0x80 + RWIX + + + + + INFOB + 0x0 + 0x1900 + 0x80 + 0x0 + 0x80 + RWIX + + + + + INFOA + 0x0 + 0x1980 + 0x80 + 0x0 + 0x80 + RWIX + + + + + RAM + 0x0 + 0x1c00 + 0x2000 + 0x1f64 + 0x9c + RWIX + + + 0x1c00 + 0xd0e + + + + 0x290e + 0xc82 + + + + 0x3590 + 0x9c + + + 0x362c + 0x5d4 + + + + + + FRAM + 0x0 + 0x4000 + 0xbf80 + 0x911d + 0x2e63 + RWIX + + + 0x4000 + 0x0 + + + + 0x4000 + 0x400 + + + + 0x4400 + 0x2f8 + + + + 0x46f8 + 0x8993 + + + + 0xd08b + 0x1 + + + 0xd08c + 0x92 + + + + 0xd11e + 0x2e62 + + + + + JTAGSIGNATURE + 0x0 + 0xff80 + 0x4 + 0x4 + 0x0 + RWIX + 0xffff + 0x10 + 0x0 + + + 0xff80 + 0x4 + + + + + + BSLSIGNATURE + 0x0 + 0xff84 + 0x4 + 0x4 + 0x0 + RWIX + 0xffff + 0x10 + 0x0 + + + 0xff84 + 0x4 + + + + + + IPESIGNATURE + 0x0 + 0xff88 + 0x8 + 0x8 + 0x0 + RWIX + 0xffff + 0x10 + 0x0 + + + 0xff88 + 0x8 + + + + + + INT00 + 0x0 + 0xff90 + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT01 + 0x0 + 0xff92 + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT02 + 0x0 + 0xff94 + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT03 + 0x0 + 0xff96 + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT04 + 0x0 + 0xff98 + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT05 + 0x0 + 0xff9a + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT06 + 0x0 + 0xff9c + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT07 + 0x0 + 0xff9e + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT08 + 0x0 + 0xffa0 + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT09 + 0x0 + 0xffa2 + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT10 + 0x0 + 0xffa4 + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT11 + 0x0 + 0xffa6 + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT12 + 0x0 + 0xffa8 + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT13 + 0x0 + 0xffaa + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT14 + 0x0 + 0xffac + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT15 + 0x0 + 0xffae + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT16 + 0x0 + 0xffb0 + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT17 + 0x0 + 0xffb2 + 0x2 + 0x0 + 0x2 + RWIX + + + + + INT18 + 0x0 + 0xffb4 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffb4 + 0x2 + + + + + + INT19 + 0x0 + 0xffb6 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffb6 + 0x2 + + + + + + INT20 + 0x0 + 0xffb8 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffb8 + 0x2 + + + + + + INT21 + 0x0 + 0xffba + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffba + 0x2 + + + + + + INT22 + 0x0 + 0xffbc + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffbc + 0x2 + + + + + + INT23 + 0x0 + 0xffbe + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffbe + 0x2 + + + + + + INT24 + 0x0 + 0xffc0 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffc0 + 0x2 + + + + + + INT25 + 0x0 + 0xffc2 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffc2 + 0x2 + + + + + + INT26 + 0x0 + 0xffc4 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffc4 + 0x2 + + + + + + INT27 + 0x0 + 0xffc6 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffc6 + 0x2 + + + + + + INT28 + 0x0 + 0xffc8 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffc8 + 0x2 + + + + + + INT29 + 0x0 + 0xffca + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffca + 0x2 + + + + + + INT30 + 0x0 + 0xffcc + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffcc + 0x2 + + + + + + INT31 + 0x0 + 0xffce + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffce + 0x2 + + + + + + INT32 + 0x0 + 0xffd0 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffd0 + 0x2 + + + + + + INT33 + 0x0 + 0xffd2 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffd2 + 0x2 + + + + + + INT34 + 0x0 + 0xffd4 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffd4 + 0x2 + + + + + + INT35 + 0x0 + 0xffd6 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffd6 + 0x2 + + + + + + INT36 + 0x0 + 0xffd8 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffd8 + 0x2 + + + + + + INT37 + 0x0 + 0xffda + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffda + 0x2 + + + + + + INT38 + 0x0 + 0xffdc + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffdc + 0x2 + + + + + + INT39 + 0x0 + 0xffde + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffde + 0x2 + + + + + + INT40 + 0x0 + 0xffe0 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffe0 + 0x2 + + + + + + INT41 + 0x0 + 0xffe2 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffe2 + 0x2 + + + + + + INT42 + 0x0 + 0xffe4 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffe4 + 0x2 + + + + + + INT43 + 0x0 + 0xffe6 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffe6 + 0x2 + + + + + + INT44 + 0x0 + 0xffe8 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffe8 + 0x2 + + + + + + INT45 + 0x0 + 0xffea + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffea + 0x2 + + + + + + INT46 + 0x0 + 0xffec + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffec + 0x2 + + + + + + INT47 + 0x0 + 0xffee + 0x2 + 0x2 + 0x0 + RWIX + + + 0xffee + 0x2 + + + + + + INT48 + 0x0 + 0xfff0 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xfff0 + 0x2 + + + + + + INT49 + 0x0 + 0xfff2 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xfff2 + 0x2 + + + + + + INT50 + 0x0 + 0xfff4 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xfff4 + 0x2 + + + + + + INT51 + 0x0 + 0xfff6 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xfff6 + 0x2 + + + + + + INT52 + 0x0 + 0xfff8 + 0x2 + 0x2 + 0x0 + RWIX + + + 0xfff8 + 0x2 + + + + + + INT53 + 0x0 + 0xfffa + 0x2 + 0x2 + 0x0 + RWIX + + + 0xfffa + 0x2 + + + + + + INT54 + 0x0 + 0xfffc + 0x2 + 0x2 + 0x0 + RWIX + + + 0xfffc + 0x2 + + + + + + RESET + 0x0 + 0xfffe + 0x2 + 0x2 + 0x0 + RWIX + + + 0xfffe + 0x2 + + + + + + FRAM2 + 0x0 + 0x10000 + 0x34000 + 0xb552 + 0x28aae + RWIX + + + 0x10000 + 0xb552 + + + + 0x1b552 + 0x28aae + + + + + + + __TI_cinit_table + + .data + 0xd08c + 0x6f + 0x290e + 0xc82 + lzss + + + .bss + 0xd108 + 0x6 + 0x1c00 + 0xd0e + zero_init + + + + + __TI_handler_table + + 0x0 + __TI_zero_init + + + 0x1 + __TI_decompress_lzss + + + 0x2 + __TI_decompress_none + + + + + __mpu_enable + 0x1 + + + mpu_segment_border1 + 0x440 + + + mpu_segment_border2 + 0x440 + + + mpu_sam_value + 0x1513 + + + mpu_ctl0_value + 0xa501 + + + ADC12CTL0 + 0x800 + + + ADC12CTL0_L + 0x800 + + + ADC12CTL0_H + 0x801 + + + ADC12CTL1 + 0x802 + + + ADC12CTL1_L + 0x802 + + + ADC12CTL1_H + 0x803 + + + ADC12CTL2 + 0x804 + + + ADC12CTL2_L + 0x804 + + + ADC12CTL2_H + 0x805 + + + ADC12CTL3 + 0x806 + + + ADC12CTL3_L + 0x806 + + + ADC12CTL3_H + 0x807 + + + ADC12LO + 0x808 + + + ADC12LO_L + 0x808 + + + ADC12LO_H + 0x809 + + + ADC12HI + 0x80a + + + ADC12HI_L + 0x80a + + + ADC12HI_H + 0x80b + + + ADC12IFGR0 + 0x80c + + + ADC12IFGR0_L + 0x80c + + + ADC12IFGR0_H + 0x80d + + + ADC12IFGR1 + 0x80e + + + ADC12IFGR1_L + 0x80e + + + ADC12IFGR1_H + 0x80f + + + ADC12IFGR2 + 0x810 + + + ADC12IFGR2_L + 0x810 + + + ADC12IFGR2_H + 0x811 + + + ADC12IER0 + 0x812 + + + ADC12IER0_L + 0x812 + + + ADC12IER0_H + 0x813 + + + ADC12IER1 + 0x814 + + + ADC12IER1_L + 0x814 + + + ADC12IER1_H + 0x815 + + + ADC12IER2 + 0x816 + + + ADC12IER2_L + 0x816 + + + ADC12IER2_H + 0x817 + + + ADC12IV + 0x818 + + + ADC12IV_L + 0x818 + + + ADC12IV_H + 0x819 + + + ADC12MCTL0 + 0x820 + + + ADC12MCTL0_L + 0x820 + + + ADC12MCTL0_H + 0x821 + + + ADC12MCTL1 + 0x822 + + + ADC12MCTL1_L + 0x822 + + + ADC12MCTL1_H + 0x823 + + + ADC12MCTL2 + 0x824 + + + ADC12MCTL2_L + 0x824 + + + ADC12MCTL2_H + 0x825 + + + ADC12MCTL3 + 0x826 + + + ADC12MCTL3_L + 0x826 + + + ADC12MCTL3_H + 0x827 + + + ADC12MCTL4 + 0x828 + + + ADC12MCTL4_L + 0x828 + + + ADC12MCTL4_H + 0x829 + + + ADC12MCTL5 + 0x82a + + + ADC12MCTL5_L + 0x82a + + + ADC12MCTL5_H + 0x82b + + + ADC12MCTL6 + 0x82c + + + ADC12MCTL6_L + 0x82c + + + ADC12MCTL6_H + 0x82d + + + ADC12MCTL7 + 0x82e + + + ADC12MCTL7_L + 0x82e + + + ADC12MCTL7_H + 0x82f + + + ADC12MCTL8 + 0x830 + + + ADC12MCTL8_L + 0x830 + + + ADC12MCTL8_H + 0x831 + + + ADC12MCTL9 + 0x832 + + + ADC12MCTL9_L + 0x832 + + + ADC12MCTL9_H + 0x833 + + + ADC12MCTL10 + 0x834 + + + ADC12MCTL10_L + 0x834 + + + ADC12MCTL10_H + 0x835 + + + ADC12MCTL11 + 0x836 + + + ADC12MCTL11_L + 0x836 + + + ADC12MCTL11_H + 0x837 + + + ADC12MCTL12 + 0x838 + + + ADC12MCTL12_L + 0x838 + + + ADC12MCTL12_H + 0x839 + + + ADC12MCTL13 + 0x83a + + + ADC12MCTL13_L + 0x83a + + + ADC12MCTL13_H + 0x83b + + + ADC12MCTL14 + 0x83c + + + ADC12MCTL14_L + 0x83c + + + ADC12MCTL14_H + 0x83d + + + ADC12MCTL15 + 0x83e + + + ADC12MCTL15_L + 0x83e + + + ADC12MCTL15_H + 0x83f + + + ADC12MCTL16 + 0x840 + + + ADC12MCTL16_L + 0x840 + + + ADC12MCTL16_H + 0x841 + + + ADC12MCTL17 + 0x842 + + + ADC12MCTL17_L + 0x842 + + + ADC12MCTL17_H + 0x843 + + + ADC12MCTL18 + 0x844 + + + ADC12MCTL18_L + 0x844 + + + ADC12MCTL18_H + 0x845 + + + ADC12MCTL19 + 0x846 + + + ADC12MCTL19_L + 0x846 + + + ADC12MCTL19_H + 0x847 + + + ADC12MCTL20 + 0x848 + + + ADC12MCTL20_L + 0x848 + + + ADC12MCTL20_H + 0x849 + + + ADC12MCTL21 + 0x84a + + + ADC12MCTL21_L + 0x84a + + + ADC12MCTL21_H + 0x84b + + + ADC12MCTL22 + 0x84c + + + ADC12MCTL22_L + 0x84c + + + ADC12MCTL22_H + 0x84d + + + ADC12MCTL23 + 0x84e + + + ADC12MCTL23_L + 0x84e + + + ADC12MCTL23_H + 0x84f + + + ADC12MCTL24 + 0x850 + + + ADC12MCTL24_L + 0x850 + + + ADC12MCTL24_H + 0x851 + + + ADC12MCTL25 + 0x852 + + + ADC12MCTL25_L + 0x852 + + + ADC12MCTL25_H + 0x853 + + + ADC12MCTL26 + 0x854 + + + ADC12MCTL26_L + 0x854 + + + ADC12MCTL26_H + 0x855 + + + ADC12MCTL27 + 0x856 + + + ADC12MCTL27_L + 0x856 + + + ADC12MCTL27_H + 0x857 + + + ADC12MCTL28 + 0x858 + + + ADC12MCTL28_L + 0x858 + + + ADC12MCTL28_H + 0x859 + + + ADC12MCTL29 + 0x85a + + + ADC12MCTL29_L + 0x85a + + + ADC12MCTL29_H + 0x85b + + + ADC12MCTL30 + 0x85c + + + ADC12MCTL30_L + 0x85c + + + ADC12MCTL30_H + 0x85d + + + ADC12MCTL31 + 0x85e + + + ADC12MCTL31_L + 0x85e + + + ADC12MCTL31_H + 0x85f + + + ADC12MEM0 + 0x860 + + + ADC12MEM0_L + 0x860 + + + ADC12MEM0_H + 0x861 + + + ADC12MEM1 + 0x862 + + + ADC12MEM1_L + 0x862 + + + ADC12MEM1_H + 0x863 + + + ADC12MEM2 + 0x864 + + + ADC12MEM2_L + 0x864 + + + ADC12MEM2_H + 0x865 + + + ADC12MEM3 + 0x866 + + + ADC12MEM3_L + 0x866 + + + ADC12MEM3_H + 0x867 + + + ADC12MEM4 + 0x868 + + + ADC12MEM4_L + 0x868 + + + ADC12MEM4_H + 0x869 + + + ADC12MEM5 + 0x86a + + + ADC12MEM5_L + 0x86a + + + ADC12MEM5_H + 0x86b + + + ADC12MEM6 + 0x86c + + + ADC12MEM6_L + 0x86c + + + ADC12MEM6_H + 0x86d + + + ADC12MEM7 + 0x86e + + + ADC12MEM7_L + 0x86e + + + ADC12MEM7_H + 0x86f + + + ADC12MEM8 + 0x870 + + + ADC12MEM8_L + 0x870 + + + ADC12MEM8_H + 0x871 + + + ADC12MEM9 + 0x872 + + + ADC12MEM9_L + 0x872 + + + ADC12MEM9_H + 0x873 + + + ADC12MEM10 + 0x874 + + + ADC12MEM10_L + 0x874 + + + ADC12MEM10_H + 0x875 + + + ADC12MEM11 + 0x876 + + + ADC12MEM11_L + 0x876 + + + ADC12MEM11_H + 0x877 + + + ADC12MEM12 + 0x878 + + + ADC12MEM12_L + 0x878 + + + ADC12MEM12_H + 0x879 + + + ADC12MEM13 + 0x87a + + + ADC12MEM13_L + 0x87a + + + ADC12MEM13_H + 0x87b + + + ADC12MEM14 + 0x87c + + + ADC12MEM14_L + 0x87c + + + ADC12MEM14_H + 0x87d + + + ADC12MEM15 + 0x87e + + + ADC12MEM15_L + 0x87e + + + ADC12MEM15_H + 0x87f + + + ADC12MEM16 + 0x880 + + + ADC12MEM16_L + 0x880 + + + ADC12MEM16_H + 0x881 + + + ADC12MEM17 + 0x882 + + + ADC12MEM17_L + 0x882 + + + ADC12MEM17_H + 0x883 + + + ADC12MEM18 + 0x884 + + + ADC12MEM18_L + 0x884 + + + ADC12MEM18_H + 0x885 + + + ADC12MEM19 + 0x886 + + + ADC12MEM19_L + 0x886 + + + ADC12MEM19_H + 0x887 + + + ADC12MEM20 + 0x888 + + + ADC12MEM20_L + 0x888 + + + ADC12MEM20_H + 0x889 + + + ADC12MEM21 + 0x88a + + + ADC12MEM21_L + 0x88a + + + ADC12MEM21_H + 0x88b + + + ADC12MEM22 + 0x88c + + + ADC12MEM22_L + 0x88c + + + ADC12MEM22_H + 0x88d + + + ADC12MEM23 + 0x88e + + + ADC12MEM23_L + 0x88e + + + ADC12MEM23_H + 0x88f + + + ADC12MEM24 + 0x890 + + + ADC12MEM24_L + 0x890 + + + ADC12MEM24_H + 0x891 + + + ADC12MEM25 + 0x892 + + + ADC12MEM25_L + 0x892 + + + ADC12MEM25_H + 0x893 + + + ADC12MEM26 + 0x894 + + + ADC12MEM26_L + 0x894 + + + ADC12MEM26_H + 0x895 + + + ADC12MEM27 + 0x896 + + + ADC12MEM27_L + 0x896 + + + ADC12MEM27_H + 0x897 + + + ADC12MEM28 + 0x898 + + + ADC12MEM28_L + 0x898 + + + ADC12MEM28_H + 0x899 + + + ADC12MEM29 + 0x89a + + + ADC12MEM29_L + 0x89a + + + ADC12MEM29_H + 0x89b + + + ADC12MEM30 + 0x89c + + + ADC12MEM30_L + 0x89c + + + ADC12MEM30_H + 0x89d + + + ADC12MEM31 + 0x89e + + + ADC12MEM31_L + 0x89e + + + ADC12MEM31_H + 0x89f + + + AESACTL0 + 0x9c0 + + + AESACTL0_L + 0x9c0 + + + AESACTL0_H + 0x9c1 + + + AESACTL1 + 0x9c2 + + + AESACTL1_L + 0x9c2 + + + AESACTL1_H + 0x9c3 + + + AESASTAT + 0x9c4 + + + AESASTAT_L + 0x9c4 + + + AESASTAT_H + 0x9c5 + + + AESAKEY + 0x9c6 + + + AESAKEY_L + 0x9c6 + + + AESAKEY_H + 0x9c7 + + + AESADIN + 0x9c8 + + + AESADIN_L + 0x9c8 + + + AESADIN_H + 0x9c9 + + + AESADOUT + 0x9ca + + + AESADOUT_L + 0x9ca + + + AESADOUT_H + 0x9cb + + + AESAXDIN + 0x9cc + + + AESAXDIN_L + 0x9cc + + + AESAXDIN_H + 0x9cd + + + AESAXIN + 0x9ce + + + AESAXIN_L + 0x9ce + + + AESAXIN_H + 0x9cf + + + CAPTIO0CTL + 0x43e + + + CAPTIO0CTL_L + 0x43e + + + CAPTIO0CTL_H + 0x43f + + + CAPTIO1CTL + 0x47e + + + CAPTIO1CTL_L + 0x47e + + + CAPTIO1CTL_H + 0x47f + + + CECTL0 + 0x8c0 + + + CECTL0_L + 0x8c0 + + + CECTL0_H + 0x8c1 + + + CECTL1 + 0x8c2 + + + CECTL1_L + 0x8c2 + + + CECTL1_H + 0x8c3 + + + CECTL2 + 0x8c4 + + + CECTL2_L + 0x8c4 + + + CECTL2_H + 0x8c5 + + + CECTL3 + 0x8c6 + + + CECTL3_L + 0x8c6 + + + CECTL3_H + 0x8c7 + + + CEINT + 0x8cc + + + CEINT_L + 0x8cc + + + CEINT_H + 0x8cd + + + CEIV + 0x8ce + + + CEIV_L + 0x8ce + + + CEIV_H + 0x8cf + + + CRCDI + 0x150 + + + CRCDI_L + 0x150 + + + CRCDI_H + 0x151 + + + CRCDIRB + 0x152 + + + CRCDIRB_L + 0x152 + + + CRCDIRB_H + 0x153 + + + CRCINIRES + 0x154 + + + CRCINIRES_L + 0x154 + + + CRCINIRES_H + 0x155 + + + CRCRESR + 0x156 + + + CRCRESR_L + 0x156 + + + CRCRESR_H + 0x157 + + + CRC32DIW0 + 0x980 + + + CRC32DIW0_L + 0x980 + + + CRC32DIW0_H + 0x981 + + + CRC32DIW1 + 0x982 + + + CRC32DIW1_L + 0x982 + + + CRC32DIW1_H + 0x983 + + + CRC32DIRBW1 + 0x984 + + + CRC32DIRBW1_L + 0x984 + + + CRC32DIRBW1_H + 0x985 + + + CRC32DIRBW0 + 0x986 + + + CRC32DIRBW0_L + 0x986 + + + CRC32DIRBW0_H + 0x987 + + + CRC32INIRESW0 + 0x988 + + + CRC32INIRESW0_L + 0x988 + + + CRC32INIRESW0_H + 0x989 + + + CRC32INIRESW1 + 0x98a + + + CRC32INIRESW1_L + 0x98a + + + CRC32INIRESW1_H + 0x98b + + + CRC32RESRW1 + 0x98c + + + CRC32RESRW1_L + 0x98c + + + CRC32RESRW1_H + 0x98d + + + CRC32RESRW0 + 0x98e + + + CRC32RESRW0_L + 0x98e + + + CRC32RESRW0_H + 0x98f + + + CRC16DIW0 + 0x990 + + + CRC16DIW0_L + 0x990 + + + CRC16DIW0_H + 0x991 + + + CRC16DIRBW0 + 0x996 + + + CRC16DIRBW0_L + 0x996 + + + CRC16DIRBW0_H + 0x997 + + + CRC16INIRESW0 + 0x998 + + + CRC16INIRESW0_L + 0x998 + + + CRC16INIRESW0_H + 0x999 + + + CRC16RESRW0 + 0x99e + + + CRC16RESRW0_L + 0x99e + + + CRC16RESRW0_H + 0x99f + + + CSCTL0 + 0x160 + + + CSCTL0_L + 0x160 + + + CSCTL0_H + 0x161 + + + CSCTL1 + 0x162 + + + CSCTL1_L + 0x162 + + + CSCTL1_H + 0x163 + + + CSCTL2 + 0x164 + + + CSCTL2_L + 0x164 + + + CSCTL2_H + 0x165 + + + CSCTL3 + 0x166 + + + CSCTL3_L + 0x166 + + + CSCTL3_H + 0x167 + + + CSCTL4 + 0x168 + + + CSCTL4_L + 0x168 + + + CSCTL4_H + 0x169 + + + CSCTL5 + 0x16a + + + CSCTL5_L + 0x16a + + + CSCTL5_H + 0x16b + + + CSCTL6 + 0x16c + + + CSCTL6_L + 0x16c + + + CSCTL6_H + 0x16d + + + PAIN + 0x200 + + + PAIN_L + 0x200 + + + PAIN_H + 0x201 + + + PAOUT + 0x202 + + + PAOUT_L + 0x202 + + + PAOUT_H + 0x203 + + + PADIR + 0x204 + + + PADIR_L + 0x204 + + + PADIR_H + 0x205 + + + PAREN + 0x206 + + + PAREN_L + 0x206 + + + PAREN_H + 0x207 + + + PASEL0 + 0x20a + + + PASEL0_L + 0x20a + + + PASEL0_H + 0x20b + + + PASEL1 + 0x20c + + + PASEL1_L + 0x20c + + + PASEL1_H + 0x20d + + + P1IV + 0x20e + + + P1IV_L + 0x20e + + + P1IV_H + 0x20f + + + PASELC + 0x216 + + + PASELC_L + 0x216 + + + PASELC_H + 0x217 + + + PAIES + 0x218 + + + PAIES_L + 0x218 + + + PAIES_H + 0x219 + + + PAIE + 0x21a + + + PAIE_L + 0x21a + + + PAIE_H + 0x21b + + + PAIFG + 0x21c + + + PAIFG_L + 0x21c + + + PAIFG_H + 0x21d + + + P2IV + 0x21e + + + P2IV_L + 0x21e + + + P2IV_H + 0x21f + + + PBIN + 0x220 + + + PBIN_L + 0x220 + + + PBIN_H + 0x221 + + + PBOUT + 0x222 + + + PBOUT_L + 0x222 + + + PBOUT_H + 0x223 + + + PBDIR + 0x224 + + + PBDIR_L + 0x224 + + + PBDIR_H + 0x225 + + + PBREN + 0x226 + + + PBREN_L + 0x226 + + + PBREN_H + 0x227 + + + PBSEL0 + 0x22a + + + PBSEL0_L + 0x22a + + + PBSEL0_H + 0x22b + + + PBSEL1 + 0x22c + + + PBSEL1_L + 0x22c + + + PBSEL1_H + 0x22d + + + P3IV + 0x22e + + + P3IV_L + 0x22e + + + P3IV_H + 0x22f + + + PBSELC + 0x236 + + + PBSELC_L + 0x236 + + + PBSELC_H + 0x237 + + + PBIES + 0x238 + + + PBIES_L + 0x238 + + + PBIES_H + 0x239 + + + PBIE + 0x23a + + + PBIE_L + 0x23a + + + PBIE_H + 0x23b + + + PBIFG + 0x23c + + + PBIFG_L + 0x23c + + + PBIFG_H + 0x23d + + + P4IV + 0x23e + + + P4IV_L + 0x23e + + + P4IV_H + 0x23f + + + PCIN + 0x240 + + + PCIN_L + 0x240 + + + PCIN_H + 0x241 + + + PCOUT + 0x242 + + + PCOUT_L + 0x242 + + + PCOUT_H + 0x243 + + + PCDIR + 0x244 + + + PCDIR_L + 0x244 + + + PCDIR_H + 0x245 + + + PCREN + 0x246 + + + PCREN_L + 0x246 + + + PCREN_H + 0x247 + + + PCSEL0 + 0x24a + + + PCSEL0_L + 0x24a + + + PCSEL0_H + 0x24b + + + PCSEL1 + 0x24c + + + PCSEL1_L + 0x24c + + + PCSEL1_H + 0x24d + + + P5IV + 0x24e + + + P5IV_L + 0x24e + + + P5IV_H + 0x24f + + + PCSELC + 0x256 + + + PCSELC_L + 0x256 + + + PCSELC_H + 0x257 + + + PCIES + 0x258 + + + PCIES_L + 0x258 + + + PCIES_H + 0x259 + + + PCIE + 0x25a + + + PCIE_L + 0x25a + + + PCIE_H + 0x25b + + + PCIFG + 0x25c + + + PCIFG_L + 0x25c + + + PCIFG_H + 0x25d + + + P6IV + 0x25e + + + P6IV_L + 0x25e + + + P6IV_H + 0x25f + + + PDIN + 0x260 + + + PDIN_L + 0x260 + + + PDIN_H + 0x261 + + + PDOUT + 0x262 + + + PDOUT_L + 0x262 + + + PDOUT_H + 0x263 + + + PDDIR + 0x264 + + + PDDIR_L + 0x264 + + + PDDIR_H + 0x265 + + + PDREN + 0x266 + + + PDREN_L + 0x266 + + + PDREN_H + 0x267 + + + PDSEL0 + 0x26a + + + PDSEL0_L + 0x26a + + + PDSEL0_H + 0x26b + + + PDSEL1 + 0x26c + + + PDSEL1_L + 0x26c + + + PDSEL1_H + 0x26d + + + P7IV + 0x26e + + + P7IV_L + 0x26e + + + P7IV_H + 0x26f + + + PDSELC + 0x276 + + + PDSELC_L + 0x276 + + + PDSELC_H + 0x277 + + + PDIES + 0x278 + + + PDIES_L + 0x278 + + + PDIES_H + 0x279 + + + PDIE + 0x27a + + + PDIE_L + 0x27a + + + PDIE_H + 0x27b + + + PDIFG + 0x27c + + + PDIFG_L + 0x27c + + + PDIFG_H + 0x27d + + + P8IV + 0x27e + + + P8IV_L + 0x27e + + + P8IV_H + 0x27f + + + PJIN + 0x320 + + + PJIN_L + 0x320 + + + PJIN_H + 0x321 + + + PJOUT + 0x322 + + + PJOUT_L + 0x322 + + + PJOUT_H + 0x323 + + + PJDIR + 0x324 + + + PJDIR_L + 0x324 + + + PJDIR_H + 0x325 + + + PJREN + 0x326 + + + PJREN_L + 0x326 + + + PJREN_H + 0x327 + + + PJSEL0 + 0x32a + + + PJSEL0_L + 0x32a + + + PJSEL0_H + 0x32b + + + PJSEL1 + 0x32c + + + PJSEL1_L + 0x32c + + + PJSEL1_H + 0x32d + + + PJSELC + 0x336 + + + PJSELC_L + 0x336 + + + PJSELC_H + 0x337 + + + P1IN + 0x200 + + + P2IN + 0x201 + + + P2OUT + 0x203 + + + P1OUT + 0x202 + + + P1DIR + 0x204 + + + P2DIR + 0x205 + + + P1REN + 0x206 + + + P2REN + 0x207 + + + P1SEL0 + 0x20a + + + P2SEL0 + 0x20b + + + P1SEL1 + 0x20c + + + P2SEL1 + 0x20d + + + P1SELC + 0x216 + + + P2SELC + 0x217 + + + P1IES + 0x218 + + + P2IES + 0x219 + + + P1IE + 0x21a + + + P2IE + 0x21b + + + P1IFG + 0x21c + + + P2IFG + 0x21d + + + P3IN + 0x220 + + + P4IN + 0x221 + + + P3OUT + 0x222 + + + P4OUT + 0x223 + + + P3DIR + 0x224 + + + P4DIR + 0x225 + + + P3REN + 0x226 + + + P4REN + 0x227 + + + P4SEL0 + 0x22b + + + P3SEL0 + 0x22a + + + P3SEL1 + 0x22c + + + P4SEL1 + 0x22d + + + P3SELC + 0x236 + + + P4SELC + 0x237 + + + P3IES + 0x238 + + + P4IES + 0x239 + + + P3IE + 0x23a + + + P4IE + 0x23b + + + P3IFG + 0x23c + + + P4IFG + 0x23d + + + P5IN + 0x240 + + + P6IN + 0x241 + + + P5OUT + 0x242 + + + P6OUT + 0x243 + + + P5DIR + 0x244 + + + P6DIR + 0x245 + + + P5REN + 0x246 + + + P6REN + 0x247 + + + P5SEL0 + 0x24a + + + P6SEL0 + 0x24b + + + P5SEL1 + 0x24c + + + P6SEL1 + 0x24d + + + P5SELC + 0x256 + + + P6SELC + 0x257 + + + P5IES + 0x258 + + + P6IES + 0x259 + + + P5IE + 0x25a + + + P6IE + 0x25b + + + P5IFG + 0x25c + + + P6IFG + 0x25d + + + P7IN + 0x260 + + + P8IN + 0x261 + + + P7OUT + 0x262 + + + P8OUT + 0x263 + + + P7DIR + 0x264 + + + P8DIR + 0x265 + + + P7REN + 0x266 + + + P8REN + 0x267 + + + P7SEL0 + 0x26a + + + P8SEL0 + 0x26b + + + P7SEL1 + 0x26c + + + P8SEL1 + 0x26d + + + P7SELC + 0x276 + + + P8SELC + 0x277 + + + P7IES + 0x278 + + + P8IES + 0x279 + + + P7IE + 0x27a + + + P8IE + 0x27b + + + P7IFG + 0x27c + + + P8IFG + 0x27d + + + DMACTL0 + 0x500 + + + DMACTL0_L + 0x500 + + + DMACTL0_H + 0x501 + + + DMACTL1 + 0x502 + + + DMACTL1_L + 0x502 + + + DMACTL1_H + 0x503 + + + DMACTL2 + 0x504 + + + DMACTL2_L + 0x504 + + + DMACTL2_H + 0x505 + + + DMACTL4 + 0x508 + + + DMACTL4_L + 0x508 + + + DMACTL4_H + 0x509 + + + DMAIV + 0x50e + + + DMAIV_L + 0x50e + + + DMAIV_H + 0x50f + + + DMA0CTL + 0x510 + + + DMA0CTL_L + 0x510 + + + DMA0CTL_H + 0x511 + + + DMA0SA + 0x512 + + + DMA0SAL + 0x512 + + + DMA0SAH + 0x514 + + + DMA0DA + 0x516 + + + DMA0DAL + 0x516 + + + DMA0DAH + 0x518 + + + DMA0SZ + 0x51a + + + DMA0SZ_L + 0x51a + + + DMA0SZ_H + 0x51b + + + DMA1CTL + 0x520 + + + DMA1CTL_L + 0x520 + + + DMA1CTL_H + 0x521 + + + DMA1SA + 0x522 + + + DMA1SAL + 0x522 + + + DMA1SAH + 0x524 + + + DMA1DA + 0x526 + + + DMA1DAL + 0x526 + + + DMA1DAH + 0x528 + + + DMA1SZ + 0x52a + + + DMA1SZ_L + 0x52a + + + DMA1SZ_H + 0x52b + + + DMA2CTL + 0x530 + + + DMA2CTL_L + 0x530 + + + DMA2CTL_H + 0x531 + + + DMA2SA + 0x532 + + + DMA2SAL + 0x532 + + + DMA2SAH + 0x534 + + + DMA2DA + 0x536 + + + DMA2DAL + 0x536 + + + DMA2DAH + 0x538 + + + DMA2SZ + 0x53a + + + DMA2SZ_L + 0x53a + + + DMA2SZ_H + 0x53b + + + DMA3CTL + 0x540 + + + DMA3CTL_L + 0x540 + + + DMA3CTL_H + 0x541 + + + DMA3SA + 0x542 + + + DMA3SAL + 0x542 + + + DMA3SAH + 0x544 + + + DMA3DA + 0x546 + + + DMA3DAL + 0x546 + + + DMA3DAH + 0x548 + + + DMA3SZ + 0x54a + + + DMA3SZ_L + 0x54a + + + DMA3SZ_H + 0x54b + + + DMA4CTL + 0x550 + + + DMA4CTL_L + 0x550 + + + DMA4CTL_H + 0x551 + + + DMA4SA + 0x552 + + + DMA4SAL + 0x552 + + + DMA4SAH + 0x554 + + + DMA4DA + 0x556 + + + DMA4DAL + 0x556 + + + DMA4DAH + 0x558 + + + DMA4SZ + 0x55a + + + DMA4SZ_L + 0x55a + + + DMA4SZ_H + 0x55b + + + DMA5CTL + 0x560 + + + DMA5CTL_L + 0x560 + + + DMA5CTL_H + 0x561 + + + DMA5SA + 0x562 + + + DMA5SAL + 0x562 + + + DMA5SAH + 0x564 + + + DMA5DA + 0x566 + + + DMA5DAL + 0x566 + + + DMA5DAH + 0x568 + + + DMA5SZ + 0x56a + + + DMA5SZ_L + 0x56a + + + DMA5SZ_H + 0x56b + + + FRCTL0 + 0x140 + + + FRCTL0_L + 0x140 + + + FRCTL0_H + 0x141 + + + GCCTL0 + 0x144 + + + GCCTL0_L + 0x144 + + + GCCTL0_H + 0x145 + + + GCCTL1 + 0x146 + + + GCCTL1_L + 0x146 + + + GCCTL1_H + 0x147 + + + LEACAP + 0xa80 + + + LEACAPL + 0xa80 + + + LEACAPH + 0xa82 + + + LEACNF0 + 0xa84 + + + LEACNF0L + 0xa84 + + + LEACNF0H + 0xa86 + + + LEACNF1 + 0xa88 + + + LEACNF1L + 0xa88 + + + LEACNF1H + 0xa8a + + + LEACNF2 + 0xa8c + + + LEACNF2L + 0xa8c + + + LEACNF2H + 0xa8e + + + LEAMB + 0xa90 + + + LEAMBL + 0xa90 + + + LEAMBH + 0xa92 + + + LEAMT + 0xa94 + + + LEAMTL + 0xa94 + + + LEAMTH + 0xa96 + + + LEACMA + 0xa98 + + + LEACMAL + 0xa98 + + + LEACMAH + 0xa9a + + + LEACMCTL + 0xa9c + + + LEACMCTLL + 0xa9c + + + LEACMCTLH + 0xa9e + + + LEACMDSTAT + 0xaa8 + + + LEACMDSTATL + 0xaa8 + + + LEACMDSTATH + 0xaaa + + + LEAS1STAT + 0xaac + + + LEAS1STATL + 0xaac + + + LEAS1STATH + 0xaae + + + LEAS0STAT + 0xab0 + + + LEAS0STATL + 0xab0 + + + LEAS0STATH + 0xab2 + + + LEADSTSTAT + 0xab4 + + + LEADSTSTATL + 0xab4 + + + LEADSTSTATH + 0xab6 + + + LEAPMCTL + 0xac0 + + + LEAPMCTLL + 0xac0 + + + LEAPMCTLH + 0xac2 + + + LEAPMDST + 0xac4 + + + LEAPMDSTL + 0xac4 + + + LEAPMDSTH + 0xac6 + + + LEAPMS1 + 0xac8 + + + LEAPMS1L + 0xac8 + + + LEAPMS1H + 0xaca + + + LEAPMS0 + 0xacc + + + LEAPMS0L + 0xacc + + + LEAPMS0H + 0xace + + + LEAPMCB + 0xad0 + + + LEAPMCBL + 0xad0 + + + LEAPMCBH + 0xad2 + + + LEAIFGSET + 0xaf0 + + + LEAIFGSETL + 0xaf0 + + + LEAIFGSETH + 0xaf2 + + + LEAIE + 0xaf4 + + + LEAIEL + 0xaf4 + + + LEAIEH + 0xaf6 + + + LEAIFG + 0xaf8 + + + LEAIFGL + 0xaf8 + + + LEAIFGH + 0xafa + + + LEAIV + 0xafc + + + LEAIVL + 0xafc + + + LEAIVH + 0xafe + + + MPUCTL0 + 0x5a0 + + + MPUCTL0_L + 0x5a0 + + + MPUCTL0_H + 0x5a1 + + + MPUCTL1 + 0x5a2 + + + MPUCTL1_L + 0x5a2 + + + MPUCTL1_H + 0x5a3 + + + MPUSEGB2 + 0x5a4 + + + MPUSEGB2_L + 0x5a4 + + + MPUSEGB2_H + 0x5a5 + + + MPUSEGB1 + 0x5a6 + + + MPUSEGB1_L + 0x5a6 + + + MPUSEGB1_H + 0x5a7 + + + MPUSAM + 0x5a8 + + + MPUSAM_L + 0x5a8 + + + MPUSAM_H + 0x5a9 + + + MPUIPC0 + 0x5aa + + + MPUIPC0_L + 0x5aa + + + MPUIPC0_H + 0x5ab + + + MPUIPSEGB2 + 0x5ac + + + MPUIPSEGB2_L + 0x5ac + + + MPUIPSEGB2_H + 0x5ad + + + MPUIPSEGB1 + 0x5ae + + + MPUIPSEGB1_L + 0x5ae + + + MPUIPSEGB1_H + 0x5af + + + MPY + 0x4c0 + + + MPY_L + 0x4c0 + + + MPY_H + 0x4c1 + + + MPYS + 0x4c2 + + + MPYS_L + 0x4c2 + + + MPYS_H + 0x4c3 + + + MAC + 0x4c4 + + + MAC_L + 0x4c4 + + + MAC_H + 0x4c5 + + + MACS + 0x4c6 + + + MACS_L + 0x4c6 + + + MACS_H + 0x4c7 + + + OP2 + 0x4c8 + + + OP2_L + 0x4c8 + + + OP2_H + 0x4c9 + + + RESLO + 0x4ca + + + RESLO_L + 0x4ca + + + RESLO_H + 0x4cb + + + RESHI + 0x4cc + + + RESHI_L + 0x4cc + + + RESHI_H + 0x4cd + + + SUMEXT + 0x4ce + + + SUMEXT_L + 0x4ce + + + SUMEXT_H + 0x4cf + + + MPY32L + 0x4d0 + + + MPY32L_L + 0x4d0 + + + MPY32L_H + 0x4d1 + + + MPY32H + 0x4d2 + + + MPY32H_L + 0x4d2 + + + MPY32H_H + 0x4d3 + + + MPYS32L + 0x4d4 + + + MPYS32L_L + 0x4d4 + + + MPYS32L_H + 0x4d5 + + + MPYS32H + 0x4d6 + + + MPYS32H_L + 0x4d6 + + + MPYS32H_H + 0x4d7 + + + MAC32L + 0x4d8 + + + MAC32L_L + 0x4d8 + + + MAC32L_H + 0x4d9 + + + MAC32H + 0x4da + + + MAC32H_L + 0x4da + + + MAC32H_H + 0x4db + + + MACS32L + 0x4dc + + + MACS32L_L + 0x4dc + + + MACS32L_H + 0x4dd + + + MACS32H + 0x4de + + + MACS32H_L + 0x4de + + + MACS32H_H + 0x4df + + + OP2L + 0x4e0 + + + OP2L_L + 0x4e0 + + + OP2L_H + 0x4e1 + + + OP2H + 0x4e2 + + + OP2H_L + 0x4e2 + + + OP2H_H + 0x4e3 + + + RES0 + 0x4e4 + + + RES0_L + 0x4e4 + + + RES0_H + 0x4e5 + + + RES1 + 0x4e6 + + + RES1_L + 0x4e6 + + + RES1_H + 0x4e7 + + + RES2 + 0x4e8 + + + RES2_L + 0x4e8 + + + RES2_H + 0x4e9 + + + RES3 + 0x4ea + + + RES3_L + 0x4ea + + + RES3_H + 0x4eb + + + MPY32CTL0 + 0x4ec + + + MPY32CTL0_L + 0x4ec + + + MPY32CTL0_H + 0x4ed + + + PMMCTL0 + 0x120 + + + PMMCTL0_L + 0x120 + + + PMMCTL0_H + 0x121 + + + PMMIFG + 0x12a + + + PMMIFG_L + 0x12a + + + PMMIFG_H + 0x12b + + + PM5CTL0 + 0x130 + + + PM5CTL0_L + 0x130 + + + PM5CTL0_H + 0x131 + + + RCCTL0 + 0x158 + + + RCCTL0_L + 0x158 + + + RCCTL0_H + 0x159 + + + REFCTL0 + 0x1b0 + + + REFCTL0_L + 0x1b0 + + + REFCTL0_H + 0x1b1 + + + RTCCTL0 + 0x4a0 + + + RTCCTL0_L + 0x4a0 + + + RTCCTL0_H + 0x4a1 + + + RTCCTL13 + 0x4a2 + + + RTCCTL13_L + 0x4a2 + + + RTCCTL13_H + 0x4a3 + + + RTCOCAL + 0x4a4 + + + RTCOCAL_L + 0x4a4 + + + RTCOCAL_H + 0x4a5 + + + RTCTCMP + 0x4a6 + + + RTCTCMP_L + 0x4a6 + + + RTCTCMP_H + 0x4a7 + + + RTCPS0CTL + 0x4a8 + + + RTCPS0CTL_L + 0x4a8 + + + RTCPS0CTL_H + 0x4a9 + + + RTCPS1CTL + 0x4aa + + + RTCPS1CTL_L + 0x4aa + + + RTCPS1CTL_H + 0x4ab + + + RTCPS + 0x4ac + + + RTCPS_L + 0x4ac + + + RTCPS_H + 0x4ad + + + RTCIV + 0x4ae + + + RTCIV_L + 0x4ae + + + RTCIV_H + 0x4af + + + RTCTIM0 + 0x4b0 + + + RTCTIM0_L + 0x4b0 + + + RTCTIM0_H + 0x4b1 + + + RTCCNT12 + 0x4b0 + + + RTCCNT12_L + 0x4b0 + + + RTCCNT12_H + 0x4b1 + + + RTCTIM1 + 0x4b2 + + + RTCTIM1_L + 0x4b2 + + + RTCTIM1_H + 0x4b3 + + + RTCCNT34 + 0x4b2 + + + RTCCNT34_L + 0x4b2 + + + RTCCNT34_H + 0x4b3 + + + RTCDATE + 0x4b4 + + + RTCDATE_L + 0x4b4 + + + RTCDATE_H + 0x4b5 + + + RTCYEAR + 0x4b6 + + + RTCYEAR_L + 0x4b6 + + + RTCYEAR_H + 0x4b7 + + + RTCAMINHR + 0x4b8 + + + RTCAMINHR_L + 0x4b8 + + + RTCAMINHR_H + 0x4b9 + + + RTCADOWDAY + 0x4ba + + + RTCADOWDAY_L + 0x4ba + + + RTCADOWDAY_H + 0x4bb + + + BIN2BCD + 0x4bc + + + BIN2BCD_L + 0x4bc + + + BIN2BCD_H + 0x4bd + + + BCD2BIN + 0x4be + + + BCD2BIN_L + 0x4be + + + BCD2BIN_H + 0x4bf + + + RT0PS + 0x4ac + + + RT1PS + 0x4ad + + + RTCCNT1 + 0x4b0 + + + RTCCNT2 + 0x4b1 + + + RTCCNT3 + 0x4b2 + + + RTCCNT4 + 0x4b3 + + + SFRIE1 + 0x100 + + + SFRIE1_L + 0x100 + + + SFRIE1_H + 0x101 + + + SFRIFG1 + 0x102 + + + SFRIFG1_L + 0x102 + + + SFRIFG1_H + 0x103 + + + SFRRPCR + 0x104 + + + SFRRPCR_L + 0x104 + + + SFRRPCR_H + 0x105 + + + SYSCTL + 0x180 + + + SYSCTL_L + 0x180 + + + SYSCTL_H + 0x181 + + + SYSJMBC + 0x186 + + + SYSJMBC_L + 0x186 + + + SYSJMBC_H + 0x187 + + + SYSJMBI0 + 0x188 + + + SYSJMBI0_L + 0x188 + + + SYSJMBI0_H + 0x189 + + + SYSJMBI1 + 0x18a + + + SYSJMBI1_L + 0x18a + + + SYSJMBI1_H + 0x18b + + + SYSJMBO0 + 0x18c + + + SYSJMBO0_L + 0x18c + + + SYSJMBO0_H + 0x18d + + + SYSJMBO1 + 0x18e + + + SYSJMBO1_L + 0x18e + + + SYSJMBO1_H + 0x18f + + + SYSUNIV + 0x19a + + + SYSUNIV_L + 0x19a + + + SYSUNIV_H + 0x19b + + + SYSSNIV + 0x19c + + + SYSSNIV_L + 0x19c + + + SYSSNIV_H + 0x19d + + + SYSRSTIV + 0x19e + + + SYSRSTIV_L + 0x19e + + + SYSRSTIV_H + 0x19f + + + TA0CTL + 0x340 + + + TA0CTL_L + 0x340 + + + TA0CTL_H + 0x341 + + + TA0CCTL0 + 0x342 + + + TA0CCTL0_L + 0x342 + + + TA0CCTL0_H + 0x343 + + + TA0CCTL1 + 0x344 + + + TA0CCTL1_L + 0x344 + + + TA0CCTL1_H + 0x345 + + + TA0CCTL2 + 0x346 + + + TA0CCTL2_L + 0x346 + + + TA0CCTL2_H + 0x347 + + + TA0R + 0x350 + + + TA0R_L + 0x350 + + + TA0R_H + 0x351 + + + TA0CCR0 + 0x352 + + + TA0CCR0_L + 0x352 + + + TA0CCR0_H + 0x353 + + + TA0CCR1 + 0x354 + + + TA0CCR1_L + 0x354 + + + TA0CCR1_H + 0x355 + + + TA0CCR2 + 0x356 + + + TA0CCR2_L + 0x356 + + + TA0CCR2_H + 0x357 + + + TA0EX0 + 0x360 + + + TA0EX0_L + 0x360 + + + TA0EX0_H + 0x361 + + + TA0IV + 0x36e + + + TA0IV_L + 0x36e + + + TA0IV_H + 0x36f + + + TA1CTL + 0x380 + + + TA1CTL_L + 0x380 + + + TA1CTL_H + 0x381 + + + TA1CCTL0 + 0x382 + + + TA1CCTL0_L + 0x382 + + + TA1CCTL0_H + 0x383 + + + TA1CCTL1 + 0x384 + + + TA1CCTL1_L + 0x384 + + + TA1CCTL1_H + 0x385 + + + TA1CCTL2 + 0x386 + + + TA1CCTL2_L + 0x386 + + + TA1CCTL2_H + 0x387 + + + TA1R + 0x390 + + + TA1R_L + 0x390 + + + TA1R_H + 0x391 + + + TA1CCR0 + 0x392 + + + TA1CCR0_L + 0x392 + + + TA1CCR0_H + 0x393 + + + TA1CCR1 + 0x394 + + + TA1CCR1_L + 0x394 + + + TA1CCR1_H + 0x395 + + + TA1CCR2 + 0x396 + + + TA1CCR2_L + 0x396 + + + TA1CCR2_H + 0x397 + + + TA1EX0 + 0x3a0 + + + TA1EX0_L + 0x3a0 + + + TA1EX0_H + 0x3a1 + + + TA1IV + 0x3ae + + + TA1IV_L + 0x3ae + + + TA1IV_H + 0x3af + + + TA2CTL + 0x400 + + + TA2CTL_L + 0x400 + + + TA2CTL_H + 0x401 + + + TA2CCTL0 + 0x402 + + + TA2CCTL0_L + 0x402 + + + TA2CCTL0_H + 0x403 + + + TA2CCTL1 + 0x404 + + + TA2CCTL1_L + 0x404 + + + TA2CCTL1_H + 0x405 + + + TA2R + 0x410 + + + TA2R_L + 0x410 + + + TA2R_H + 0x411 + + + TA2CCR0 + 0x412 + + + TA2CCR0_L + 0x412 + + + TA2CCR0_H + 0x413 + + + TA2CCR1 + 0x414 + + + TA2CCR1_L + 0x414 + + + TA2CCR1_H + 0x415 + + + TA2EX0 + 0x420 + + + TA2EX0_L + 0x420 + + + TA2EX0_H + 0x421 + + + TA2IV + 0x42e + + + TA2IV_L + 0x42e + + + TA2IV_H + 0x42f + + + TA3CTL + 0x440 + + + TA3CTL_L + 0x440 + + + TA3CTL_H + 0x441 + + + TA3CCTL0 + 0x442 + + + TA3CCTL0_L + 0x442 + + + TA3CCTL0_H + 0x443 + + + TA3CCTL1 + 0x444 + + + TA3CCTL1_L + 0x444 + + + TA3CCTL1_H + 0x445 + + + TA3R + 0x450 + + + TA3R_L + 0x450 + + + TA3R_H + 0x451 + + + TA3CCR0 + 0x452 + + + TA3CCR0_L + 0x452 + + + TA3CCR0_H + 0x453 + + + TA3CCR1 + 0x454 + + + TA3CCR1_L + 0x454 + + + TA3CCR1_H + 0x455 + + + TA3EX0 + 0x460 + + + TA3EX0_L + 0x460 + + + TA3EX0_H + 0x461 + + + TA3IV + 0x46e + + + TA3IV_L + 0x46e + + + TA3IV_H + 0x46f + + + TA4CTL + 0x7c0 + + + TA4CTL_L + 0x7c0 + + + TA4CTL_H + 0x7c1 + + + TA4CCTL0 + 0x7c2 + + + TA4CCTL0_L + 0x7c2 + + + TA4CCTL0_H + 0x7c3 + + + TA4CCTL1 + 0x7c4 + + + TA4CCTL1_L + 0x7c4 + + + TA4CCTL1_H + 0x7c5 + + + TA4CCTL2 + 0x7c6 + + + TA4CCTL2_L + 0x7c6 + + + TA4CCTL2_H + 0x7c7 + + + TA4R + 0x7d0 + + + TA4R_L + 0x7d0 + + + TA4R_H + 0x7d1 + + + TA4CCR0 + 0x7d2 + + + TA4CCR0_L + 0x7d2 + + + TA4CCR0_H + 0x7d3 + + + TA4CCR1 + 0x7d4 + + + TA4CCR1_L + 0x7d4 + + + TA4CCR1_H + 0x7d5 + + + TA4CCR2 + 0x7d6 + + + TA4CCR2_L + 0x7d6 + + + TA4CCR2_H + 0x7d7 + + + TA4EX0 + 0x7e0 + + + TA4EX0_L + 0x7e0 + + + TA4EX0_H + 0x7e1 + + + TA4IV + 0x7ee + + + TA4IV_L + 0x7ee + + + TA4IV_H + 0x7ef + + + TB0CTL + 0x3c0 + + + TB0CTL_L + 0x3c0 + + + TB0CTL_H + 0x3c1 + + + TB0CCTL0 + 0x3c2 + + + TB0CCTL0_L + 0x3c2 + + + TB0CCTL0_H + 0x3c3 + + + TB0CCTL1 + 0x3c4 + + + TB0CCTL1_L + 0x3c4 + + + TB0CCTL1_H + 0x3c5 + + + TB0CCTL2 + 0x3c6 + + + TB0CCTL2_L + 0x3c6 + + + TB0CCTL2_H + 0x3c7 + + + TB0CCTL3 + 0x3c8 + + + TB0CCTL3_L + 0x3c8 + + + TB0CCTL3_H + 0x3c9 + + + TB0CCTL4 + 0x3ca + + + TB0CCTL4_L + 0x3ca + + + TB0CCTL4_H + 0x3cb + + + TB0CCTL5 + 0x3cc + + + TB0CCTL5_L + 0x3cc + + + TB0CCTL5_H + 0x3cd + + + TB0CCTL6 + 0x3ce + + + TB0CCTL6_L + 0x3ce + + + TB0CCTL6_H + 0x3cf + + + TB0R + 0x3d0 + + + TB0R_L + 0x3d0 + + + TB0R_H + 0x3d1 + + + TB0CCR0 + 0x3d2 + + + TB0CCR0_L + 0x3d2 + + + TB0CCR0_H + 0x3d3 + + + TB0CCR1 + 0x3d4 + + + TB0CCR1_L + 0x3d4 + + + TB0CCR1_H + 0x3d5 + + + TB0CCR2 + 0x3d6 + + + TB0CCR2_L + 0x3d6 + + + TB0CCR2_H + 0x3d7 + + + TB0CCR3 + 0x3d8 + + + TB0CCR3_L + 0x3d8 + + + TB0CCR3_H + 0x3d9 + + + TB0CCR4 + 0x3da + + + TB0CCR4_L + 0x3da + + + TB0CCR4_H + 0x3db + + + TB0CCR5 + 0x3dc + + + TB0CCR5_L + 0x3dc + + + TB0CCR5_H + 0x3dd + + + TB0CCR6 + 0x3de + + + TB0CCR6_L + 0x3de + + + TB0CCR6_H + 0x3df + + + TB0EX0 + 0x3e0 + + + TB0EX0_L + 0x3e0 + + + TB0EX0_H + 0x3e1 + + + TB0IV + 0x3ee + + + TB0IV_L + 0x3ee + + + TB0IV_H + 0x3ef + + + WDTCTL + 0x15c + + + WDTCTL_L + 0x15c + + + WDTCTL_H + 0x15d + + + UCA0CTLW0 + 0x5c0 + + + UCA0CTLW0_L + 0x5c0 + + + UCA0CTLW0_H + 0x5c1 + + + UCA0CTLW1 + 0x5c2 + + + UCA0CTLW1_L + 0x5c2 + + + UCA0CTLW1_H + 0x5c3 + + + UCA0BRW + 0x5c6 + + + UCA0BRW_L + 0x5c6 + + + UCA0BRW_H + 0x5c7 + + + UCA0MCTLW + 0x5c8 + + + UCA0MCTLW_L + 0x5c8 + + + UCA0MCTLW_H + 0x5c9 + + + UCA0STATW + 0x5ca + + + UCA0STATW_L + 0x5ca + + + UCA0STATW_H + 0x5cb + + + UCA0RXBUF + 0x5cc + + + UCA0RXBUF_L + 0x5cc + + + UCA0RXBUF_H + 0x5cd + + + UCA0TXBUF + 0x5ce + + + UCA0TXBUF_L + 0x5ce + + + UCA0TXBUF_H + 0x5cf + + + UCA0ABCTL + 0x5d0 + + + UCA0ABCTL_L + 0x5d0 + + + UCA0ABCTL_H + 0x5d1 + + + UCA0IRCTL + 0x5d2 + + + UCA0IRCTL_L + 0x5d2 + + + UCA0IRCTL_H + 0x5d3 + + + UCA0IE + 0x5da + + + UCA0IE_L + 0x5da + + + UCA0IE_H + 0x5db + + + UCA0IFG + 0x5dc + + + UCA0IFG_L + 0x5dc + + + UCA0IFG_H + 0x5dd + + + UCA0IV + 0x5de + + + UCA0IV_L + 0x5de + + + UCA0IV_H + 0x5df + + + UCA1CTLW0 + 0x5e0 + + + UCA1CTLW0_L + 0x5e0 + + + UCA1CTLW0_H + 0x5e1 + + + UCA1CTLW1 + 0x5e2 + + + UCA1CTLW1_L + 0x5e2 + + + UCA1CTLW1_H + 0x5e3 + + + UCA1BRW + 0x5e6 + + + UCA1BRW_L + 0x5e6 + + + UCA1BRW_H + 0x5e7 + + + UCA1MCTLW + 0x5e8 + + + UCA1MCTLW_L + 0x5e8 + + + UCA1MCTLW_H + 0x5e9 + + + UCA1STATW + 0x5ea + + + UCA1STATW_L + 0x5ea + + + UCA1STATW_H + 0x5eb + + + UCA1RXBUF + 0x5ec + + + UCA1RXBUF_L + 0x5ec + + + UCA1RXBUF_H + 0x5ed + + + UCA1TXBUF + 0x5ee + + + UCA1TXBUF_L + 0x5ee + + + UCA1TXBUF_H + 0x5ef + + + UCA1ABCTL + 0x5f0 + + + UCA1ABCTL_L + 0x5f0 + + + UCA1ABCTL_H + 0x5f1 + + + UCA1IRCTL + 0x5f2 + + + UCA1IRCTL_L + 0x5f2 + + + UCA1IRCTL_H + 0x5f3 + + + UCA1IE + 0x5fa + + + UCA1IE_L + 0x5fa + + + UCA1IE_H + 0x5fb + + + UCA1IFG + 0x5fc + + + UCA1IFG_L + 0x5fc + + + UCA1IFG_H + 0x5fd + + + UCA1IV + 0x5fe + + + UCA1IV_L + 0x5fe + + + UCA1IV_H + 0x5ff + + + UCA2CTLW0 + 0x600 + + + UCA2CTLW0_L + 0x600 + + + UCA2CTLW0_H + 0x601 + + + UCA2CTLW1 + 0x602 + + + UCA2CTLW1_L + 0x602 + + + UCA2CTLW1_H + 0x603 + + + UCA2BRW + 0x606 + + + UCA2BRW_L + 0x606 + + + UCA2BRW_H + 0x607 + + + UCA2MCTLW + 0x608 + + + UCA2MCTLW_L + 0x608 + + + UCA2MCTLW_H + 0x609 + + + UCA2STATW + 0x60a + + + UCA2STATW_L + 0x60a + + + UCA2STATW_H + 0x60b + + + UCA2RXBUF + 0x60c + + + UCA2RXBUF_L + 0x60c + + + UCA2RXBUF_H + 0x60d + + + UCA2TXBUF + 0x60e + + + UCA2TXBUF_L + 0x60e + + + UCA2TXBUF_H + 0x60f + + + UCA2ABCTL + 0x610 + + + UCA2ABCTL_L + 0x610 + + + UCA2ABCTL_H + 0x611 + + + UCA2IRCTL + 0x612 + + + UCA2IRCTL_L + 0x612 + + + UCA2IRCTL_H + 0x613 + + + UCA2IE + 0x61a + + + UCA2IE_L + 0x61a + + + UCA2IE_H + 0x61b + + + UCA2IFG + 0x61c + + + UCA2IFG_L + 0x61c + + + UCA2IFG_H + 0x61d + + + UCA2IV + 0x61e + + + UCA2IV_L + 0x61e + + + UCA2IV_H + 0x61f + + + UCA3CTLW0 + 0x620 + + + UCA3CTLW0_L + 0x620 + + + UCA3CTLW0_H + 0x621 + + + UCA3CTLW1 + 0x622 + + + UCA3CTLW1_L + 0x622 + + + UCA3CTLW1_H + 0x623 + + + UCA3BRW + 0x626 + + + UCA3BRW_L + 0x626 + + + UCA3BRW_H + 0x627 + + + UCA3MCTLW + 0x628 + + + UCA3MCTLW_L + 0x628 + + + UCA3MCTLW_H + 0x629 + + + UCA3STATW + 0x62a + + + UCA3STATW_L + 0x62a + + + UCA3STATW_H + 0x62b + + + UCA3RXBUF + 0x62c + + + UCA3RXBUF_L + 0x62c + + + UCA3RXBUF_H + 0x62d + + + UCA3TXBUF + 0x62e + + + UCA3TXBUF_L + 0x62e + + + UCA3TXBUF_H + 0x62f + + + UCA3ABCTL + 0x630 + + + UCA3ABCTL_L + 0x630 + + + UCA3ABCTL_H + 0x631 + + + UCA3IRCTL + 0x632 + + + UCA3IRCTL_L + 0x632 + + + UCA3IRCTL_H + 0x633 + + + UCA3IE + 0x63a + + + UCA3IE_L + 0x63a + + + UCA3IE_H + 0x63b + + + UCA3IFG + 0x63c + + + UCA3IFG_L + 0x63c + + + UCA3IFG_H + 0x63d + + + UCA3IV + 0x63e + + + UCA3IV_L + 0x63e + + + UCA3IV_H + 0x63f + + + UCB0CTLW0 + 0x640 + + + UCB0CTLW0_L + 0x640 + + + UCB0CTLW0_H + 0x641 + + + UCB0CTLW1 + 0x642 + + + UCB0CTLW1_L + 0x642 + + + UCB0CTLW1_H + 0x643 + + + UCB0BRW + 0x646 + + + UCB0BRW_L + 0x646 + + + UCB0BRW_H + 0x647 + + + UCB0STATW + 0x648 + + + UCB0STATW_L + 0x648 + + + UCB0STATW_H + 0x649 + + + UCB0TBCNT + 0x64a + + + UCB0TBCNT_L + 0x64a + + + UCB0TBCNT_H + 0x64b + + + UCB0RXBUF + 0x64c + + + UCB0RXBUF_L + 0x64c + + + UCB0RXBUF_H + 0x64d + + + UCB0TXBUF + 0x64e + + + UCB0TXBUF_L + 0x64e + + + UCB0TXBUF_H + 0x64f + + + UCB0I2COA0 + 0x654 + + + UCB0I2COA0_L + 0x654 + + + UCB0I2COA0_H + 0x655 + + + UCB0I2COA1 + 0x656 + + + UCB0I2COA1_L + 0x656 + + + UCB0I2COA1_H + 0x657 + + + UCB0I2COA2 + 0x658 + + + UCB0I2COA2_L + 0x658 + + + UCB0I2COA2_H + 0x659 + + + UCB0I2COA3 + 0x65a + + + UCB0I2COA3_L + 0x65a + + + UCB0I2COA3_H + 0x65b + + + UCB0ADDRX + 0x65c + + + UCB0ADDRX_L + 0x65c + + + UCB0ADDRX_H + 0x65d + + + UCB0ADDMASK + 0x65e + + + UCB0ADDMASK_L + 0x65e + + + UCB0ADDMASK_H + 0x65f + + + UCB0I2CSA + 0x660 + + + UCB0I2CSA_L + 0x660 + + + UCB0I2CSA_H + 0x661 + + + UCB0IE + 0x66a + + + UCB0IE_L + 0x66a + + + UCB0IE_H + 0x66b + + + UCB0IFG + 0x66c + + + UCB0IFG_L + 0x66c + + + UCB0IFG_H + 0x66d + + + UCB0IV + 0x66e + + + UCB0IV_L + 0x66e + + + UCB0IV_H + 0x66f + + + UCB1CTLW0 + 0x680 + + + UCB1CTLW0_L + 0x680 + + + UCB1CTLW0_H + 0x681 + + + UCB1CTLW1 + 0x682 + + + UCB1CTLW1_L + 0x682 + + + UCB1CTLW1_H + 0x683 + + + UCB1BRW + 0x686 + + + UCB1BRW_L + 0x686 + + + UCB1BRW_H + 0x687 + + + UCB1STATW + 0x688 + + + UCB1STATW_L + 0x688 + + + UCB1STATW_H + 0x689 + + + UCB1TBCNT + 0x68a + + + UCB1TBCNT_L + 0x68a + + + UCB1TBCNT_H + 0x68b + + + UCB1RXBUF + 0x68c + + + UCB1RXBUF_L + 0x68c + + + UCB1RXBUF_H + 0x68d + + + UCB1TXBUF + 0x68e + + + UCB1TXBUF_L + 0x68e + + + UCB1TXBUF_H + 0x68f + + + UCB1I2COA0 + 0x694 + + + UCB1I2COA0_L + 0x694 + + + UCB1I2COA0_H + 0x695 + + + UCB1I2COA1 + 0x696 + + + UCB1I2COA1_L + 0x696 + + + UCB1I2COA1_H + 0x697 + + + UCB1I2COA2 + 0x698 + + + UCB1I2COA2_L + 0x698 + + + UCB1I2COA2_H + 0x699 + + + UCB1I2COA3 + 0x69a + + + UCB1I2COA3_L + 0x69a + + + UCB1I2COA3_H + 0x69b + + + UCB1ADDRX + 0x69c + + + UCB1ADDRX_L + 0x69c + + + UCB1ADDRX_H + 0x69d + + + UCB1ADDMASK + 0x69e + + + UCB1ADDMASK_L + 0x69e + + + UCB1ADDMASK_H + 0x69f + + + UCB1I2CSA + 0x6a0 + + + UCB1I2CSA_L + 0x6a0 + + + UCB1I2CSA_H + 0x6a1 + + + UCB1IE + 0x6aa + + + UCB1IE_L + 0x6aa + + + UCB1IE_H + 0x6ab + + + UCB1IFG + 0x6ac + + + UCB1IFG_L + 0x6ac + + + UCB1IFG_H + 0x6ad + + + UCB1IV + 0x6ae + + + UCB1IV_L + 0x6ae + + + UCB1IV_H + 0x6af + + + UCB2CTLW0 + 0x6c0 + + + UCB2CTLW0_L + 0x6c0 + + + UCB2CTLW0_H + 0x6c1 + + + UCB2CTLW1 + 0x6c2 + + + UCB2CTLW1_L + 0x6c2 + + + UCB2CTLW1_H + 0x6c3 + + + UCB2BRW + 0x6c6 + + + UCB2BRW_L + 0x6c6 + + + UCB2BRW_H + 0x6c7 + + + UCB2STATW + 0x6c8 + + + UCB2STATW_L + 0x6c8 + + + UCB2STATW_H + 0x6c9 + + + UCB2TBCNT + 0x6ca + + + UCB2TBCNT_L + 0x6ca + + + UCB2TBCNT_H + 0x6cb + + + UCB2RXBUF + 0x6cc + + + UCB2RXBUF_L + 0x6cc + + + UCB2RXBUF_H + 0x6cd + + + UCB2TXBUF + 0x6ce + + + UCB2TXBUF_L + 0x6ce + + + UCB2TXBUF_H + 0x6cf + + + UCB2I2COA0 + 0x6d4 + + + UCB2I2COA0_L + 0x6d4 + + + UCB2I2COA0_H + 0x6d5 + + + UCB2I2COA1 + 0x6d6 + + + UCB2I2COA1_L + 0x6d6 + + + UCB2I2COA1_H + 0x6d7 + + + UCB2I2COA2 + 0x6d8 + + + UCB2I2COA2_L + 0x6d8 + + + UCB2I2COA2_H + 0x6d9 + + + UCB2I2COA3 + 0x6da + + + UCB2I2COA3_L + 0x6da + + + UCB2I2COA3_H + 0x6db + + + UCB2ADDRX + 0x6dc + + + UCB2ADDRX_L + 0x6dc + + + UCB2ADDRX_H + 0x6dd + + + UCB2ADDMASK + 0x6de + + + UCB2ADDMASK_L + 0x6de + + + UCB2ADDMASK_H + 0x6df + + + UCB2I2CSA + 0x6e0 + + + UCB2I2CSA_L + 0x6e0 + + + UCB2I2CSA_H + 0x6e1 + + + UCB2IE + 0x6ea + + + UCB2IE_L + 0x6ea + + + UCB2IE_H + 0x6eb + + + UCB2IFG + 0x6ec + + + UCB2IFG_L + 0x6ec + + + UCB2IFG_H + 0x6ed + + + UCB2IV + 0x6ee + + + UCB2IV_L + 0x6ee + + + UCB2IV_H + 0x6ef + + + UCB3CTLW0 + 0x700 + + + UCB3CTLW0_L + 0x700 + + + UCB3CTLW0_H + 0x701 + + + UCB3CTLW1 + 0x702 + + + UCB3CTLW1_L + 0x702 + + + UCB3CTLW1_H + 0x703 + + + UCB3BRW + 0x706 + + + UCB3BRW_L + 0x706 + + + UCB3BRW_H + 0x707 + + + UCB3STATW + 0x708 + + + UCB3STATW_L + 0x708 + + + UCB3STATW_H + 0x709 + + + UCB3TBCNT + 0x70a + + + UCB3TBCNT_L + 0x70a + + + UCB3TBCNT_H + 0x70b + + + UCB3RXBUF + 0x70c + + + UCB3RXBUF_L + 0x70c + + + UCB3RXBUF_H + 0x70d + + + UCB3TXBUF + 0x70e + + + UCB3TXBUF_L + 0x70e + + + UCB3TXBUF_H + 0x70f + + + UCB3I2COA0 + 0x714 + + + UCB3I2COA0_L + 0x714 + + + UCB3I2COA0_H + 0x715 + + + UCB3I2COA1 + 0x716 + + + UCB3I2COA1_L + 0x716 + + + UCB3I2COA1_H + 0x717 + + + UCB3I2COA2 + 0x718 + + + UCB3I2COA2_L + 0x718 + + + UCB3I2COA2_H + 0x719 + + + UCB3I2COA3 + 0x71a + + + UCB3I2COA3_L + 0x71a + + + UCB3I2COA3_H + 0x71b + + + UCB3ADDRX + 0x71c + + + UCB3ADDRX_L + 0x71c + + + UCB3ADDRX_H + 0x71d + + + UCB3ADDMASK + 0x71e + + + UCB3ADDMASK_L + 0x71e + + + UCB3ADDMASK_H + 0x71f + + + UCB3I2CSA + 0x720 + + + UCB3I2CSA_L + 0x720 + + + UCB3I2CSA_H + 0x721 + + + UCB3IE + 0x72a + + + UCB3IE_L + 0x72a + + + UCB3IE_H + 0x72b + + + UCB3IFG + 0x72c + + + UCB3IFG_L + 0x72c + + + UCB3IFG_H + 0x72d + + + UCB3IV + 0x72e + + + UCB3IV_L + 0x72e + + + UCB3IV_H + 0x72f + + + fram_rw_start + 0x4000 + + + fram_ipe_start + 0x4400 + + + fram_ipe_end + 0x4400 + + + fram_rx_start + 0x4400 + + + __TI_CINIT_Base + 0xd10e + + + __TI_CINIT_Limit + 0xd11e + + + __TI_Handler_Table_Base + 0xd0fc + + + __TI_Handler_Table_Limit + 0xd108 + + + __STACK_SIZE + 0x5d4 + + + __STACK_END + 0x3c00 + + + __SYSMEM_SIZE + 0x8 + + + __c_args__ + 0xffffffff + + + __TI_pprof_out_hndl + 0xffffffff + + + __TI_prof_data_start + 0xffffffff + + + __TI_prof_data_size + 0xffffffff + + + CmdMsgs__deserializeHeader + 0x16298 + + + + DebugComms__registerHerculesComms + 0x1b1c2 + + + + DebugComms__tryStringBufferToLanderNonblocking + 0x190e8 + + + + DebugComms__flush + 0x19f16 + + + + DebugComms__tryPrintfToLanderNonblocking + 0x16f10 + + + + DebugComms__registerLanderComms + 0x1b1d6 + + + + DebugComms__setEnabled + 0x1b1ea + + + + GroundMsgs__generateFlightEarthHeartbeat + 0x15f78 + + + + GroundMsgs__generateFullEarthHeartbeat + 0x1516a + + + + GroundMsgs__generateDetailedReport + 0x10000 + + + + HerculesComms__init + 0x181ca + + + + HerculesComms__uninitialize + 0x17a5a + + + + HerculesComms__tryGetMessage + 0x13434 + + + + HerculesComms__txDownlinkData + 0x1905c + + + + HerculesComms__flushTx + 0x1a066 + + + + HerculesComms__txUplinkMsg + 0x190a2 + + + + HerculesComms__isInitialized + 0x1ada2 + + + + HerculesComms__txResponseMsg + 0x192ba + + + + HerculesComms__resetState + 0x163c4 + + + + HerculesMpsm__reset + 0x18d7c + + + + HerculesMpsm__process + 0x175c8 + + + + HerculesMpsm__initMsg + 0x17ac0 + + + + HercMsgs__serializeHeader + 0x13eca + + + + I2C_Sensors__stop + 0x1b2da + + + + I2C_Sensors__initiateWriteIoExpanderCurrentValues + 0x1afb2 + + + + I2C_Sensors__initiateGaugeReadings + 0x1a6c6 + + + + I2C_Sensors__writeIoExpanderBlocking + 0x14cd2 + + + + I2C_Sensors__initiateReadControl + 0x1a6ea + + + + I2C_Sensors__setIoExpanderPort1OutputBits + 0x1b51c + + + + I2C_Sensors__setIoExpanderPort0OutputBits + 0x1b516 + + + + I2C_Sensors__getIoExpanderPortDirections + 0x1a2ea + + + + I2C_Sensors__clearIoExpanderPort1OutputBits + 0x1b510 + + + + I2C_Sensors__clearIoExpanderPort0OutputBits + 0x1b50a + + + + I2C_Sensors__initiateFuelGaugeInitialization + 0x1a964 + + + + I2C_Sensors__spinOnce + 0x12baa + + + + I2C_Sensors__initiateIoExpanderInitialization + 0x1a0c2 + + + + I2C_Sensors__initiateReadIoExpander + 0x1a876 + + + + I2C_Sensors__writeIoExpanderPortDirectionsBlocking + 0x149e0 + + + + I2C_Sensors__initiateWriteLowPower + 0x1a898 + + + + I2C_Sensors__initiateWriteIoExpander + 0x19d22 + + + + I2C_Sensors__writeIoExpanderCurrentValuesBlocking + 0x1aa42 + + + + I2C_Sensors__clearLastAction + 0x1aa24 + + + + I2C_Sensors__init + 0x1b3b4 + + + + I2C_Sensors__getActionStatus + 0x125b8 + + + + IpUdp__generateAndSerializeIpUdpHeadersForData + 0x127bc + + + + IpUdp__identifyDataInUdpPacket + 0x1912c + + + + LanderComms__init + 0x18282 + + + + LanderComms__txData + 0x135ae + + + + LanderComms__txDataUntilSendOrTimeout + 0x14adc + + + + LanderComms__tryGetMessage + 0x14266 + + + + LanderComms__flushTx + 0x1a11e + + + + SlipEncode__encode + 0x15b40 + + + + SlipMpsm__initMsg + 0x1a544 + + + + SlipMpsm__process + 0x16a1e + + + + WdCmdMsgs__deserializeMessage + 0x16aa0 + + + + WdCmdMsgs__serializeGroundResponse + 0x16708 + + + + WdCmdMsgs__deserializeBody + 0x12d82 + + + + WdIntMpsm__processEdge + 0x1add6 + + + + __TI_int46 + 0xffec + + + + ADC12_ISR + 0x4594 + + + + isAdcSampleDone + 0x1b310 + + + + adc_init + 0x176a0 + + + + adcCheckVoltageLevels + 0x19c86 + + + + blimp_bstat_safe_restoreInput + 0x19e80 + + + + blimp_chargerEnForceHigh + 0x1a4c6 + + + + blimp_chargerEnOn + 0x1a4f0 + + + + blimp_latchSetHigh + 0x17f1a + + + + blimp_latchResetHigh + 0x1784a + + + + blimp_vSysAllEnOff + 0x19eb2 + + + + blimp_latchBattOff + 0x1acb8 + + + + blimp_bstat + 0x1a006 + + + + blimp_latchBattUpdate + 0x19cba + + + + blimp_chargerEnOff + 0x1a1a8 + + + + blimp_bstat_dangerous_forceHigh + 0x19e1c + + + + blimp_latchBattOn + 0x1aea6 + + + + blimp_regEnOn + 0x1af52 + + + + blimp_latchSetOff + 0x185aa + + + + blimp_bstat_dangerous_forceLow + 0x19e4e + + + + blimp_batteryState + 0x1b3ec + + + + blimp_initialize + 0x17eb6 + + + + blimp_vSysAllEnForceLow + 0x1a232 + + + + blimp_latchResetOff + 0x18396 + + + + blimp_latchResetLow + 0x178b4 + + + + blimp_latchSetPulseLow + 0x1a204 + + + + blimp_battEnOff + 0x1ac9a + + + + blimp_battEnOn + 0x1ae8c + + + + blimp_vSysAllEnOn + 0x1a260 + + + + blimp_normalBoot + 0x19cee + + + + blimp_regEnOff + 0x1acd6 + + + + blimp_latchSetLow + 0x17f7e + + + + blimp_latchResetPulseLow + 0x1a1d6 + + + + powerOnRadio + 0x1b13e + + + + readOnChipInputs + 0x159ca + + + + disable3V3PowerRail + 0x1b0a4 + + + + fpgaCameraSelectLo + 0x1b0e6 + + + + initializeGpios + 0x11ade + + + + powerOffMotors + 0x1b2b2 + + + + stopChargingBatteries + 0x1b4b0 + + + + setFPGAReset + 0x1af9a + + + + setHerculesReset + 0x1a6a0 + + + + enableUart0Pins + 0x1aec0 + + + + powerOnHercules + 0x1b384 + + + + fpgaCameraSelectHi + 0x1b334 + + + + enableUart1Pins + 0x1acf4 + + + + startChargingBatteries + 0x1b196 + + + + getWdIntState + 0x1b344 + + + + setRadioReset + 0x1b180 + + + + clockInit + 0x19238 + + + + releaseRadioReset + 0x1b2c6 + + + + enableBatteries + 0x1b47e + + + + disableVSysAllPowerRail + 0x1b534 + + + + disableUart0Pins + 0x1a852 + + + + enableVSysAllPowerRail + 0x1b53a + + + + setMotorsReset + 0x1b4a6 + + + + disableHeater + 0x1a82e + + + + getResetReasonString + 0x145c2 + + + + powerOffHercules + 0x1b29e + + + + setMotor4Reset + 0x1b502 + + + + setMotor3Reset + 0x1b4fa + + + + setMotor2Reset + 0x1b4f2 + + + + setMotor1Reset + 0x1b4ea + + + + enableWdIntFallingEdgeInterrupt + 0x1b0ba + + + + setDeploy + 0x1b3a4 + + + + enable3V3PowerRail + 0x1b2fe + + + + unsetDeploy + 0x1b1ac + + + + powerOffRadio + 0x1af6a + + + + disableBatteries + 0x1b474 + + + + releaseMotorsReset + 0x1b488 + + + + releaseFPGAReset + 0x1b154 + + + + releaseMotor4Reset + 0x1b4e2 + + + + enableHeater + 0x196b2 + + + + releaseMotor1Reset + 0x1b4ca + + + + releaseMotor3Reset + 0x1b4da + + + + releaseMotor2Reset + 0x1b4d2 + + + + enableWdIntRisingEdgeInterrupt + 0x1b0d0 + + + + powerOffFpga + 0x1b28a + + + + releaseHerculesReset + 0x1ad30 + + + + powerOnMotors + 0x1b394 + + + + powerOnFpga + 0x1b374 + + + + I2C__read + 0x195ba + + + + I2C__stop + 0x1a8ba + + + + I2C__write + 0x192fa + + + + I2C__getTransactionStatus + 0x19d54 + + + + I2C__spinOnce + 0x15d64 + + + + I2C__init + 0x1a0f0 + + + + UART__transmit + 0x16020 + + + + UART__flushTx + 0x15250 + + + + __TI_int48 + 0xfff0 + + + + __TI_int43 + 0xffe6 + + + + UART__receive + 0x17bf2 + + + + UART__checkIfSendable + 0x18f3e + + + + UART__checkRxRbErrors + 0x195f8 + + + + USCI_A0_ISR + 0x4400 + + + + UART__isInitialized + 0x1adbc + + + + USCI_A1_ISR + 0x44ca + + + + UART__uninit0 + 0x19a9e + + + + UART__checkRxZerosMaxCountSinceLastCheck + 0x19b0e + + + + UART__init1 + 0x18abe + + + + UART__init0 + 0x18eaa + + + + EventQueue__get + 0x1927a + + + + theQueue + 0x3554 + + + + EventQueue__initialize + 0x1976c + + + + EventQueue__put + 0x1a5bc + + + + main + 0x1a2bc + + + + hook_sp_check + 0x1b354 + + + + watchdog_get_wd_int_flat_duration + 0x1b408 + + + + __TI_int39 + 0xffde + + + + watchdog_monitor + 0x11dcc + + + + __TI_int44 + 0xffe8 + + + + Timer0_A1_ISR + 0x4682 + + + + watchdog_build_hercules_telem + 0x139ce + + + + watchdog_init + 0x144a6 + + + + port1_isr_handler + 0x462c + + + + _ZN4iris13stateToStringENS_10RoverStateE + 0x16c26 + + + + _ZN4iris14RoverStateBase36handleRadioPowerCycleHerculesCommandERNS_12RoverContextE + 0x19674 + + + + _ZN4iris14RoverStateBase24doGndCmdClearResetMemoryERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a14c + + + + _ZN4iris14RoverStateBase20canEnterLowPowerModeERNS_12RoverContextE + 0x1b416 + + + + _ZN4iris14RoverStateBase23handleDebugFromHerculesERNS_12RoverContextEP16HercMsgs__HeaderPhj + 0x148e0 + + + + _ZN4iris14RoverStateBase22performWatchdogCommandERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x113a0 + + + + _ZN4iris14RoverStateBase17landerMsgCallbackEPhjPv + 0x13112 + + + + _ZN4iris14RoverStateBase26doConditionalResetSpecificERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__ResponsebbbbRb + 0x10908 + + + + _ZN4iris14RoverStateBase26doGndCmdSetBattCtrlEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1ab50 + + + + _ZN4iris14RoverStateBase24doGndCmdSetChargeEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1874a + + + + _ZN4iris14RoverStateBase26doGndCmdDangForceBattStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x187ee + + + + _ZN4iris14RoverStateBase21doGndCmdResetSpecificERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a56c + + + + _ZN4iris14RoverStateBase26handleDownlinkFromHerculesERNS_12RoverContextEP16HercMsgs__HeaderPhj + 0x13870 + + + + _ZN4iris14RoverStateBase20doGndCmdSetVSAEStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x186f8 + + + + _ZN4iris14RoverStateBase26doGndCmdLatchResetPulseLowERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x180a6 + + + + _ZN4iris14RoverStateBaseC2ENS_10RoverStateE + 0x1a9c4 + + + + _ZN4iris14RoverStateBase15handleWdIntEdgeEbRNS_12RoverContextE + 0x16b22 + + + + _ZN4iris14RoverStateBase24doGndCmdLatchSetPulseLowERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x18044 + + + + _ZN4iris14RoverStateBase22handleUplinkFromLanderERNS_12RoverContextEPhj + 0x1a594 + + + + _ZTVN4iris14RoverStateBaseE + 0xc888 + + + + _ZTSN4iris14RoverStateBaseE + 0xcf6e + + + + _ZTIN4iris14RoverStateBaseE + 0xd074 + + + + _ZN4iris14RoverStateBase21initiateNextI2cActionERNS_12RoverContextE + 0x1178e + + + + _ZN4iris14RoverStateBase29doGndCmdRequestDetailedReportERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a8dc + + + + _ZN4iris14RoverStateBase29doGndCmdSetAutoHeaterOffValueERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a472 + + + + _ZN4iris14RoverStateBase24handleStrokeFromHerculesERNS_12RoverContextEP16HercMsgs__Header + 0x15cae + + + + _ZN4iris14RoverStateBase22doGndCmdEnterSleepModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1aaf6 + + + + _ZN4iris14RoverStateBase20pumpMsgsFromHerculesERNS_12RoverContextE + 0x18554 + + + + _ZN4iris14RoverStateBase29handleRadioEnterStasisCommandERNS_12RoverContextE + 0x1b3de + + + + _ZN4iris14RoverStateBase14doGndCmdDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1aa7e + + + + _ZN4iris14RoverStateBase26sendDetailedReportToLanderERNS_12RoverContextEb + 0x14002 + + + + _ZN4iris14RoverStateBase22doGndCmdSwitchConnModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1ad4e + + + + _ZN4iris14RoverStateBase24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1ab14 + + + + _ZN4iris14RoverStateBase28doGndCmdSetAutoHeaterOnValueERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a448 + + + + _ZN4iris14RoverStateBase28handleRadioExitStasisCommandERNS_12RoverContextE + 0x1aff4 + + + + _ZN4iris14RoverStateBase21handleWdIntRisingEdgeERNS_12RoverContextE + 0x1a984 + + + + _ZN4iris14RoverStateBase32doGndCmdSetHeaterDutyCyclePeriodERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a342 + + + + _ZN4iris14RoverStateBase18pumpMsgsFromLanderERNS_12RoverContextE + 0x164e4 + + + + _ZN4iris14RoverStateBase13heaterControlERNS_12RoverContextE + 0x15908 + + + + _ZN4iris14RoverStateBase33handleRadioPowerCycleRadioCommandERNS_12RoverContextE + 0x19636 + + + + _ZN4iris14RoverStateBase14handleHighTempERNS_12RoverContextE + 0x1afde + + + + _ZN4iris14RoverStateBase26doGndCmdSetDebugCommsStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x17d24 + + + + _ZN4iris14RoverStateBase25handleRadioGotWifiCommandERNS_12RoverContextE + 0x19f76 + + + + _ZN4iris14RoverStateBase26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1ab32 + + + + _ZN4iris14RoverStateBase14txDownlinkDataERNS_12RoverContextEPvjb + 0x18a20 + + + + _ZN4iris14RoverStateBase23handleResetFromHerculesERNS_12RoverContextEP16HercMsgs__Header + 0x161fe + + + + _ZN4iris14RoverStateBase12echoToLanderERNS_12RoverContextEhPKh + 0x15bf8 + + + + _ZN4iris14RoverStateBase12doGndCmdEchoERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x19b7a + + + + _ZN4iris14RoverStateBase22handleWdIntFallingEdgeERNS_12RoverContextE + 0x1a9a4 + + + + _ZN4iris14RoverStateBase26doGndCmdSetHeaterDutyCycleERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1985c + + + + _ZN4iris14RoverStateBase16handleLanderDataERNS_12RoverContextE + 0x1aa9c + + + + _ZN4iris14RoverStateBase19herculesMsgCallbackEP16HercMsgs__HeaderPhjPv + 0x160c4 + + + + _ZN4iris14RoverStateBase25doGndCmdSetLatchBattStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1879c + + + + _ZN4iris14RoverStateBase22doGndCmdSetBattEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x191b4 + + + + _ZN4iris14RoverStateBase18sendLanderResponseERNS_12RoverContextER19WdCmdMsgs__Response + 0x1656e + + + + _ZN4iris14RoverStateBase27doGndCmdSetChargeRegEnStateERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x191f6 + + + + _ZN4iris14RoverStateBase8getStateEv + 0x1b23a + + + + _ZN4iris14RoverStateBase18handleHerculesDataERNS_12RoverContextE + 0x1aaba + + + + _ZN4iris14RoverStateBaseC1ENS_10RoverStateE + 0x1a9c4 + + + + _ZN4iris14RoverStateBase21doGndCmdPrepForDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1aad8 + + + + _ZN4iris14RoverStateBase19enableHerculesCommsERNS_12RoverContextE + 0x13c52 + + + + _ZN4iris27RoverStateEnteringKeepAlive22handleUplinkFromLanderERNS_12RoverContextEPhj + 0x1b08e + + + + _ZN4iris27RoverStateEnteringKeepAlive28nextStateAfterSetupCompletesEv + 0x1b45e + + + + _ZN4iris27RoverStateEnteringKeepAlive19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response + 0x17072 + + + + _ZN4iris27RoverStateEnteringKeepAlive20canEnterLowPowerModeERNS_12RoverContextE + 0x1b452 + + + + _ZN4iris27RoverStateEnteringKeepAlive18handleHerculesDataERNS_12RoverContextE + 0x19db8 + + + + _ZTVN4iris27RoverStateEnteringKeepAliveE + 0xc7a0 + + + + _ZTIN4iris27RoverStateEnteringKeepAliveE + 0xd068 + + + + _ZN4iris27RoverStateEnteringKeepAliveC1Ev + 0x1a7e6 + + + + _ZN4iris27RoverStateEnteringKeepAlive16handlePowerIssueERNS_12RoverContextE + 0x1b078 + + + + _ZN4iris27RoverStateEnteringKeepAlive25transitionToFinishUpSetupERNS_12RoverContextE + 0x19ad6 + + + + _ZN4iris27RoverStateEnteringKeepAlive12transitionToERNS_12RoverContextE + 0x1a49c + + + + _ZN4iris27RoverStateEnteringKeepAliveC2Ev + 0x1a7e6 + + + + _ZN4iris27RoverStateEnteringKeepAlive8spinOnceERNS_12RoverContextE + 0x15a86 + + + + _ZN4iris27RoverStateEnteringKeepAliveC1ENS_10RoverStateE + 0x1a7c2 + + + + _ZN4iris27RoverStateEnteringKeepAlive26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a79e + + + + _ZN4iris27RoverStateEnteringKeepAlive15handleTimerTickERNS_12RoverContextE + 0x14386 + + + + _ZTSN4iris27RoverStateEnteringKeepAliveE + 0xce70 + + + + _ZN4iris27RoverStateEnteringKeepAlive37transitionToWaitingForIoExpanderWriteERNS_12RoverContextE + 0x15082 + + + + _ZN4iris27RoverStateEnteringKeepAliveC2ENS_10RoverStateE + 0x1a7c2 + + + + _ZN4iris25RoverStateEnteringMissionC2Ev + 0x1a70e + + + + _ZN4iris25RoverStateEnteringMission41transitionToWatitingForWifiReadyOrTimeoutERNS_12RoverContextE + 0x1a942 + + + + _ZN4iris25RoverStateEnteringMission16handlePowerIssueERNS_12RoverContextE + 0x1b04c + + + + _ZN4iris25RoverStateEnteringMissionC1Ev + 0x1a70e + + + + _ZN4iris25RoverStateEnteringMission15handleTimerTickERNS_12RoverContextE + 0x132ae + + + + _ZTIN4iris25RoverStateEnteringMissionE + 0xd050 + + + + _ZN4iris25RoverStateEnteringMission8spinOnceERNS_12RoverContextE + 0x10f0c + + + + _ZN4iris25RoverStateEnteringMission19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response + 0x16f86 + + + + _ZN4iris25RoverStateEnteringMission38transitionToWaitingForIoExpanderWrite1ERNS_12RoverContextE + 0x16454 + + + + _ZTSN4iris25RoverStateEnteringMissionE + 0xce96 + + + + _ZN4iris25RoverStateEnteringMission38transitionToWaitingForIoExpanderWrite2ERNS_12RoverContextE + 0x16896 + + + + _ZTVN4iris25RoverStateEnteringMissionE + 0xcb34 + + + + _ZN4iris25RoverStateEnteringMission20canEnterLowPowerModeERNS_12RoverContextE + 0x1b42e + + + + _ZN4iris25RoverStateEnteringMission40transitionToWaitingForFuelGaugeOrTimeoutERNS_12RoverContextE + 0x16e98 + + + + _ZN4iris25RoverStateEnteringMission12transitionToERNS_12RoverContextE + 0x1ac5e + + + + _ZN4iris25RoverStateEnteringMission38transitionToWaitingForIoExpanderWrite3ERNS_12RoverContextE + 0x16ba4 + + + + _ZN4iris25RoverStateEnteringMission29transitionToWaitingForI2cDoneERNS_12RoverContextE + 0x1a39a + + + + _ZN4iris25RoverStateEnteringService8spinOnceERNS_12RoverContextE + 0x1b446 + + + + _ZN4iris25RoverStateEnteringServiceC2Ev + 0x1a77a + + + + _ZTSN4iris25RoverStateEnteringServiceE + 0xceba + + + + _ZTIN4iris25RoverStateEnteringServiceE + 0xd05c + + + + _ZN4iris25RoverStateEnteringServiceC1Ev + 0x1a77a + + + + _ZN4iris25RoverStateEnteringService12transitionToERNS_12RoverContextE + 0x1ac7c + + + + _ZN4iris25RoverStateEnteringService26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x19948 + + + + _ZN4iris25RoverStateEnteringService28nextStateAfterSetupCompletesEv + 0x1b43a + + + + _ZN4iris25RoverStateEnteringServiceC2ENS_10RoverStateE + 0x1a756 + + + + _ZTVN4iris25RoverStateEnteringServiceE + 0xc6b8 + + + + _ZN4iris25RoverStateEnteringService16handlePowerIssueERNS_12RoverContextE + 0x1b062 + + + + _ZN4iris25RoverStateEnteringServiceC1ENS_10RoverStateE + 0x1a756 + + + + _ZN4iris25RoverStateEnteringService24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1a732 + + + + _ZN4iris25RoverStateEnteringService19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response + 0x16ffc + + + + _ZN4iris25RoverStateEnteringService18handleHerculesDataERNS_12RoverContextE + 0x1ae58 + + + + _ZN4iris14RoverStateInit14handleHighTempERNS_12RoverContextE + 0x1ab6e + + + + _ZN4iris14RoverStateInit15handleTimerTickERNS_12RoverContextE + 0x1ab8c + + + + _ZN4iris14RoverStateInit20canEnterLowPowerModeERNS_12RoverContextE + 0x1b422 + + + + _ZN4iris14RoverStateInit16handlePowerIssueERNS_12RoverContextE + 0x1abc8 + + + + _ZN4iris14RoverStateInitC1ENS_10RoverStateEPKc + 0x1a17a + + + + _ZN4iris14RoverStateInit12transitionToERNS_12RoverContextE + 0x12f50 + + + + _ZN4iris14RoverStateInit18handleHerculesDataERNS_12RoverContextE + 0x1abe6 + + + + _ZN4iris14RoverStateInit16handleLanderDataERNS_12RoverContextE + 0x1abaa + + + + _ZN4iris14RoverStateInit19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response + 0x1ac04 + + + + _ZN4iris14RoverStateInit8spinOnceERNS_12RoverContextE + 0x1ac22 + + + + _ZN4iris14RoverStateInitC2ENS_10RoverStateEPKc + 0x1a17a + + + + _ZTVN4iris14RoverStateInitE + 0xc96c + + + + _ZTSN4iris14RoverStateInitE + 0xcf86 + + + + _ZTIN4iris14RoverStateInitE + 0xd020 + + + + _ZN4iris19RoverStateKeepAlive8spinOnceERNS_12RoverContextE + 0x146ce + + + + _ZN4iris19RoverStateKeepAlive16handlePowerIssueERNS_12RoverContextE + 0x1b036 + + + + _ZN4iris19RoverStateKeepAlive24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1af22 + + + + _ZN4iris19RoverStateKeepAlive12transitionToERNS_12RoverContextE + 0x18f86 + + + + _ZTSN4iris19RoverStateKeepAliveE + 0xcf00 + + + + _ZTVN4iris19RoverStateKeepAliveE + 0xc5d0 + + + + _ZTIN4iris19RoverStateKeepAliveE + 0xd044 + + + + _ZN4iris19RoverStateKeepAliveC2Ev + 0x1a920 + + + + _ZN4iris19RoverStateKeepAlive18handleHerculesDataERNS_12RoverContextE + 0x1ac40 + + + + _ZN4iris19RoverStateKeepAlive15handleTimerTickERNS_12RoverContextE + 0x19d86 + + + + _ZN4iris19RoverStateKeepAlive20canEnterLowPowerModeERNS_12RoverContextE + 0x1ae3e + + + + _ZN4iris19RoverStateKeepAliveC1Ev + 0x1a920 + + + + _ZN4iris19RoverStateKeepAlive26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1af3a + + + + _ZN4iris17RoverStateManager26getStateObjectForStateEnumENS_10RoverStateE + 0x16680 + + + + _Z7WDT_ISRv + 0x46e0 + + + + __TI_int49 + 0xfff2 + + + + _ZN4iris17RoverStateManager11spinForeverEv + 0x15776 + + + + _ZN4iris17RoverStateManager22transitionUntilSettledENS_10RoverStateE + 0x16ca6 + + + + _ZN4iris17RoverStateManager4initEv + 0x13b12 + + + + _ZN4iris17RoverStateManagerC1EPKc + 0x16812 + + + + _ZN4iris17RoverStateManagerC2EPKc + 0x16812 + + + + _ZN4iris17RoverStateManager11handleEventE11Event__Type + 0x13d90 + + + + _ZTSN4iris17RoverStateMissionE + 0xcf1e + + + + _ZN4iris17RoverStateMission16handlePowerIssueERNS_12RoverContextE + 0x1b00a + + + + _ZN4iris17RoverStateMission14doGndCmdDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x18108 + + + + _ZN4iris17RoverStateMission8spinOnceERNS_12RoverContextE + 0x14eb2 + + + + _ZN4iris17RoverStateMission15handleTimerTickERNS_12RoverContextE + 0x1233c + + + + _ZTIN4iris17RoverStateMissionE + 0xd02c + + + + _ZN4iris17RoverStateMissionC2Ev + 0x1a36e + + + + _ZN4iris17RoverStateMission12transitionToERNS_12RoverContextE + 0x19bb0 + + + + _ZN4iris17RoverStateMission13heaterControlERNS_12RoverContextE + 0x1a67a + + + + _ZN4iris17RoverStateMission19performResetCommandERNS_12RoverContextE26WdCmdMsgs__ResetSpecificIdP19WdCmdMsgs__Response + 0x16330 + + + + _ZN4iris17RoverStateMission20canEnterLowPowerModeERNS_12RoverContextE + 0x1adf0 + + + + _ZN4iris17RoverStateMission22performWatchdogCommandERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x18dc8 + + + + _ZN4iris17RoverStateMission24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x19fa6 + + + + _ZN4iris17RoverStateMissionC1Ev + 0x1a36e + + + + _ZTVN4iris17RoverStateMissionE + 0xca50 + + + + _ZTIN4iris17RoverStateServiceE + 0xd038 + + + + _ZN4iris17RoverStateService21doGndCmdPrepForDeployERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1af0a + + + + _ZN4iris17RoverStateServiceC1Ev + 0x1a8fe + + + + _ZN4iris17RoverStateService15handleTimerTickERNS_12RoverContextE + 0x129b6 + + + + _ZN4iris17RoverStateService20canEnterLowPowerModeERNS_12RoverContextE + 0x1ae24 + + + + _ZN4iris17RoverStateService22performWatchdogCommandERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x18e14 + + + + _ZN4iris17RoverStateService8spinOnceERNS_12RoverContextE + 0x14f9a + + + + _ZTVN4iris17RoverStateServiceE + 0xc4e8 + + + + _ZN4iris17RoverStateService26doGndCmdEnterKeepAliveModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x19fd6 + + + + _ZTSN4iris17RoverStateServiceE + 0xcf3a + + + + _ZN4iris17RoverStateService12transitionToERNS_12RoverContextE + 0x1ae0a + + + + _ZN4iris17RoverStateService24doGndCmdEnterServiceModeERNS_12RoverContextERK18WdCmdMsgs__MessageR19WdCmdMsgs__ResponseS7_Rb + 0x1990e + + + + _ZN4iris17RoverStateService16handlePowerIssueERNS_12RoverContextE + 0x1b020 + + + + _ZN4iris17RoverStateServiceC2Ev + 0x1a8fe + + + + RingBuffer__clear + 0x1b1fe + + + + RingBuffer__full + 0x1aa60 + + + + RingBuffer__freeCount + 0x1aef2 + + + + RingBuffer__usedCount + 0x1b212 + + + + RingBuffer__getOverwrite + 0x197a8 + + + + RingBuffer__get + 0x197a8 + + + + RingBuffer__peekAt + 0x197e4 + + + + RingBuffer__empty + 0x1aeda + + + + RingBuffer__putOverwrite + 0x198d4 + + + + RingBuffer__init + 0x17634 + + + + RingBuffer__put + 0x19820 + + + + Serialization__serializeAs64Bit + 0x1699c + + + + Serialization__deserializeAs16Bit + 0x17dee + + + + Serialization__deserializeAs32Bit + 0x1691a + + + + Serialization__serializeAs16Bit + 0x179f2 + + + + Serialization__serializeAs8Bit + 0x1816a + + + + Serialization__serializeAs32Bit + 0x1732c + + + + Serialization__deserializeAs8Bit + 0x182de + + + + Time__getTimeInCentiseconds + 0x1b528 + + + + Time__getPointerToCentisecondCount + 0x1b522 + + + + _ZN10__cxxabiv117__class_type_infoD1Ev + 0x1b3c2 + + + + _ZTSN10__cxxabiv120__si_class_type_infoE + 0xce4a + + + + _ZTSN10__cxxabiv117__class_type_infoE + 0xcede + + + + _ZN10__cxxabiv117__class_type_infoD2Ev + 0x1b3c2 + + + + _ZN10__cxxabiv120__si_class_type_infoD2Ev + 0x1b3d0 + + + + _ZTVN10__cxxabiv117__class_type_infoE + 0xcfda + + + + _ZTIN10__cxxabiv117__class_type_infoE + 0xd008 + + + + _ZN10__cxxabiv120__si_class_type_infoD1Ev + 0x1b3d0 + + + + _ZTIN10__cxxabiv120__si_class_type_infoE + 0xd014 + + + + _ZN10__cxxabiv117__class_type_infoD0Ev + 0x1b226 + + + + _ZTVN10__cxxabiv120__si_class_type_infoE + 0xcfea + + + + _ZN10__cxxabiv120__si_class_type_infoD0Ev + 0x1afc8 + + + + _ZTSSt9type_info + 0xcffa + + + + _ZNSt9type_infoD2Ev + 0x1b54c + + + + _ZNSt9type_infoD1Ev + 0x1b54c + + + + _ZTISt9type_info + 0xd07c + + + + _ZdlPv + 0x1b46a + + + + _ZdlPvj + 0x1b540 + + + + __TI_decompress_lzss + 0x170e8 + + + + __TI_decompress_none + 0x1b2ec + + + + __TI_int18 + 0xffb4 + + + + __TI_ISR_TRAP + 0x46f0 + + + + __TI_int19 + 0xffb6 + + + + __TI_int20 + 0xffb8 + + + + __TI_int21 + 0xffba + + + + __TI_int22 + 0xffbc + + + + __TI_int23 + 0xffbe + + + + __TI_int24 + 0xffc0 + + + + __TI_int25 + 0xffc2 + + + + __TI_int26 + 0xffc4 + + + + __TI_int27 + 0xffc6 + + + + __TI_int28 + 0xffc8 + + + + __TI_int29 + 0xffca + + + + __TI_int30 + 0xffcc + + + + __TI_int31 + 0xffce + + + + __TI_int32 + 0xffd0 + + + + __TI_int33 + 0xffd2 + + + + __TI_int34 + 0xffd4 + + + + __TI_int35 + 0xffd6 + + + + __TI_int36 + 0xffd8 + + + + __TI_int37 + 0xffda + + + + __TI_int38 + 0xffdc + + + + __TI_int40 + 0xffe0 + + + + __TI_int41 + 0xffe2 + + + + __TI_int42 + 0xffe4 + + + + __TI_int45 + 0xffea + + + + __TI_int47 + 0xffee + + + + __TI_int50 + 0xfff4 + + + + __TI_int51 + 0xfff6 + + + + __TI_int52 + 0xfff8 + + + + __TI_int53 + 0xfffa + + + + __TI_int54 + 0xfffc + + + + __TI_zero_init + 0x1a80a + + + + __cxa_pure_virtual + 0x1b4ba + + + + __abort_execution + 0x1b544 + + + + __mspabi_mpyi_f5hw + 0x1af82 + + + + __mspabi_slli + 0x1b492 + + + + __mspabi_slll_9 + 0x19708 + + + + __mspabi_slll_8 + 0x1970c + + + + __mspabi_slll_7 + 0x19710 + + + + __mspabi_slll_6 + 0x19714 + + + + __mspabi_slll_5 + 0x19718 + + + + __mspabi_slll_4 + 0x1971c + + + + __mspabi_slll_3 + 0x19720 + + + + __mspabi_slll_2 + 0x19724 + + + + __mspabi_slll_1 + 0x19728 + + + + __mspabi_slll_15 + 0x196f0 + + + + __mspabi_slll_14 + 0x196f4 + + + + __mspabi_slll_13 + 0x196f8 + + + + __mspabi_slll_12 + 0x196fc + + + + __mspabi_slll_11 + 0x19700 + + + + __mspabi_slll_10 + 0x19704 + + + + __mspabi_srli + 0x1b49c + + + + __mspabi_srll + 0x1b364 + + + + __mspabi_srlll + 0x19982 + + + + _abort_msg + 0x1ae72 + + + + _c_int00_noargs_mpu + 0x46c0 + + + + _stack + 0x362c + + + + _reset_vector + 0xfffe + + + + __mpu_init + 0x1a3c6 + + + + __TI_auto_init_nobinit_nopinit_hold_wdt + 0x18600 + + + + __TI_tmpnams + 0x2800 + + + _ftable + 0x31a6 + + + + __TI_ft_end + 0x358a + + + + _system_post_cinit + 0x1b550 + + + + _system_pre_init + 0x1b548 + + + + C$$EXIT + 0x1b52e + + + + abort + 0x1b52e + + + + __TI_enable_exit_profile_output + 0x358c + + + + exit + 0x18ef4 + + + + __TI_dtors_ptr + 0x355e + + + + __TI_cleanup_ptr + 0x355a + + + + _nop + 0x1b54e + + + + _lock + 0x3562 + + + + _unlock + 0x3566 + + + + __TI_doflush + 0x17e52 + + + + fflush + 0x184fc + + + + fputs + 0x14dc2 + + + + __TI_wrt_ok + 0x16d26 + + + + _sys_memory + 0x4124 + + + + free + 0x155c8 + + + + memalign + 0x147d8 + + + + malloc + 0x1b4c2 + + + + aligned_alloc + 0x147d8 + + + + __mspabi_remu + 0x1b16a + + + + __mspabi_divu + 0x1b16a + + + + fseek + 0x1791e + + + + lseek + 0x1972e + + + + _stream + 0x3366 + + + + _device + 0x326e + + + + HOSTclose + 0x18a70 + + + + HOSTlseek + 0x16164 + + + + parmbuf + 0x2900 + + + HOSTopen + 0x1739e + + + + HOSTread + 0x1770c + + + + HOSTrename + 0x1715e + + + + HOSTunlink + 0x19016 + + + + HOSTwrite + 0x1755c + + + + __TI_readmsg + 0x19dea + + + + C$$IO$$ + 0x19c4e + + + + _CIOBUF_ + 0x4002 + + + + __TI_writemsg + 0x19c1c + + + + memchr + 0x1b112 + + + + memcpy + 0x1b276 + + + + memset + 0x1b128 + + + + setvbuf + 0x15334 + + + + __TI_cleanup + 0x19be6 + + + + __TI_closefile + 0x17246 + + + + close + 0x183f0 + + + + finddevice + 0x1a28e + + + + getdevice + 0x1844a + + + + sprintf + 0x19170 + + + + __TI_printfi_minimal + 0x15412 + + + + memccpy + 0x1ad12 + + + + strchr + 0x1ad6a + + + + strcmp + 0x1ad86 + + + + strcpy + 0x1b322 + + + + strlen + 0x1b3fa + + + + strncpy + 0x19ee4 + + + + unlink + 0x1a036 + + + + vsprintf + 0x199bc + + + + write + 0x19898 + + + + _ZSt17__throw_bad_allocv + 0x1b52e + + + remove + 0x1a036 + + + Link successful +
diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/ccsObjs.opt b/Bins/RC7/FSW/Watchdog/Debug_with_flag/ccsObjs.opt new file mode 100644 index 000000000..07546d53a --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/ccsObjs.opt @@ -0,0 +1 @@ +"./src/comms/cmd_msgs.obj" "./src/comms/debug_comms.obj" "./src/comms/ground_msgs.obj" "./src/comms/hercules_comms.obj" "./src/comms/hercules_mpsm.obj" "./src/comms/hercules_msgs.obj" "./src/comms/i2c_sensors.obj" "./src/comms/ip_udp.obj" "./src/comms/lander_comms.obj" "./src/comms/slip_encode.obj" "./src/comms/slip_mpsm.obj" "./src/comms/watchdog_cmd_msgs.obj" "./src/comms/wd_int_mpsm.obj" "./src/drivers/adc.obj" "./src/drivers/blimp.obj" "./src/drivers/bsp.obj" "./src/drivers/i2c.obj" "./src/drivers/uart.obj" "./src/event/event_queue.obj" "./src/main.obj" "./src/watchdog.obj" "./src/stateMachine/RoverState.obj" "./src/stateMachine/RoverStateBase.obj" "./src/stateMachine/RoverStateEnteringKeepAlive.obj" "./src/stateMachine/RoverStateEnteringMission.obj" "./src/stateMachine/RoverStateEnteringService.obj" "./src/stateMachine/RoverStateEnteringStasis.obj" "./src/stateMachine/RoverStateInit.obj" "./src/stateMachine/RoverStateKeepAlive.obj" "./src/stateMachine/RoverStateManager.obj" "./src/stateMachine/RoverStateMission.obj" "./src/stateMachine/RoverStateService.obj" "./src/stateMachine/RoverStateStasis.obj" "./src/utils/ring_buffer.obj" "./src/utils/serialization.obj" "./src/utils/time.obj" "../lnk_msp430fr5994.cmd" -llibmpu_init.a -llibmath.a -llibc.a \ No newline at end of file diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/makefile b/Bins/RC7/FSW/Watchdog/Debug_with_flag/makefile new file mode 100644 index 000000000..d5cb21748 --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/makefile @@ -0,0 +1,215 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +CG_TOOL_ROOT := /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS + +GEN_OPTS__FLAG := +GEN_CMDS__FLAG := + +ORDERED_OBJS += \ +"./src/comms/cmd_msgs.obj" \ +"./src/comms/debug_comms.obj" \ +"./src/comms/ground_msgs.obj" \ +"./src/comms/hercules_comms.obj" \ +"./src/comms/hercules_mpsm.obj" \ +"./src/comms/hercules_msgs.obj" \ +"./src/comms/i2c_sensors.obj" \ +"./src/comms/ip_udp.obj" \ +"./src/comms/lander_comms.obj" \ +"./src/comms/slip_encode.obj" \ +"./src/comms/slip_mpsm.obj" \ +"./src/comms/watchdog_cmd_msgs.obj" \ +"./src/comms/wd_int_mpsm.obj" \ +"./src/drivers/adc.obj" \ +"./src/drivers/blimp.obj" \ +"./src/drivers/bsp.obj" \ +"./src/drivers/i2c.obj" \ +"./src/drivers/uart.obj" \ +"./src/event/event_queue.obj" \ +"./src/main.obj" \ +"./src/watchdog.obj" \ +"./src/stateMachine/RoverState.obj" \ +"./src/stateMachine/RoverStateBase.obj" \ +"./src/stateMachine/RoverStateEnteringKeepAlive.obj" \ +"./src/stateMachine/RoverStateEnteringMission.obj" \ +"./src/stateMachine/RoverStateEnteringService.obj" \ +"./src/stateMachine/RoverStateEnteringStasis.obj" \ +"./src/stateMachine/RoverStateInit.obj" \ +"./src/stateMachine/RoverStateKeepAlive.obj" \ +"./src/stateMachine/RoverStateManager.obj" \ +"./src/stateMachine/RoverStateMission.obj" \ +"./src/stateMachine/RoverStateService.obj" \ +"./src/stateMachine/RoverStateStasis.obj" \ +"./src/utils/ring_buffer.obj" \ +"./src/utils/serialization.obj" \ +"./src/utils/time.obj" \ +"../lnk_msp430fr5994.cmd" \ +$(GEN_CMDS__FLAG) \ +-llibmpu_init.a \ +-llibmath.a \ +-llibc.a \ + +-include ../makefile.init + +RM := rm -rf +RMDIR := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include subdir_vars.mk +-include src/comms/subdir_vars.mk +-include src/drivers/subdir_vars.mk +-include src/event/subdir_vars.mk +-include src/subdir_vars.mk +-include src/stateMachine/subdir_vars.mk +-include src/utils/subdir_vars.mk +-include subdir_rules.mk +-include src/comms/subdir_rules.mk +-include src/drivers/subdir_rules.mk +-include src/event/subdir_rules.mk +-include src/subdir_rules.mk +-include src/stateMachine/subdir_rules.mk +-include src/utils/subdir_rules.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C55_DEPS)),) +-include $(C55_DEPS) +endif +ifneq ($(strip $(C_UPPER_DEPS)),) +-include $(C_UPPER_DEPS) +endif +ifneq ($(strip $(S67_DEPS)),) +-include $(S67_DEPS) +endif +ifneq ($(strip $(S62_DEPS)),) +-include $(S62_DEPS) +endif +ifneq ($(strip $(S_DEPS)),) +-include $(S_DEPS) +endif +ifneq ($(strip $(OPT_DEPS)),) +-include $(OPT_DEPS) +endif +ifneq ($(strip $(C??_DEPS)),) +-include $(C??_DEPS) +endif +ifneq ($(strip $(ASM_UPPER_DEPS)),) +-include $(ASM_UPPER_DEPS) +endif +ifneq ($(strip $(S??_DEPS)),) +-include $(S??_DEPS) +endif +ifneq ($(strip $(C64_DEPS)),) +-include $(C64_DEPS) +endif +ifneq ($(strip $(CXX_DEPS)),) +-include $(CXX_DEPS) +endif +ifneq ($(strip $(S64_DEPS)),) +-include $(S64_DEPS) +endif +ifneq ($(strip $(INO_DEPS)),) +-include $(INO_DEPS) +endif +ifneq ($(strip $(CLA_DEPS)),) +-include $(CLA_DEPS) +endif +ifneq ($(strip $(S55_DEPS)),) +-include $(S55_DEPS) +endif +ifneq ($(strip $(SV7A_DEPS)),) +-include $(SV7A_DEPS) +endif +ifneq ($(strip $(C62_DEPS)),) +-include $(C62_DEPS) +endif +ifneq ($(strip $(C67_DEPS)),) +-include $(C67_DEPS) +endif +ifneq ($(strip $(PDE_DEPS)),) +-include $(PDE_DEPS) +endif +ifneq ($(strip $(K_DEPS)),) +-include $(K_DEPS) +endif +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(CC_DEPS)),) +-include $(CC_DEPS) +endif +ifneq ($(strip $(C++_DEPS)),) +-include $(C++_DEPS) +endif +ifneq ($(strip $(C43_DEPS)),) +-include $(C43_DEPS) +endif +ifneq ($(strip $(S43_DEPS)),) +-include $(S43_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +ifneq ($(strip $(CPP_DEPS)),) +-include $(CPP_DEPS) +endif +ifneq ($(strip $(SA_DEPS)),) +-include $(SA_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +EXE_OUTPUTS += \ +Watchdog.out \ + +EXE_OUTPUTS__QUOTED += \ +"Watchdog.out" \ + +BIN_OUTPUTS += \ +Watchdog.hex \ + +BIN_OUTPUTS__QUOTED += \ +"Watchdog.hex" \ + + +# All Target +all: $(OBJS) $(CMD_SRCS) $(GEN_CMDS) + @$(MAKE) --no-print-directory -Onone "Watchdog.out" + +# Tool invocations +Watchdog.out: $(OBJS) $(CMD_SRCS) $(GEN_CMDS) + @echo 'Building target: "$@"' + @echo 'Invoking: MSP430 Linker' + "/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/bin/cl430" -vmspx --data_model=restricted --use_hw_mpy=F5 --advice:power="all" --advice:hw_config="all" --define=__MSP430FR5994__ --define=ENABLE_DEBUG_ONLY_CODE --define=_MPU_ENABLE -g --c11 --printf_support=minimal --diag_warning=225 --diag_wrap=off --display_error_number --emit_warnings_as_errors --verbose_diagnostics --silicon_errata=CPU21 --silicon_errata=CPU22 --silicon_errata=CPU40 --entry_hook=hook_sp_check --entry_parm=name -z -m"Watchdog.map" --heap_size=4 --stack_size=1492 --cinit_hold_wdt=on -i"/home/iris/ti/ccs910/ccs/ccs_base/msp430/include" -i"/home/iris/ti/ccs910/ccs/ccs_base/msp430/lib/5xx_6xx_FRxx" -i"/home/iris/ti/ccs910/ccs/ccs_base/msp430/lib/FR59xx" -i"/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/lib" -i"/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include" --priority --reread_libs --define=_MPU_ENABLE --diag_wrap=off --display_error_number --warn_sections --xml_link_info="Watchdog_linkInfo.xml" --use_hw_mpy=F5 --rom_model -o "Watchdog.out" $(ORDERED_OBJS) + @echo 'Finished building target: "$@"' + @echo ' ' + +Watchdog.hex: $(EXE_OUTPUTS) + @echo 'Building files: $(strip $(EXE_OUTPUTS__QUOTED))' + @echo 'Invoking: MSP430 Hex Utility' + "/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/bin/hex430" --memwidth=8 --romwidth=8 -o "Watchdog.hex" $(EXE_OUTPUTS__QUOTED) + @echo 'Finished building: $(strip $(EXE_OUTPUTS__QUOTED))' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(BIN_OUTPUTS__QUOTED)$(EXE_OUTPUTS__QUOTED) + -$(RM) "src/comms/cmd_msgs.obj" "src/comms/debug_comms.obj" "src/comms/ground_msgs.obj" "src/comms/hercules_comms.obj" "src/comms/hercules_mpsm.obj" "src/comms/hercules_msgs.obj" "src/comms/i2c_sensors.obj" "src/comms/ip_udp.obj" "src/comms/lander_comms.obj" "src/comms/slip_encode.obj" "src/comms/slip_mpsm.obj" "src/comms/watchdog_cmd_msgs.obj" "src/comms/wd_int_mpsm.obj" "src/drivers/adc.obj" "src/drivers/blimp.obj" "src/drivers/bsp.obj" "src/drivers/i2c.obj" "src/drivers/uart.obj" "src/event/event_queue.obj" "src/main.obj" "src/watchdog.obj" "src/stateMachine/RoverState.obj" "src/stateMachine/RoverStateBase.obj" "src/stateMachine/RoverStateEnteringKeepAlive.obj" "src/stateMachine/RoverStateEnteringMission.obj" "src/stateMachine/RoverStateEnteringService.obj" "src/stateMachine/RoverStateEnteringStasis.obj" "src/stateMachine/RoverStateInit.obj" "src/stateMachine/RoverStateKeepAlive.obj" "src/stateMachine/RoverStateManager.obj" "src/stateMachine/RoverStateMission.obj" "src/stateMachine/RoverStateService.obj" + -$(RM) "src/stateMachine/RoverStateStasis.obj" "src/utils/ring_buffer.obj" "src/utils/serialization.obj" "src/utils/time.obj" + -$(RM) "src/comms/cmd_msgs.d" "src/comms/debug_comms.d" "src/comms/ground_msgs.d" "src/comms/hercules_comms.d" "src/comms/hercules_mpsm.d" "src/comms/hercules_msgs.d" "src/comms/i2c_sensors.d" "src/comms/ip_udp.d" "src/comms/lander_comms.d" "src/comms/slip_encode.d" "src/comms/slip_mpsm.d" "src/comms/watchdog_cmd_msgs.d" "src/comms/wd_int_mpsm.d" "src/drivers/adc.d" "src/drivers/blimp.d" "src/drivers/bsp.d" "src/drivers/i2c.d" "src/drivers/uart.d" "src/event/event_queue.d" "src/watchdog.d" "src/utils/ring_buffer.d" "src/utils/serialization.d" "src/utils/time.d" + -$(RM) "src/main.d" "src/stateMachine/RoverState.d" "src/stateMachine/RoverStateBase.d" "src/stateMachine/RoverStateEnteringKeepAlive.d" "src/stateMachine/RoverStateEnteringMission.d" "src/stateMachine/RoverStateEnteringService.d" "src/stateMachine/RoverStateEnteringStasis.d" "src/stateMachine/RoverStateInit.d" "src/stateMachine/RoverStateKeepAlive.d" "src/stateMachine/RoverStateManager.d" "src/stateMachine/RoverStateMission.d" "src/stateMachine/RoverStateService.d" "src/stateMachine/RoverStateStasis.d" + -@echo 'Finished clean' + -@echo ' ' + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets + diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/objects.mk b/Bins/RC7/FSW/Watchdog/Debug_with_flag/objects.mk new file mode 100644 index 000000000..df14ac3bc --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/objects.mk @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := -llibmpu_init.a -llibmath.a -llibc.a + diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/sources.mk b/Bins/RC7/FSW/Watchdog/Debug_with_flag/sources.mk new file mode 100644 index 000000000..372f9e374 --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/sources.mk @@ -0,0 +1,121 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +C55_SRCS := +A_SRCS := +ASM_UPPER_SRCS := +EXE_SRCS := +LDS_UPPER_SRCS := +CPP_SRCS := +CMD_SRCS := +O_SRCS := +ELF_SRCS := +C??_SRCS := +C64_SRCS := +C67_SRCS := +SA_SRCS := +S64_SRCS := +OPT_SRCS := +CXX_SRCS := +S67_SRCS := +S??_SRCS := +PDE_SRCS := +SV7A_SRCS := +K_SRCS := +CLA_SRCS := +S55_SRCS := +LD_UPPER_SRCS := +OUT_SRCS := +INO_SRCS := +LIB_SRCS := +ASM_SRCS := +S_UPPER_SRCS := +S43_SRCS := +LD_SRCS := +CMD_UPPER_SRCS := +C_UPPER_SRCS := +C++_SRCS := +C43_SRCS := +OBJ_SRCS := +LDS_SRCS := +S_SRCS := +CC_SRCS := +S62_SRCS := +C62_SRCS := +C_SRCS := +C55_DEPS := +C_UPPER_DEPS := +S67_DEPS := +S62_DEPS := +S_DEPS := +OPT_DEPS := +C??_DEPS := +ASM_UPPER_DEPS := +S??_DEPS := +C64_DEPS := +CXX_DEPS := +S64_DEPS := +INO_DEPS := +CLA_DEPS := +S55_DEPS := +SV7A_DEPS := +EXE_OUTPUTS := +C62_DEPS := +C67_DEPS := +PDE_DEPS := +K_DEPS := +C_DEPS := +CC_DEPS := +BIN_OUTPUTS := +C++_DEPS := +C43_DEPS := +S43_DEPS := +OBJS := +ASM_DEPS := +S_UPPER_DEPS := +CPP_DEPS := +SA_DEPS := +C++_DEPS__QUOTED := +OPT_DEPS__QUOTED := +S_UPPER_DEPS__QUOTED := +SA_DEPS__QUOTED := +C??_DEPS__QUOTED := +S67_DEPS__QUOTED := +C55_DEPS__QUOTED := +CC_DEPS__QUOTED := +ASM_UPPER_DEPS__QUOTED := +SV7A_DEPS__QUOTED := +S??_DEPS__QUOTED := +OBJS__QUOTED := +C67_DEPS__QUOTED := +K_DEPS__QUOTED := +S55_DEPS__QUOTED := +INO_DEPS__QUOTED := +C62_DEPS__QUOTED := +C_DEPS__QUOTED := +C_UPPER_DEPS__QUOTED := +C43_DEPS__QUOTED := +CPP_DEPS__QUOTED := +BIN_OUTPUTS__QUOTED := +C64_DEPS__QUOTED := +CXX_DEPS__QUOTED := +CLA_DEPS__QUOTED := +S_DEPS__QUOTED := +ASM_DEPS__QUOTED := +S43_DEPS__QUOTED := +EXE_OUTPUTS__QUOTED := +S64_DEPS__QUOTED := +S62_DEPS__QUOTED := +PDE_DEPS__QUOTED := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ +src/comms \ +src/drivers \ +src/event \ +src \ +src/stateMachine \ +src/utils \ + diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/blimp.d b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/blimp.d new file mode 100644 index 000000000..0b9b032c4 --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/blimp.d @@ -0,0 +1,6 @@ +# FIXED + +src/blimp.obj: ../src/blimp.c + +../src/blimp.c: + diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/cmd_msgs.d b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/cmd_msgs.d new file mode 100644 index 000000000..bf739e8da --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/cmd_msgs.d @@ -0,0 +1,35 @@ +# FIXED + +src/comms/cmd_msgs.obj: ../src/comms/cmd_msgs.c +src/comms/cmd_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/cmd_msgs.h +src/comms/cmd_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h +src/comms/cmd_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h +src/comms/cmd_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h +src/comms/cmd_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h +src/comms/cmd_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h +src/comms/cmd_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h +src/comms/cmd_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h +src/comms/cmd_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h +src/comms/cmd_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h +src/comms/cmd_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h +src/comms/cmd_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h +src/comms/cmd_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/utils/serialization.h +src/comms/cmd_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h +src/comms/cmd_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h + +../src/comms/cmd_msgs.c: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/cmd_msgs.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/utils/serialization.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h: diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/cmd_msgs.obj b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/cmd_msgs.obj new file mode 100644 index 000000000..58eeff59a Binary files /dev/null and b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/cmd_msgs.obj differ diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/debug_comms.d b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/debug_comms.d new file mode 100644 index 000000000..9bc81a390 --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/debug_comms.d @@ -0,0 +1,61 @@ +# FIXED + +src/comms/debug_comms.obj: ../src/comms/debug_comms.c +src/comms/debug_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/debug_comms.h +src/comms/debug_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/lander_comms.h +src/comms/debug_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/uart.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h +src/comms/debug_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h +src/comms/debug_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_comms.h +src/comms/debug_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_msgs.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/assert.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430fr5994.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/in430.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics_legacy_undefs.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/legacy.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdio.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdarg.h +src/comms/debug_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/string.h + +../src/comms/debug_comms.c: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/debug_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/lander_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/uart.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_msgs.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/assert.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430fr5994.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/in430.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics_legacy_undefs.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/legacy.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdio.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdarg.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/string.h: diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/debug_comms.obj b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/debug_comms.obj new file mode 100644 index 000000000..d6b708e4d Binary files /dev/null and b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/debug_comms.obj differ diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/ground_msgs.d b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/ground_msgs.d new file mode 100644 index 000000000..34e0f5035 --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/ground_msgs.d @@ -0,0 +1,75 @@ +# FIXED + +src/comms/ground_msgs.obj: ../src/comms/ground_msgs.c +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/ground_msgs.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/watchdog_cmd_msgs.h +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/cmd_msgs.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/i2c_sensors.h +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/flags.h +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/adc.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430fr5994.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/in430.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics_legacy_undefs.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/legacy.h +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/debug_comms.h +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/lander_comms.h +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/uart.h +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_comms.h +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_msgs.h +src/comms/ground_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/assert.h +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/ip_udp.h +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/bsp.h +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/utils/serialization.h +src/comms/ground_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/watchdog.h + +../src/comms/ground_msgs.c: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/ground_msgs.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/watchdog_cmd_msgs.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/cmd_msgs.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/i2c_sensors.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/flags.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/adc.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430fr5994.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/in430.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics_legacy_undefs.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/legacy.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/debug_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/lander_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/uart.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_msgs.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/assert.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/ip_udp.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/bsp.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/utils/serialization.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/watchdog.h: diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/ground_msgs.obj b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/ground_msgs.obj new file mode 100644 index 000000000..8b4fc4a62 Binary files /dev/null and b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/ground_msgs.obj differ diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_comms.d b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_comms.d new file mode 100644 index 000000000..391d0285f --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_comms.d @@ -0,0 +1,63 @@ +# FIXED + +src/comms/hercules_comms.obj: ../src/comms/hercules_comms.c +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/assert.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/string.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430fr5994.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/in430.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics_legacy_undefs.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/legacy.h +src/comms/hercules_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/debug_comms.h +src/comms/hercules_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/lander_comms.h +src/comms/hercules_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/uart.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h +src/comms/hercules_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h +src/comms/hercules_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h +src/comms/hercules_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_comms.h +src/comms/hercules_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_msgs.h +src/comms/hercules_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_mpsm.h +src/comms/hercules_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/ip_udp.h +src/comms/hercules_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/utils/time.h + +../src/comms/hercules_comms.c: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/assert.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/string.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430fr5994.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/in430.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics_legacy_undefs.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/legacy.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/debug_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/lander_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/uart.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_msgs.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_mpsm.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/ip_udp.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/utils/time.h: diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_comms.obj b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_comms.obj new file mode 100644 index 000000000..2efa9f5e1 Binary files /dev/null and b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_comms.obj differ diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_mpsm.d b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_mpsm.d new file mode 100644 index 000000000..a9f1e2a06 --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_mpsm.d @@ -0,0 +1,49 @@ +# FIXED + +src/comms/hercules_mpsm.obj: ../src/comms/hercules_mpsm.c +src/comms/hercules_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/assert.h +src/comms/hercules_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h +src/comms/hercules_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h +src/comms/hercules_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/string.h +src/comms/hercules_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h +src/comms/hercules_mpsm.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/debug_comms.h +src/comms/hercules_mpsm.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/lander_comms.h +src/comms/hercules_mpsm.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/uart.h +src/comms/hercules_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h +src/comms/hercules_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h +src/comms/hercules_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h +src/comms/hercules_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h +src/comms/hercules_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h +src/comms/hercules_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h +src/comms/hercules_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h +src/comms/hercules_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h +src/comms/hercules_mpsm.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h +src/comms/hercules_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h +src/comms/hercules_mpsm.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_comms.h +src/comms/hercules_mpsm.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_msgs.h +src/comms/hercules_mpsm.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_mpsm.h +src/comms/hercules_mpsm.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/utils/ring_buffer.h + +../src/comms/hercules_mpsm.c: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/assert.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/string.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/debug_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/lander_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/uart.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_msgs.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_mpsm.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/utils/ring_buffer.h: diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_mpsm.obj b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_mpsm.obj new file mode 100644 index 000000000..fdf07ffa9 Binary files /dev/null and b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_mpsm.obj differ diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_msgs.d b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_msgs.d new file mode 100644 index 000000000..3cff5d486 --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_msgs.d @@ -0,0 +1,35 @@ +# FIXED + +src/comms/hercules_msgs.obj: ../src/comms/hercules_msgs.c +src/comms/hercules_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_msgs.h +src/comms/hercules_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h +src/comms/hercules_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h +src/comms/hercules_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h +src/comms/hercules_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h +src/comms/hercules_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h +src/comms/hercules_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h +src/comms/hercules_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h +src/comms/hercules_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h +src/comms/hercules_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h +src/comms/hercules_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h +src/comms/hercules_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h +src/comms/hercules_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/utils/serialization.h +src/comms/hercules_msgs.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h +src/comms/hercules_msgs.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h + +../src/comms/hercules_msgs.c: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_msgs.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/utils/serialization.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h: diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_msgs.obj b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_msgs.obj new file mode 100644 index 000000000..86b90ceec Binary files /dev/null and b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/hercules_msgs.obj differ diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/i2c_sensors.d b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/i2c_sensors.d new file mode 100644 index 000000000..7f27a7961 --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/i2c_sensors.d @@ -0,0 +1,63 @@ +# FIXED + +src/comms/i2c_sensors.obj: ../src/comms/i2c_sensors.c +src/comms/i2c_sensors.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/debug_comms.h +src/comms/i2c_sensors.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/lander_comms.h +src/comms/i2c_sensors.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/uart.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h +src/comms/i2c_sensors.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h +src/comms/i2c_sensors.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_comms.h +src/comms/i2c_sensors.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_msgs.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/assert.h +src/comms/i2c_sensors.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/i2c_sensors.h +src/comms/i2c_sensors.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/i2c.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430fr5994.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/in430.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics_legacy_undefs.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/legacy.h +src/comms/i2c_sensors.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/utils/time.h +src/comms/i2c_sensors.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/string.h + +../src/comms/i2c_sensors.c: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/debug_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/lander_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/uart.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_msgs.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/assert.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/i2c_sensors.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/i2c.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430fr5994.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/in430.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics_legacy_undefs.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/legacy.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/utils/time.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/string.h: diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/i2c_sensors.obj b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/i2c_sensors.obj new file mode 100644 index 000000000..d2ad37097 Binary files /dev/null and b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/i2c_sensors.obj differ diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/ip_udp.d b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/ip_udp.d new file mode 100644 index 000000000..94732183c --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/ip_udp.d @@ -0,0 +1,39 @@ +# FIXED + +src/comms/ip_udp.obj: ../src/comms/ip_udp.c +src/comms/ip_udp.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h +src/comms/ip_udp.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h +src/comms/ip_udp.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h +src/comms/ip_udp.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h +src/comms/ip_udp.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h +src/comms/ip_udp.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h +src/comms/ip_udp.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h +src/comms/ip_udp.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h +src/comms/ip_udp.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/string.h +src/comms/ip_udp.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h +src/comms/ip_udp.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h +src/comms/ip_udp.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/ip_udp.h +src/comms/ip_udp.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h +src/comms/ip_udp.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/uart.h +src/comms/ip_udp.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h +src/comms/ip_udp.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h +src/comms/ip_udp.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/cfg.h + +../src/comms/ip_udp.c: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/string.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/ip_udp.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/uart.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/cfg.h: diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/ip_udp.obj b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/ip_udp.obj new file mode 100644 index 000000000..bff021596 Binary files /dev/null and b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/ip_udp.obj differ diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/lander_comms.d b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/lander_comms.d new file mode 100644 index 000000000..176258733 --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/lander_comms.d @@ -0,0 +1,65 @@ +# FIXED + +src/comms/lander_comms.obj: ../src/comms/lander_comms.c +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/assert.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/string.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430fr5994.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/in430.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics_legacy_undefs.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/ccs_base/msp430/include/legacy.h +src/comms/lander_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h +src/comms/lander_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/debug_comms.h +src/comms/lander_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/lander_comms.h +src/comms/lander_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/uart.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h +src/comms/lander_comms.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h +src/comms/lander_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_comms.h +src/comms/lander_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_msgs.h +src/comms/lander_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/ip_udp.h +src/comms/lander_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/slip_encode.h +src/comms/lander_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/slip_mpsm.h +src/comms/lander_comms.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/utils/time.h + +../src/comms/lander_comms.c: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/assert.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/string.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/msp430fr5994.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/in430.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/intrinsics_legacy_undefs.h: +/home/iris/ti/ccs910/ccs/ccs_base/msp430/include/legacy.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/debug_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/lander_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/drivers/uart.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_comms.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/hercules_msgs.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/ip_udp.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/slip_encode.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/slip_mpsm.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/utils/time.h: diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/lander_comms.obj b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/lander_comms.obj new file mode 100644 index 000000000..4a69cf258 Binary files /dev/null and b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/lander_comms.obj differ diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/slip_encode.d b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/slip_encode.d new file mode 100644 index 000000000..9198146a8 --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/slip_encode.d @@ -0,0 +1,33 @@ +# FIXED + +src/comms/slip_encode.obj: ../src/comms/slip_encode.c +src/comms/slip_encode.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/slip_encode.h +src/comms/slip_encode.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h +src/comms/slip_encode.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h +src/comms/slip_encode.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h +src/comms/slip_encode.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h +src/comms/slip_encode.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h +src/comms/slip_encode.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h +src/comms/slip_encode.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h +src/comms/slip_encode.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h +src/comms/slip_encode.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h +src/comms/slip_encode.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h +src/comms/slip_encode.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h +src/comms/slip_encode.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h +src/comms/slip_encode.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h + +../src/comms/slip_encode.c: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/slip_encode.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h: diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/slip_encode.obj b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/slip_encode.obj new file mode 100644 index 000000000..474149198 Binary files /dev/null and b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/slip_encode.obj differ diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/slip_mpsm.d b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/slip_mpsm.d new file mode 100644 index 000000000..c3658c077 --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/slip_mpsm.d @@ -0,0 +1,35 @@ +# FIXED + +src/comms/slip_mpsm.obj: ../src/comms/slip_mpsm.c +src/comms/slip_mpsm.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/slip_mpsm.h +src/comms/slip_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h +src/comms/slip_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h +src/comms/slip_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h +src/comms/slip_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h +src/comms/slip_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h +src/comms/slip_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h +src/comms/slip_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h +src/comms/slip_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h +src/comms/slip_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h +src/comms/slip_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h +src/comms/slip_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h +src/comms/slip_mpsm.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/ip_udp.h +src/comms/slip_mpsm.obj: /home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h +src/comms/slip_mpsm.obj: /home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h + +../src/comms/slip_mpsm.c: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/slip_mpsm.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_stdint40.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/cdefs.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_types.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/machine/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/sys/_stdint.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stddef.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/_ti_config.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/linkage.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/comms/ip_udp.h: +/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include/common.h: +/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include/stdbool.h: diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/slip_mpsm.obj b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/slip_mpsm.obj new file mode 100644 index 000000000..0785262b1 Binary files /dev/null and b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/slip_mpsm.obj differ diff --git a/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/subdir_rules.mk b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/subdir_rules.mk new file mode 100644 index 000000000..ccc608461 --- /dev/null +++ b/Bins/RC7/FSW/Watchdog/Debug_with_flag/src/comms/subdir_rules.mk @@ -0,0 +1,13 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Each subdirectory must supply rules for building sources it contributes +src/comms/%.obj: ../src/comms/%.c $(GEN_OPTS) | $(GEN_FILES) + @echo 'Building file: "$<"' + @echo 'Invoking: MSP430 Compiler' + "/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/bin/cl430" -vmspx --data_model=restricted --use_hw_mpy=F5 --include_path="/home/iris/ti/ccs910/ccs/ccs_base/msp430/include" --include_path="/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog" --include_path="/home/iris/Desktop/Working_Folders/mschnur/Watchdog_MSP430/Apps/FlightSoftware/Watchdog/include" --include_path="/home/iris/ti/ccs910/ccs/tools/compiler/ti-cgt-msp430_18.12.2.LTS/include" --advice:power="all" --advice:hw_config="all" --define=__MSP430FR5994__ --define=ENABLE_DEBUG_ONLY_CODE --define=_MPU_ENABLE -g --c11 --printf_support=minimal --diag_warning=225 --diag_wrap=off --display_error_number --emit_warnings_as_errors --verbose_diagnostics --silicon_errata=CPU21 --silicon_errata=CPU22 --silicon_errata=CPU40 --entry_hook=hook_sp_check --entry_parm=name --preproc_with_compile --preproc_dependency="src/comms/$(basename $(