Exemple #1
0
/**
 * Funcion a llamar luego de un Reset del PIC y luego de 
 * @sa sta_onReset_memEEPROM para inicializar a los valore correctos las
 * variables de estado que necesitan ser modificadas.
 *
 * No todas son modificadas, hay muchas que se inicializan en otros
 * llamados anteriores o posteriores (@sa default_PIC_config,
 * @sa dep_init_suchai_hw, @sa dep_init_suchai_repos).
 */
void sta_onReset_BusStateRepo(void)
{
    int param, res;

    // Set to default
    //param = STA_PPC_OPMODE_NORMAL;
    //ppc_set_opMode(&param);

    // Increment reset counter
    param = ppc_get_resetCounter(NULL);
    param++;
    ppc_set_resetCounter(&param);
    

    //print important StatusVars
    printf("    [sta_onResetStatRepo] Important STA_StateVar variables:\r\n");

    res = ppc_get_resetCounter(NULL);
    printf("        * ppc_get_resetCounter: %d\r\n", res);
    #if (SCH_DATAREPOSITORY_VERBOSE>=1)
        if(res == 0){
            printf("            * First time on, resetCounter = %d\n", res);
        }
        else{
            printf("            * NOT the First time on, resetCounter = %d\n", res);
        }
    #endif

    param = 1;  //verbose
    ppc_get_lastResetSource(&param);

    res = ppc_get_hoursAlive(NULL);
    printf("        * ppc_get_hoursAlive: %d\r\n", res);

    res = ppc_get_hoursWithoutReset(NULL);
    printf("        * ppc_get_hoursWithoutReset: %d\r\n", res);

    res = ppc_get_wdt_state(NULL);
    printf("        * ppc_get_wdt_state: %d\r\n", res);

    param = 1;  //verbose
    res = ppc_get_osc(&param);

    //Antenna
    param = 1000;
    res = thk_get_AntSwitch_isOpen(&param);
    printf("        * thk_get_AntSwitch_isOpen: %d\r\n", res);
    #if (SCH_DATAREPOSITORY_VERBOSE>=1)
        printf("            * Antenna Deployment rely on this var AND others\r\n");
    #endif

    res = thk_get_dep_ant_deployed(NULL);
    printf("        * thk_get_dep_ant_deployed: %d\r\n", res);
    #if (SCH_DATAREPOSITORY_VERBOSE>=1)
        if(res == 0){
            printf("            * Antenna Deployment is pending\r\n");
        }
        else{
            printf("            * Antenna Deployment was successfully completed\r\n");
        }
    #endif

//    /* Debug purposes      */
//    int dep = thk_get_dep_ant_deployed(NULL);
//    if(dep == 0){
//        printf("[sta_onResetStatRepo] All STA_StateVar variables:\r\n");
//        //print all SatatusVars
//        srp_print_STA_stateVar(NULL);
//    }
}
Exemple #2
0
/**
 * Funcion para obtener una variable de estado
 * @param indxVar. Variable de estado que quiero modificar
 */
int sta_get_BusStateVar(STA_BusStateVar indxVar){
    portBASE_TYPE semStatus = xSemaphoreTake( statusRepositorySem, portMAX_DELAY );
    
    int value;
    int param;
    switch(indxVar){
        // Bus Hw status (connected trough the PC/104 to the OBC -PIC24-)
        case sta_RTC_isAlive:
            value = RTC_isAlive();
            break;
        case sta_TRX_isAlive:
            value = trx_isAlive(NULL);
            break;
        case sta_EPS_isAlive:
            value = eps_isAlive(NULL);
            break;
        case sta_MemEEPROM_isAlive:
            value = mem_EEPROM_isAlive();
            break;
        case sta_MemSD_isAlive:
            value = memSD_isAlive();
            break;
        case sta_AntSwitch_isOpen:
            param = 1000;
            value = thk_get_AntSwitch_isOpen(&param);
            break;
        //FPL => (C&DH subsystem)
        case sta_fpl_index:
            //printf("FPL => (C&DH subsystem, Fligth Plan)\r\n");
            value =  drp_fpl_get_index(NULL);
            break;
        //PPC => (C&DH subsystem)
        case sta_ppc_opMode:
            //printf("PPC => (C&DH subsystem)\r\n");
            value = ppc_get_opMode(NULL);
            break;
        case sta_ppc_lastResetSource:
            param = 0;  //verbosity level
            value = ppc_get_lastResetSource(&param);
            break;
        case sta_ppc_hoursAlive:
            value = ppc_get_hoursAlive(NULL);
            break;
        case sta_ppc_hoursWithoutReset:
            value = ppc_get_hoursWithoutReset(NULL);
            break;
        case sta_ppc_resetCounter:
            value = ppc_get_resetCounter(NULL);
            break;
        case sta_ppc_wdt:
            value = ppc_get_wdt_state(NULL);
            break;
        case sta_ppc_osc:
            param = 0;  //verbosity level
            value = ppc_get_osc(&param);
            break;
        case sta_ppc_MB_nOE_USB_nINT_stat:
            value = ppc_get_PPC_MB_nOE_USB_nINT(NULL);
            break;
        case sta_ppc_MB_nOE_MHX_stat:
            value = ppc_get_PPC_MB_nOE_MHX(NULL);
            break;
        case sta_ppc_MB_nON_MHX_stat:
            value = ppc_get_PPC_MB_nON_MHX(NULL);
            break;
        case sta_ppc_MB_nON_SD_stat:
            value = ppc_get_PPC_MB_nON_SD(NULL);
            break;
        //DEP => (C&DH subsystem)
        case sta_dep_ant_deployed:
            //printf("DEP => (C&DH subsystem)\r\n");
            value = thk_get_dep_ant_deployed(NULL);
            break;
        case sta_dep_ant_tries:
            value = thk_get_dep_ant_tries(NULL);
            break;
        case sta_dep_year:
            value = thk_get_dep_year(NULL);
            break;
        case sta_dep_month:
            value = thk_get_dep_month(NULL);
            break;
        case sta_dep_week_day:
            value = thk_get_dep_week_day(NULL);
            break;
        case sta_dep_day_number:
            value = thk_get_dep_day_number(NULL);
            break;
        case sta_dep_hours:
            value = thk_get_dep_hours(NULL);
            break;
        case sta_dep_minutes:
            value = thk_get_dep_minutes(NULL);
            break;
        case sta_dep_seconds:
            value = thk_get_dep_seconds(NULL);
            break;
        //RTC => (C&DH subsystem)
        case sta_rtc_year:
            //printf("RTC => (C&DH subsystem)\r\n");
            value = RTC_get_year();
            break;
        case sta_rtc_month:
            value = RTC_get_month();
            break;
        case sta_rtc_week_day:
            value = RTC_get_week_day();
            break;
        case sta_rtc_day_number:
            value = RTC_get_day_num();
            break;
        case sta_rtc_hours:
            value = RTC_get_hours();
            break;
        case sta_rtc_minutes:
            value = RTC_get_minutes();
            break;
        case sta_rtc_seconds:
            value = RTC_get_seconds();
            break;
        #if (SCH_EPS_ONBOARD==1)
            case sta_eps_batt_temp_0:
                param = EPS_ID_batt_temp_0;
                value = eps_read_vars(&param);
                break;
            case sta_eps_batt_temp_1:
                param = EPS_ID_batt_temp_1;
                value = eps_read_vars(&param);
                break;
            case sta_eps_battery_voltage:
                param = EPS_ID_battery_voltage;
                value = eps_read_vars(&param);
                break;
            case sta_eps_panel_current:
                param = EPS_ID_panel_current;
                value = eps_read_vars(&param);
                break;
            case sta_eps_panel_voltage_1:
                param = EPS_ID_panel_voltage_1;
                value = eps_read_vars(&param);
                break;
            case sta_eps_panel_voltage_2:
                param = EPS_ID_panel_voltage_2;
                value = eps_read_vars(&param);
                break;
            case sta_eps_panel_voltage_3:
                param = EPS_ID_panel_voltage_3;
                value = eps_read_vars(&param);
                break;
            case sta_eps_system_current:
                param = EPS_ID_system_current;
                value = eps_read_vars(&param);
                break;
        #endif
        #if (SCH_TRX_ONBOARD==1)
            //TRX => (Communication subsystem)
            case sta_trx_opmode:
                value = trx_get_operation_mode(NULL);
                break;
            case sta_trx_count_tm:
                value = trx_get_count_tm(NULL);
                break;
            case sta_trx_count_tc:
                value = trx_get_count_tc(NULL);
                break;
            case sta_trx_day_last_tc:
                value = trx_get_day_last_tc(NULL);
                break;
            case sta_trx_beacon_bat_lvl:
                value = trx_get_beacon_level(NULL);
                break;
            case sta_trx_beacon_period:
                value = trx_get_beacon_period(NULL);
                break;
            case sta_trx_rx_baud:
                value = trx_get_rx_baud(NULL);
                break;
            case sta_trx_tx_baud:
                value = trx_get_tx_baud(NULL);
                break;
        #endif
        default:
            printf("[sta_get_stateVar] Error: No function/command for STA_StateVar %d \r\n", indxVar);
            value = -(0x7FFF);
        break;
    }

    semStatus = xSemaphoreGive(statusRepositorySem);

    return value;
}
Exemple #3
0
/**
 * Deploys satellite antennas
 * @param param 1 realime, 0 debug time
 * @return 1 success, 0 fails
 */
int thk_deploy_antenna(void *param)
{
    #if (SCH_TASKDEPLOYMENT_VERBOSE>=1)
        printf("\n[thk_deploy_antenna] Deploying TRX Antenna... \r\n");
        //rtc_print(NULL);
    #endif

    //Realtime=1 DebugTime=0
    unsigned int delay_dep_time, delay_rest_dep_time, delay_recheck_dep_time;
    int mode= *( (int *)param );
    if(mode)
    {
//        delay_dep_time = (THK_DEPLOY_TIME) / portTICK_RATE_MS;
//        delay_rest_dep_time = (THK_REST_DEPLOY_TIME) / portTICK_RATE_MS;
//        delay_recheck_dep_time = (THK_RECHECK_TIME) / portTICK_RATE_MS;
        delay_dep_time = (THK_DEPLOY_TIME);
        delay_rest_dep_time = (THK_REST_DEPLOY_TIME);
        delay_recheck_dep_time = (THK_RECHECK_TIME);
    }
    else
    {
//        delay_dep_time = (600) / portTICK_RATE_MS;
//        delay_rest_dep_time = (400) / portTICK_RATE_MS;
//        delay_recheck_dep_time = (200) / portTICK_RATE_MS;
        delay_dep_time = (600);
        delay_rest_dep_time = (400);
        delay_recheck_dep_time = (200);
    }
    
    //intentos quemando el nylon
    int tries_indx = 0;

    #if(SCH_ANTENNA_ONBOARD == 1)
    {
        for(tries_indx=1; tries_indx<=THK_MAX_TRIES_ANT_DEPLOY; tries_indx++)
        {
            #if (SCH_TASKDEPLOYMENT_VERBOSE>=2)
                printf("    [Deploying] Attempt #%d\r\n", tries_indx);
            #endif

            PPC_ANT12_SWITCH=1;
            PPC_ANT1_SWITCH=1;
            PPC_ANT2_SWITCH=0;
            //PPC_ANT1_SWITCH=0;
            //PPC_ANT2_SWITCH=1;
//            vTaskDelay(delay_dep_time);   /* tiempo de intento ANT1 */
//            vTaskDelay(delay_dep_time);   /* tiempo de intento ANT1 */
            __delay_ms(delay_dep_time);
            ClrWdt();
            __delay_ms(delay_dep_time);

            PPC_ANT12_SWITCH=0;
            PPC_ANT1_SWITCH=0;
            PPC_ANT2_SWITCH=0;
//            vTaskDelay(delay_rest_dep_time);   /* tiempo de descanso */
            __delay_ms(delay_rest_dep_time);
            ClrWdt();

            PPC_ANT12_SWITCH=1;
            PPC_ANT1_SWITCH=0;
            PPC_ANT2_SWITCH=1;
            //PPC_ANT1_SWITCH=1;
            //PPC_ANT2_SWITCH=0;
//            vTaskDelay(delay_dep_time);   /* tiempo de intento ANT2 */
//            vTaskDelay(delay_dep_time);   /* tiempo de intento ANT2 */
            __delay_ms(delay_dep_time);
            ClrWdt();
            __delay_ms(delay_dep_time);

            PPC_ANT12_SWITCH=0;
            PPC_ANT1_SWITCH=0;
            PPC_ANT2_SWITCH=0;
//            vTaskDelay(delay_rest_dep_time);   /* tiempo de descanso */
            __delay_ms(delay_rest_dep_time);
            ClrWdt();

            if( thk_get_AntSwitch_isOpen(&delay_recheck_dep_time) == 1 )
            {
                thk_deployment_registration(&tries_indx);

                #if (SCH_TASKDEPLOYMENT_VERBOSE>=1)
                    printf("    ANTENNA DEPLOYED SUCCESSFULLY [%d TRIES]\r\n", tries_indx);
                    rtc_print(NULL);
                #endif
                return 1;
            }
        }
    }
    #endif

    //after the for() tries_indx == THK_MAX_TRIES_ANT_DEPLOY+1
    tries_indx = THK_MAX_TRIES_ANT_DEPLOY+1; //por si acaso
    thk_deployment_registration(&tries_indx);

    #if (SCH_TASKDEPLOYMENT_VERBOSE>=2)
        printf("    ANTENNA DEPLOY FAIL [%d TRIES]\r\n", THK_MAX_TRIES_ANT_DEPLOY);
        rtc_print(NULL);
    #endif

    return 0;
}