示例#1
0
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;

}
示例#2
0
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;
}