FOSSASAT-1B
Test List
Global Communication_Acknowledge (uint8_t functionId, uint8_t result)
(ID COMMS_H_T10) (SEV 1) Test that each command/packet is processed correctly.
Global Communication_Check_OptDataLen (uint8_t expected, uint8_t actual)
(ID COMMS_H_T14) (SEV 1) Check that this function equates correctly.
Global Communication_CW_Beep (uint32_t len)
(ID COMMS_H_T7) (SEV 2) Test that the CW beep is received ok.
Global Communication_Execute_Function (uint8_t functionId, uint8_t *optData=NULL, size_t optDataLen=0)
(ID COMMS_H_T11) (SEV 1) Test that each command is responded to with the correct function and data.
Global Communication_Frame_Add (uint8_t **buffPtr, T val, const char *name)
(ID COMMS_H_T8) (SEV 1) Test that the system information is received correctly.
Global Communication_Process_Packet ()
(ID COMMS_H_T9) (SEV 1) Test that each command/packet is processed correctly.
Global Communication_Receive_Interrupt ()
(ID COMMS_H_T0) (SEV 1) Make sure this function is called when the radio receives data.
Global Communication_Send_Morse_Beacon (float battVoltage)

(ID COMMS_H_T5) (SEV 1) Test that the beacon message can be received properly.

(ID COMMS_H_T6) (SEV 1) Test that the beacon messages battery voltage is received ok.

Global Communication_Send_Response (uint8_t respId, uint8_t *optData=nullptr, size_t optDataLen=0, bool overrideModem=false)
(ID COMMS_H_T12) (SEV 1) Test that each response transmits correctly.
Global Communication_Send_System_Info ()
(ID COMMS_H_T8) (SEV 1) Test that the system information is received correctly.
Global Communication_Set_Configuration (uint8_t *optData, uint8_t optDataLen)
(ID COMMS_H_T2) (SEV 1) Make sure the modem mode is changed with no errors.
Global Communication_Set_Modem (uint8_t modem)
(ID COMMS_H_T1) (SEV 1) Make sure the modem mode is changed with no errors.
Global Communication_Set_SpreadingFactor (uint8_t sfMode)

(ID COMMS_H_T3) (SEV 1) Make sure the radio's spreading factor can be changed with no errors.

(ID COMMS_H_T4) (SEV 1) Make sure the radio's spreading factors are compatable with generic radios.

Global Communication_Transmit (uint8_t *data, uint8_t len, bool overrideModem=true)
(ID COMMS_H_T13) (SEV 1) Check that each function/command transmits correctly.
Global Comunication_Parse_Frame (uint8_t *frame, size_t len)
(ID COMMS_H_T10) (SEV 1) Test that each command/packet is processed correctly.
Module defines_debug_macros

(ID CONF_DEBUG_MACROS_T0) (SEV 1) Uncomment ENABLE_TRANSMISSION_CONTROL, test no transmissions are produced.

(ID CONF_DEBUG_MACROS_T1) (SEV 1) Uncomment ENABLE_DEPLOYMENT_SEQUENCE, test no deployment sequence ran (this define is for debugging purposes).

(ID CONF_DEBUG_MACROS_T2) (SEV 1) Uncomment ENABLE_INTERVAL_CONTROL, test that the battery voltages have no affect on the sleep duration.

(ID CONF_DEBUG_MACROS_T3) (SEV 1) Uncomment ENABLE_INA226, test that the current readings are correct.

Module defines_default_power_configuration

(ID CONF_POWER_CONF_T0) (SEV 1) Check that the low power mode works.

(ID CONF_POWER_CONF_T1) (SEV 1) Check that the low power mode can be disabled using LOW_POWER_MODE_ENABLED.

(ID CONF_POWER_CONF_T3) (SEV 1) Check that the MPPT is controlled by the temperature using MPPT_TEMP_SWITCH_ENABLED.

(ID CONF_POWER_CONF_T4) (SEV 1) Check that the MPPT's temperature controller can be disabled and enabled using MPPT_KEEP_ALIVE_ENABLED.

(ID CONF_POWER_CONF_T5) (SEV 1) Check that the satellite's transmissions can be disabled and enabled using TRANSMIT_ENABLED.

Module defines_eeprom_address_map

(ID CONF_EEPROM_ADDR_MAP_T0) (SEV 1) Check that EEPROM_DEPLOYMENT_COUNTER_ADDR is functional, including restarts.

(ID CONF_EEPROM_ADDR_MAP_T1) (SEV 1) Check that EEPROM_POWER_CONFIG_ADDR is functional, including restarts.

(ID CONF_EEPROM_ADDR_MAP_T2) (SEV 1) Check that EEPROM_FIRST_RUN_ADDR is functional, including restarts.

(ID CONF_EEPROM_ADDR_MAP_T3) (SEV 1) Check that EEPROM_RESTART_COUNTER_ADDR is functional, including restarts.

(ID CONF_EEPROM_ADDR_MAP_T4) (SEV 1) Check that EEPROM_CALLSIGN_LEN_ADDR is functional, including restarts.

(ID CONF_EEPROM_ADDR_MAP_T5) (SEV 1) Check that EEPROM_CALLSIGN_ADDR is functional, including restarts.

Module defines_eeprom_variables

(ID CONF_EEPROM_VAR_T0) (SEV 1) Check that the EEPROM_RESET_VALUE is suitable.

(ID CONF_EEPROM_VAR_T1) (SEV 1) Check that the EEPROM_FIRST_RUN is suitable.

(ID CONF_EEPROM_VAR_T3) (SEV 1) Check that the EEPROM_CONSECUTIVE_RUN is suitable.

Module defines_ina226_configuration
(ID CONF_INA226_CONF_T0) (SEV 1) Check that the INA226 can be connected to and gives the correct values.
Module defines_mcu_temperature_configuration

(ID CONF_MCU_TEMP_T0) (SEV 1) Check that the MCU_TEMP_OFFSET functions correctly.

(ID CONF_MCU_TEMP_T1) (SEV 1) Check that the MCU_TEMP_COEFFICIENT functions correctly.

Module defines_pin_map

(ID CONF_PIN_MAP_T0) (SEV 1) Check that solar panel A voltage can be read from ANALOG_IN_SOLAR_A_VOLTAGE_PIN.

(ID CONF_PIN_MAP_T1) (SEV 1) Check that solar panel B voltage can be read from ANALOG_IN_SOLAR_B_VOLTAGE_PIN.

(ID CONF_PIN_MAP_T2) (SEV 1) Check that solar panel C voltage can be read from ANALOG_IN_SOLAR_C_VOLTAGE_PIN.

(ID CONF_PIN_MAP_T3) (SEV 1) Check that the random seed analog pin is suitable from ANALOG_IN_RANDOM_SEED.

(ID CONF_PIN_MAP_T4) (SEV 1) Check that the MPPT circuit is controlled correctly using DIGITAL_OUT_MPPT_PIN.

(ID CONF_PIN_MAP_T5) (SEV 1) Check that the deployment hardware deploys when DIGITAL_OUT_MOSFET_1 and DIGITAL_OUT_MOSFET_2 are brought high.

(ID CONF_PIN_MAP_T6) (SEV 1) Check that the radio can be communicated with using pins RADIO_NSS, RADIO_DIO1, RADIO_BUSY and RADIO_NRST.

Module defines_power_management_configuration

(ID CONF_POWER_MANAGEMENT_T0) (SEV 1) Check that the satellite switches to low power mode when its voltage goes below BATTERY_VOLTAGE_LIMIT.

(ID CONF_POWER_MANAGEMENT_T1) (SEV 2) Check that the satellite sends a morse beacon transmission when it switches to Low Power Mode.

(ID CONF_POWER_MANAGEMENT_T2) (SEV 1) Check that the battery stops charging when the temperature goes below this threshold, and starts charging again when it is not.

(ID CONF_POWER_MANAGEMENT_T3) (SEV 1) Check that the watchdog is signalled every WATCHDOG_LOOP_HEARTBEAT_PERIOD.

(ID CONF_POWER_MANAGEMENT_T4) (SEV 1) Check that the satellite sleeping times using the SLEEP_LENGTH_CONSTANT is suitable to account for the LowPower libraries overhead.

(ID CONF_POWER_MANAGEMENT_T5) (SEV 1) Check that the satellite does not deploy after DEPLOYMENT_ATTEMPS has reached.

(ID CONF_POWER_MANAGEMENT_T6) (SEV 1) Check that the satellite waits for this amount of time before the deploy sequence starts, this is for jettison.

(ID CONF_POWER_MANAGEMENT_T7) (SEV 5) Check that each debug print waits DEPLOYMENT_DEBUG_SAMPLE_PERIOD amount of time between each print.

Module defines_radio_common_configuraiton

(ID CONF_RADIO_T0) (SEV 1) Check that the SYNC_WORD is compatable with all radios and is suitable.

(ID CONF_RADIO_T1) (SEV 1) Check that the TXC0_VOLTAGE value is suitable.

(ID CONF_RADIO_T2) (SEV 1) Check that the LOW_POWER_LEVEL is suitable.

(ID CONF_RADIO_T3) (SEV 1) Check that the MAX_NUMBER_OF_BLOCKS works.

(ID CONF_RADIO_T4) (SEV 1) Check that the LORA_RECEIVE_WINDOW_LENGTH works.

(ID CONF_RADIO_T5) (SEV 1) Check that the FSK_RECEIVE_WINDOW_LENGTH works.

(ID CONF_RADIO_T6) (SEV 1) Check that the RESPONSE_DELAY is suitable and works.

Module defines_radio_lora_configuration

Test that we can receive LoRa transmissions from the satellite with these default parameters

(ID CONF_LORA_RADIO_T1) (SEV 1) Check that the radio transmits at LORA_BANDWIDTH.

(ID CONF_LORA_RADIO_T2) (SEV 1) Check that the radio is transmitting at LORA_SPREADING_FACTOR.

(ID CONF_LORA_RADIO_T3) (SEV 1) Check that the radio can/is transmitting at LORA_SPREADING_FACTOR_ALT.

(ID CONF_LORA_RADIO_T4) (SEV 1) Check that the radio is transmitting at LORA_CODING_RATE.

(ID CONF_LORA_RADIO_T5) (SEV 1) Check that the radio is transmitting at LORA_OUTPUT_POWER.

(ID CONF_LORA_RADIO_T6) (SEV 1) Check that the radio draws no more than 160.0mA.

(ID CONF_LORA_RADIO_T0) (SEV 1) Check that the radio transmits lora at LORA_CARRIER_FREQUENCY.

Module defines_radio_modem_configuration

(ID CONF_MODEM_T0) Check that MODEM_LORA is suitable.

(ID CONF_MODEM_T1) Check that MODEM_FSK is suitable.

Module defines_radio_morse_cw_configuration

(ID CONF_MORSE_CW_T0) (SEV 1) Check that the number of beeps given by the radio in low power mode is NUM_CW_BEEPS.

(ID CONF_MORSE_CW_T1) (SEV 1) Check that the morse starts a signal with MORSE_PREAMBLE_LENGTH.

(ID CONF_MORSE_CW_T2) (SEV 1) Check that the words per minute of the morse transmissions is MORSE_SPEED.

Module defines_radio_non_ism_band_fsk_configuraiton

(ID CONF_FSK_RADIO_T0) (SEV 1) Check that the radio functions at FSK_CARRIER_FREQUENCY.

(ID CONF_FSK_RADIO_T1) (SEV 1) Check that the radio functions with bit rate of FSK_BIT_RATE.

(ID CONF_FSK_RADIO_T2) (SEV 1) Check that the radio functions with a frequency deviation of FSK_FREQUENCY_DEVIATION.

(ID CONF_FSK_RADIO_T3) (SEV 1) Check that the radio receives FSK messages at FSK_RX_BANDWIDTH.

(ID CONF_FSK_RADIO_T4) (SEV 1) Check that the radio outputs at FSK_OUTPUT_POWER.

(ID CONF_FSK_RADIO_T5) (SEV 1) Check that the radio preamble is FSK_PREAMBLE_LENGTH.

(ID CONF_FSK_RADIO_T6) (SEV 1) Check that the data shaping is FSK_DATA_SHAPING.

(ID CONF_FSK_RADIO_T7) (SEV 1) Check that the maximum drawn current is no more than FSK_CURRENT_LIMIT.

Module defines_tmp100_configuration
(ID CONF_TMP100_T0) (SEV 1) Check that the TMP100 sensor returns the correct value (given the resolution) from the Wire connection.
Global Deployment_Deploy ()
(ID DEPLOYMENT_H_T0) (SEV 1) Make sure the antenna deploys using this function.
Global Persistent_Storage_Wipe ()
(ID PERSIS_STOR_H_T0) (SEV 1) Does the EEPROM enter a valid state after this function is ran?
Global Pin_Interface_Read_Temperature (uint8_t sensorAddr)

(ID PIN_INTERF_H_T1) (SEV 1) Make sure that all resolutions do not break the satellite.

(ID PIN_INTERF_H_T2) (SEV 1) Make sure this returns the correct value.

Global Pin_Interface_Read_Temperature_Internal ()

(ID PIN_INTERF_H_T3) (SEV 1) Make sure this does not break the satellite.

(ID PIN_INTERF_H_T4) (SEV 2) Make sure this returns the correct value.

Global Pin_Interface_Read_Voltage (uint8_t pin)
(ID PIN_INTERF_H_T5) (SEV 1) Make sure the given equation is correct for all compatable pins.
Global Pin_Interface_Set_Temp_Resolution (uint8_t sensorAddr, uint8_t res)
(ID PIN_INTERF_H_T0) (SEV 1) Make sure that this does not break with the given resolutions.
Global Pin_Interface_Watchdog_Heartbeat (bool manageBattery=false)
(ID PIN_INTERF_H_T6) (SEV 1) Make sure this function keeps the satellite alive.
Global Pin_Interface_Watchdog_Restart ()
(ID PIN_INTERF_H_T7) (SEV 1) Make sure this function resets the watchdog.
Global Power_Control_Charge (bool charge)

(ID POWER_CONT_H_T3) (SEV 1) Make sure the battery charges when this function is called.

(ID POWER_CONT_H_T4) (SEV 1) When mppt keep alive is enabled, make sure that the battery charges.

(ID POWER_CONT_H_T5) (SEV 1) When mppt temperature switch is enabled, make sure the battery doesn't charge.

(ID POWER_CONT_H_T6) (SEV 1) When the charge boolean is TRUE, is allows the battery to charge.

(ID POWER_CONT_H_T14) (SEV 1) When the charge boolean is FALSe, is prevents the battery to charge.

Global Power_Control_Delay (uint32_t ms, bool sleep, bool sleepRadio=false)
(ID POWER_CONT_H_T8) (SEV 1) Check that the satellite's program is delayed for the given number of seconds without restarting.
Global Power_Control_Get_Battery_Voltage ()
(ID POWER_CONT_H_T11) (SEV 1) Check that this function returns the correct battery voltage.
Global Power_Control_Get_Charging_Current ()
(ID POWER_CONT_H_T13) (SEV 1) Check the value returned by this function is the current charging solar panel Amperage.
Global Power_Control_Get_Charging_Voltage ()
(ID POWER_CONT_H_T12) (SEV 1) Check that this function returns the correct solar panel charging voltage.
Global Power_Control_Get_Sleep_Interval ()
(ID POWER_CONT_H_T7) (SEV 1) Check what interval is returned at the designated voltages.
Global Power_Control_INA226_Check ()
(ID POWER_CONT_H_T10) (SEV 1) Check that this function correctly returns the state of the INA226 component.
Global Power_Control_Load_Configuration ()
(ID POWER_CONT_H_T0) (SEV 1) Make sure that the power configuration is loaded from EEPROM correctly.
Global Power_Control_Save_Configuration ()
(ID POWER_CONT_H_T1) (SEV 1) Make sure that the power configuration is wrote to the EEPROM correctly.
Global Power_Control_Setup_INA226 ()
(ID POWER_CONT_H_T9) (SEV 1) Check that the INA226 is configured ok.
Global System_Info_Get_Callsign (char *buff, uint8_t len)
(ID SYS_INF_T1) (SEV 1) Make sure that the callsign is retrieved correctly from EEPROM.
Global System_Info_Set_Callsign (char *newCallsign)
(ID SYS_INF_T0) (SEV 1) Make sure this function writes the callsign to EEPROM.