Skip to content

Instantly share code, notes, and snippets.

@nkenna
Last active June 3, 2019 06:54
Show Gist options
  • Save nkenna/cbd7343ed521e2cf9bb06e606baa978c to your computer and use it in GitHub Desktop.
Save nkenna/cbd7343ed521e2cf9bb06e606baa978c to your computer and use it in GitHub Desktop.
tried packing 0800 message but the date and time fields are giving issues.
void test0800() {
SDK_8583_ST8583 st_send_packet;
s32 len;
u8 temp[256];
//transmission date and time
u8 tmp[64];
u8 datetime[15];
u8 t_datetime[15] = {0};
//transmission time
u8 temptime[64];
u8 time[8];
u8 t_time[10] = {0};
//transmission date
u8 tempdate[64];
u8 date[5];
u8 t_date[7] = {0};
memset(temp, 0, sizeof(tmp));
memset(datetime, 0, sizeof(datetime));
memset(temptime, 0, sizeof(temptime));
memset(time, 0, sizeof(time));
memset(tempdate, 0, sizeof(tempdate));
memset(date, 0, sizeof(date));
memset(&st_send_packet , 0x00, sizeof(SDK_8583_ST8583));
//sdkAscToBcd(st_send_packet.ucBagData, "6000010002", 10); //e.g. 6000010002
st_send_packet.nBagLen += 5; //5 bytes
st_send_packet.stFiled[SDK_8583_FIELD_MSG].nFieldHead = st_send_packet.nBagLen; //S et the start position of the first field, i.e message t ype.
len = IsoSetField(&st_send_packet , SDK_8583_FIELD_MSG, "0800", 4); // 0800 is the string
if (len < 0){
return len;
}
len = IsoSetField(&st_send_packet , SDK_8583_FIELD_MAP, "0", 0); //The length should be 0 here.
if (len < 0){
return len;
}
//processing code
len = IsoSetField(&st_send_packet, 3, "9A0000", 6);
if (len < 0){
return len;
}
if (SDK_OK == sdkGetRtc(tmp)){ // retrieve system date and time
sdkBcdToAsc(datetime, tmp, 6); //convert from BCD to ASC
//join all date and time into one string
strcat(t_datetime, datetime[0]);
strcat(t_datetime, datetime[1]);
strcat(t_datetime, datetime[2]);
strcat(t_datetime, datetime[3]);
strcat(t_datetime, datetime[4]);
strcat(t_datetime, datetime[5]);
//join time: hour, minute and seconds into one string
strcat(t_time, datetime[3]);
strcat(t_time, datetime[4]);
strcat(t_time, datetime[5]);
//join date: month and day into one string
strcat(t_date, datetime[1]);
strcat(t_date, datetime[2]);
}
// transmission date and time
len = IsoSetField(&st_send_packet, 7, t_datetime, 12);
if (len < 0){
return len;
}
//system trace audit
len = IsoSetField(&st_send_packet, 11, gstAppSysCfg.stTransParam.asTraceNO, 6);
if (len < 0){
return len;
}
//transmission time
len = IsoSetField(&st_send_packet, 12, t_time, 6);
if (len < 0){
return len;
}
//transmission date
len = IsoSetField(&st_send_packet, 13, t_date, 4);
if (len < 0){
return len;
}
len = IsoSetField(&st_send_packet, 41, "########", 8);
if (len < 0){
return len;
}
//check if fields exists
bool flag;
//judge whether field 02 exists in the request message
flag = sdk8583IsDomainExist(&st_send_packet, 13);
if(flag){
sdkDispClearScreen();
sdkDispFillRowRam(SDK_DISP_LINE1, 0, "yes", SDK_DISP_DEFAULT);
sdkDispBrushScreen();
sdkmSleep(500);
}else{
sdkDispClearScreen();
sdkDispFillRowRam(SDK_DISP_LINE1, 0, "no", SDK_DISP_DEFAULT);
sdkDispBrushScreen();
sdkmSleep(500);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment