To be debugged
Dependencies: FreescaleIAP mbed-rtos mbed
Fork of TFR_BAE_vr1_1_Debug153 by
TCTM.cpp
- Committer:
- sakthipriya
- Date:
- 2015-12-30
- Revision:
- 4:39a4ae8c7ecd
- Parent:
- 3:07e15677a75c
- Child:
- 5:bb592f3185cc
File content as of revision 4:39a4ae8c7ecd:
#include "mbed.h" #include "TCTM.h" #include "crc.h" #include "EPS.h" #include "FreescaleIAP.h" extern BAE_HK_actual actual_data; extern BAE_HK_min_max bae_HK_minmax; extern uint32_t BAE_STATUS; uint8_t* FCTN_BAE_TM_TC (uint8_t* tc) { uint8_t service_type=(tc[2]&0xF0); uint8_t* tm; uint16_t crc16; switch(service_type) { case 0x60: { printf("Memory Management Service\r\n"); uint8_t service_subtype=(tc[2]&0x0F); switch(service_subtype) { case 0x01: { printf("Read from Flash\r\n"); } case 0x02: { printf("Read from RAM\r\n"); switch(tc[3]) { case 0x00: { printf("Read HK\r\n"); tm[0] = 0x60; tm[1] = tc[0]; tm[2] = ACK_CODE; for (int i=4; i<132;i++) { } crc16 = CRC::crc16_gen(tm,132); tm[132] = (uint8_t)((crc16&0xFF00)>>8); tm[133] = (uint8_t)(crc16&0x00FF); } case 0x01: { printf("Read min max data"); } case 0x02: { printf("Read status"); } } } case 0x05: { printf("Write on Flash\r\n"); } default: { printf("Invalid TC"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } } } case 0x80: { printf("Function Management Service\r\n"); uint8_t service_subtype=(tc[2]&0x0F); switch(service_subtype) { case 0x01: { printf("FMS Activated\r\n"); uint8_t pid=tc[3]; switch(pid) { case 0x01: { printf("Run P_EPS_INIT\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x02: { printf("Run P_EPS_MAIN\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x03: { printf("Run P_ACS_INIT\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x04: { printf("Run P_ACS_ACQ_DATA\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x05: { printf("Run P_ACS_MAIN\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x06: { printf("Run P_BCN_INIT\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x07: { printf("Run P_BCN_TX_MAIN\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x11: { printf("SW_ON_ACS_ATS1_SW_ENABLE\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x12: { printf("SW_ON_ACS_ATS2_SW_ENABLE\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x13: { printf("SW_ON_ACS_TR_XY_ENABLE\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x14: { printf("SW_ON_ACS_TR_Z_ENABLE\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x15: { printf("SW_ON_BCN_TX_SW_ENABLE\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x21: { printf("SW_OFF_ACS_ATS1_SW_ENABLE\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x22: { printf("SW_OFF_ACS_ATS2_SW_ENABLE\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x23: { printf("SW_OFF_ACS_TR_XY_ENABLE\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x24: { printf("SW_OFF_ACS_TR_Z_ENABLE\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x25: { printf("SW_OFF_BCN_TX_SW_ENABLE\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x31: { printf("ACS_ATS_SW_RESET\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x32: { printf("BCN_SW_RESET\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x33: { printf("BAE_RESET\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0x34: { printf("CDMS_SW_RESET\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } case 0xE0: { printf("CMSN_ACS_ALGO\r\n"); //FMS_TM tm[0]=0xF0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<132;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,132); tm[132] = (uint8_t)((crc16&0xFF00)>>8); tm[133] = (uint8_t)(crc16&0x00FF); return tm; } case 0xE1: { printf("CMSN_ACS_HW\r\n"); //FMS_TM tm[0]=0xF0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<132;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,132); tm[132] = (uint8_t)((crc16&0xFF00)>>8); tm[133] = (uint8_t)(crc16&0x00FF); return tm; } case 0xC1: { printf("Reset HK_Counter\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } default: { printf("Invalid TC\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } } default: { printf("Invalid TC\r\n"); //ACK_L234_TM tm[0]=0xB0; tm[1]=tc[0]; tm[2]=ACK_CODE; for(uint8_t i=3;i<11;i++) { tm[i]=0x00; } crc16 = CRC::crc16_gen(tm,11); tm[11] = (uint8_t)((crc16&0xFF00)>>8); tm[12] = (uint8_t)(crc16&0x00FF); for(uint8_t i=13;i<134;i++) { tm[i]=0x00; } return tm; } } } } } } int strt_add = flash_size() - (2*SECTOR_SIZE); uint32_t flasharray[8]; //256+(3*1024) char *nativeflash = (char*)strt_add; /*Writing to the Flash*/ void FCTN_CDMS_WR_FLASH(uint16_t j,uint32_t fdata) //j-position to write address ; fdata - flash data to be written { for(int i=0;i<8;i++) { flasharray[i]=nativeflash[i]; } flasharray[j]=fdata; erase_sector(strt_add); program_flash(strt_add, (char*)&flasharray,4*8); } /*End*/ /*Reading from Flash*/ uint32_t FCTN_CDMS_RD_FLASH(uint16_t j) { for(int i=0;i<8;i++) { flasharray[i]=nativeflash[i]; } return flasharray[j]; } /*End*/