Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FreescaleIAP mbed-rtos mbed
Fork of workinQM_5thJan_azad 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*/
