int main() { test_app(); return 0; }
SAT_returnState route_pkt (tc_tm_pkt *pkt) { SAT_returnState res; TC_TM_app_id id; if ( !C_ASSERT(pkt != NULL && pkt->data != NULL)) { free_pkt(pkt); return SATR_ERROR; } if (!C_ASSERT(pkt->type == TC || pkt->type == TM)) { free_pkt(pkt); return SATR_ERROR; } if (!C_ASSERT(pkt->app_id < LAST_APP_ID && pkt->dest_id < LAST_APP_ID)) { free_pkt(pkt); return SATR_ERROR; } if (pkt->type == TC) { id = pkt->app_id; } else if (pkt->type == TM) { id = pkt->dest_id; } else { return SATR_ERROR; } if (id == SYSTEM_APP_ID && pkt->ser_type == TC_HOUSEKEEPING_SERVICE && pkt->ser_subtype == TM_HK_PARAMETERS_REPORT && pkt->data[0] == WOD_REP) { /* * A new WOD arrived from the OBC. Store it and extract the information. * The transmission of each WOD is handled by the COMMS dispatcher function */ SYSVIEW_PRINT("WOD from OBC"); store_wod_obc(pkt->data + 1, pkt->len - 1); } else if (id == SYSTEM_APP_ID && pkt->ser_type == TC_HOUSEKEEPING_SERVICE && pkt->ser_subtype == TM_HK_PARAMETERS_REPORT && pkt->data[0] == EXT_WOD_REP) { /* * A new exWOD arrived from the OBC. Store it and extract the information. * The transmission of each exWOD is handled by the COMMS dispatcher function */ SYSVIEW_PRINT("exWOD from OBC"); store_ex_wod_obc(pkt->data, pkt->len); } else if (id == SYSTEM_APP_ID && pkt->ser_type == TC_HOUSEKEEPING_SERVICE) { res = hk_app (pkt); } else if (id == SYSTEM_APP_ID && pkt->ser_type == TC_FUNCTION_MANAGEMENT_SERVICE) { res = function_management_app (pkt); } else if (id == SYSTEM_APP_ID && pkt->ser_type == TC_LARGE_DATA_SERVICE) { res = large_data_app (pkt); if (res == SATR_OK) { free_pkt (pkt); return SATR_OK; } } else if (id == SYSTEM_APP_ID && pkt->ser_type == TC_TEST_SERVICE) { //C_ASSERT(pkt->ser_subtype == 1 || pkt->ser_subtype == 2 || pkt->ser_subtype == 9 || pkt->ser_subtype == 11 || pkt->ser_subtype == 12 || pkt->ser_subtype == 13) { free_pkt(pkt); return SATR_ERROR; } res = test_app (pkt); } else if (id == EPS_APP_ID) { queuePush (pkt, OBC_APP_ID); } else if (id == ADCS_APP_ID) { queuePush (pkt, OBC_APP_ID); } else if (id == OBC_APP_ID) { queuePush (pkt, OBC_APP_ID); } else if (id == IAC_APP_ID) { queuePush (pkt, OBC_APP_ID); } else if (id == GND_APP_ID) { if (pkt->len > MAX_PKT_DATA) { large_data_downlinkTx_api (pkt); } else { tx_ecss (pkt); } } else if (id == DBG_APP_ID) { queuePush (pkt, OBC_APP_ID); } else { free_pkt(pkt); } return SATR_OK; }