EPS_soft_error_status EPS_update_state(volatile EPS_State *state, ADC_HandleTypeDef *hadc_eps, I2C_HandleTypeDef *h_i2c) { EPS_soft_error_status eps_status = EPS_SOFT_ERROR_STATE_UPDATE; /*get eps adc measurements*/ eps_status = EPS_update_state_adc_measurements(state, hadc_eps); /*get eps switch states*/ //rail state->su_p_switch = EPS_get_rail_switch_status(SU); state->obc_p_switch = EPS_get_rail_switch_status(OBC); state->adcs_p_switch = EPS_get_rail_switch_status(ADCS); state->comm_p_switch = EPS_get_rail_switch_status(COMM); state->i2c_tc74_p_switch= EPS_get_rail_switch_status(TEMP_SENSOR); state->deploy_left_switch = EPS_get_control_switch_status(DEPLOY_LEFT); state->deploy_right_switch = EPS_get_control_switch_status(DEPLOY_RIGHT); state->deploy_bottom_switch = EPS_get_control_switch_status(DEPLOY_BOTTOM); state->deploy_ant1_switch = EPS_get_control_switch_status(DEPLOY_ANT1); state->deploy_top_switch = EPS_get_control_switch_status(DEPLOY_TOP); state->heaters_switch = EPS_get_control_switch_status(BATTERY_HEATERS); eps_status = EPS_SOFT_ERROR_STATE_UPDATE_BATTERYPACK_TEMP; state->battery_temp = get_batterypack_temperature( h_i2c, TC74_ADDRESS_A, TC74_ADDRESS_B, state); eps_status = EPS_SOFT_ERROR_OK; return eps_status; }
SAT_returnState hk_report_parameters(HK_struct_id sid, tc_tm_pkt *pkt) { // uint16_t v5_current_avg; // uint16_t v3_3_current_avg; // int16_t battery_voltage; // uint16_t battery_current_plus; // uint16_t battery_current_minus; // int16_t battery_temp; // int32_t cpu_temperature; // EPS_battery_tempsense_health batterypack_health_status; pkt->data[0] = (HK_struct_id)sid; if(sid == HEALTH_REP) { pkt->data[1] = (uint8_t)(eps_board_state.battery_voltage - ADC_VALUE_3V_BAT_VOLTAGE) ; pkt->data[2] = (int8_t)((int8_t)eps_board_state.battery_current_plus - (int8_t)eps_board_state.battery_current_minus); pkt->data[3] = (uint8_t)(eps_board_state.v3_3_current_avg ); pkt->data[4] = (uint8_t)(eps_board_state.v5_current_avg); pkt->data[5] = (uint8_t)(eps_board_state.battery_temp); pkt->data[6] = (uint8_t)(eps_board_state.cpu_temperature); pkt->len = 7; } else if(sid == EX_HEALTH_REP) { uint16_t size = 1; cnv32_8( HAL_sys_GetTick(), &pkt->data[1]); size += 4; /*batterypack health status*/ pkt->data[size] = (uint8_t)(eps_board_state.batterypack_health_status); size += 1; /* heater status*/ EPS_switch_control_status heaters_status = EPS_get_control_switch_status(BATTERY_HEATERS); pkt->data[size] = (uint8_t)heaters_status; size += 1; /*power module top*/ cnv16_8( power_module_top.voltage, &pkt->data[size]); size += 2; cnv16_8( power_module_top.current, &pkt->data[size]); size += 2; pkt->data[size] = (uint8_t)power_module_top.pwm_duty_cycle; size += 1; /*power module bottom*/ cnv16_8( power_module_bottom.voltage, &pkt->data[size]); size += 2; cnv16_8( power_module_bottom.current, &pkt->data[size]); size += 2; pkt->data[size] = (uint8_t)power_module_bottom.pwm_duty_cycle; size += 1; /*power module left*/ cnv16_8( power_module_left.voltage, &pkt->data[size]); size += 2; cnv16_8( power_module_left.current, &pkt->data[size]); size += 2; pkt->data[size] = (uint8_t)power_module_left.pwm_duty_cycle; size += 1; /*power module right*/ cnv16_8( power_module_right.voltage, &pkt->data[size]); size += 2; cnv16_8( power_module_right.current, &pkt->data[size]); size += 2; pkt->data[size] = (uint8_t)power_module_right.pwm_duty_cycle; size += 1; /* deployment status*/ EPS_deployment_status deployment_status = EPS_check_deployment_status(); pkt->data[size] = (uint8_t)deployment_status; size += 1; /* battery voltage safety */ pkt->data[size] = (uint8_t)(eps_board_state.EPS_safety_battery_mode ); size += 1; /* battery voltage safety */ pkt->data[size] = (uint8_t)(eps_board_state.EPS_safety_temperature_mode ); size += 1; /*edo vale fash*/ pkt->len = size; } return SATR_OK; }