253 lines
7.0 KiB
C
253 lines
7.0 KiB
C
//
|
|
// Created by xemon on 8/23/22.
|
|
//
|
|
|
|
|
|
#include <stdio.h>
|
|
#include <stdbool.h>
|
|
#include <egtsWorker.h>
|
|
#include <AsciiStringParsingUtils.h>
|
|
#include <sys/socket.h>
|
|
#include <netinet/in.h>
|
|
#include <string.h>
|
|
#include <arpa/inet.h>
|
|
#include <unistd.h>
|
|
#include "ArrayPrint.h"
|
|
|
|
void SystemDelayMs() {
|
|
|
|
|
|
}
|
|
|
|
void parseTest(uint8_t *data, size_t data_size) {
|
|
|
|
EgtsWorkerEnvironment egtsWorkerEnv;
|
|
|
|
egtsWorkerEnv.workingBufferLength = data_size;
|
|
egtsWorkerEnv.workingBuffer = data;
|
|
|
|
if (EgtsIsTransportComplete(&egtsWorkerEnv)) {
|
|
EgtsParseHeader(&egtsWorkerEnv);
|
|
EgtsParseFrameData(&egtsWorkerEnv);
|
|
EgtsParseSrvRecord(&egtsWorkerEnv);
|
|
if (egtsWorkerEnv.header.type == EGTS_PT_RESPONSE) {
|
|
printf(" - EGTS_PT_RESPONSE\n");
|
|
} else if (egtsWorkerEnv.header.type == EGTS_PT_APPDATA) {
|
|
printf(" - EGTS_PT_APPDATA\n");
|
|
} else {
|
|
printf(" - unknown %i\n", egtsWorkerEnv.header.type);
|
|
}
|
|
|
|
if (egtsWorkerEnv.srCommand) {
|
|
///sms
|
|
switch (egtsWorkerEnv.srCommand->cmd) {
|
|
case EGTS_ECALL_MSD_REQ:
|
|
printf("Запрос МНД");
|
|
return;
|
|
|
|
case EGTS_ECALL_REQ:
|
|
printf("Запрос эксренного вызова");
|
|
return;
|
|
|
|
case EGTS_ECALL_TEST_NUMBER:
|
|
printf("Запрос на установку номера для тестового вызова");
|
|
return;
|
|
|
|
case EGTS_ECALL_SMS_FALLBACK_NUMBER:
|
|
printf("Запрос на установку номера для SMS");
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
uint8_t sendTcp(char *ip, uint16_t port, uint8_t *data, size_t size) {
|
|
int sockfd = 0, n = 0;
|
|
char recvBuff[1024];
|
|
struct sockaddr_in serv_addr;
|
|
|
|
|
|
printf("\n Usage: %s <ip of server> \n", ip);
|
|
|
|
|
|
memset(recvBuff, '0', sizeof(recvBuff));
|
|
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
|
printf("\n Error : Could not create socket \n");
|
|
return 1;
|
|
}
|
|
|
|
memset(&serv_addr, '0', sizeof(serv_addr));
|
|
|
|
serv_addr.sin_family = AF_INET;
|
|
serv_addr.sin_port = htons(port);
|
|
|
|
if (inet_pton(AF_INET, ip, &serv_addr.sin_addr) <= 0) {
|
|
printf("\n inet_pton error occured\n");
|
|
return 1;
|
|
}
|
|
|
|
if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) {
|
|
printf("\n Error : Connect Failed \n");
|
|
return 1;
|
|
}
|
|
|
|
// while ( (n = read(sockfd, recvBuff, sizeof(recvBuff)-1)) > 0)
|
|
// {
|
|
// recvBuff[n] = 0;
|
|
// if(fputs(recvBuff, stdout) == EOF)
|
|
// {
|
|
// printf("\n Error : Fputs error\n");
|
|
// }
|
|
// }
|
|
|
|
|
|
write(sockfd, data, size);
|
|
|
|
if (n < 0) {
|
|
printf("\n Read error \n");
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
void testResponse() {
|
|
uint8_t data[1024];
|
|
|
|
size_t len = vEgtsPackEgtsResponse(
|
|
111,
|
|
data,
|
|
0b000,
|
|
333,
|
|
444,
|
|
0
|
|
);
|
|
|
|
|
|
|
|
///=============================
|
|
// uint16_t Address = 1;
|
|
// uint8_t Size = 0b0001;
|
|
// uint8_t Action = 0b0010;
|
|
// uint16_t CommandCode = EGTS_TEST_MODE;
|
|
// uint32_t Data = 0;
|
|
// size_t len = vEgtsPackSrCmdConfirmation(
|
|
// data,
|
|
// 2,
|
|
// CT_COMCONF,
|
|
// CC_OK,
|
|
// 44,
|
|
// 0,
|
|
// 0,
|
|
// 0,
|
|
// Address,
|
|
// Size,
|
|
// Action,
|
|
// CommandCode,
|
|
// Data
|
|
// );
|
|
///=============================
|
|
|
|
// uint8_t imei[] = "356133310612543";
|
|
// size_t len = vEgtsPackTermIdentityTransport(
|
|
// 1,
|
|
// data,
|
|
// imei,
|
|
// sizeof(imei) - 1,
|
|
// 1233,
|
|
// 0
|
|
// );
|
|
|
|
// size_t len = vEgtsPackMsdTransport(
|
|
// 555,
|
|
// data,
|
|
// imei,
|
|
// sizeof(imei) - 1,
|
|
// 0
|
|
// );
|
|
|
|
ArrayPrint_Hex(data, len);
|
|
|
|
sendTcp("127.0.0.1", 5020, data, len);
|
|
|
|
}
|
|
|
|
#define BIN(DATA, LEN, HEX_STRING) \
|
|
uint8_t DATA[(sizeof(HEX_STRING)-1)/2]; \
|
|
size_t LEN = iAsciiStringParseHexBytes(DATA, HEX_STRING, sizeof(HEX_STRING) - 1);
|
|
|
|
void send_test() {
|
|
|
|
// char hexData[] = "0100000B001E00080001BD13000800010800000004043310005F08000000A90100000001000012010044C8";
|
|
// char hexData[] = "0100010B0018000000012E0D0001000400C5C2B40404330A000101000000A9010000002DB0";
|
|
// char hexData[] = "0100010B0018000000012E0D0001000400C5C2B40404330A000105000000A901000000C22C";
|
|
|
|
|
|
|
|
// char hexData[] = "0100000B001E000300012513000300010300000004043310005003000000A9010000000100001201003DEF";
|
|
|
|
/// set sms number
|
|
|
|
// BIN_FROM_HEX(binData,binDataLen,"0100000B0028000A00013D1D000A00010A0000000404331A00500A000000A9010000000100420D0237393410102010101010101010");
|
|
// BIN_FROM_HEX(binData, binDataLen, "0100020B001D004800019916004900000404331300507347061B00000000000C00000000EBAEBAEB1C01");
|
|
// BIN_FROM_HEX(binData, binDataLen, "0100020B001D00020001B516000300000404331300507347061B00000000000C00000000EBAEBAEBC589");
|
|
|
|
// BIN_FROM_HEX(binData, binDataLen, "0100020B001C0007000109150008000004043312005080E5061B00000000000A000000004C44932560");
|
|
// BIN_FROM_HEX(binData, binDataLen, "0100010B001400070000DD07000006000100041F16B1830404000300080000020A");
|
|
|
|
// BIN_FROM_HEX(binData, binDataLen, "0100020B001C00030001201500040000040433120050E2F3061B00000000000A00000000B5EB2DAB72");
|
|
// BIN_FROM_HEX(binData, binDataLen, "0100010B00110003000109060001000426732E19040400030004000065C5");
|
|
|
|
// BIN_FROM_HEX(binData, binDataLen, "0100020B001D00020001B51600030000040433130050C276111B00000000000A0000000074657374DAA0");
|
|
// BIN_FROM_HEX(binData, binDataLen, "0100010B001D000200016E120001000400C5C2B40404330F0010C276111B00000000000A000000009198");
|
|
//
|
|
// 01 00 03 0B 00 1000 3800 00 3C 3800 00 06003900000202000300010000DD22
|
|
|
|
|
|
BIN_FROM_HEX(binData, binDataLen, "0100000B0019000200013812000200800404330F0010020000009F010000000100120100B347");
|
|
|
|
parseTest(binData, binDataLen);
|
|
sendTcp("127.0.0.1", 5020, binData, binDataLen);
|
|
|
|
|
|
// testResponse();
|
|
|
|
printf("\n");
|
|
}
|
|
|
|
|
|
void parse_test() {
|
|
//запрос на скорость
|
|
// BIN_FROM_HEX(binData, binDataLen, "0100020B001D004800019916004900000404331300507347061B00000000000C00000000EBAEBAEB1C01");
|
|
BIN_FROM_HEX(binData, binDataLen,
|
|
"0100020B001D00020001B516000300000404331300507347061B00000000000C00000000EBAEBAEBC589");
|
|
parseTest(binData, binDataLen);
|
|
}
|
|
|
|
void test_sensors() {
|
|
uint8_t data[1024];
|
|
|
|
tEgtsSensorsDataArgs sensors = {
|
|
.analogInPresent = SENSOR_1 | SENSOR_2,
|
|
.digitalInPresent = SENSOR_1 | SENSOR_5,
|
|
.digitalOutPresent = SENSOR_NO,
|
|
.digitalIn = {SENSOR_1 | SENSOR_5, SENSOR_8 | SENSOR_7},
|
|
.analogIn = {200,500}
|
|
};
|
|
|
|
size_t len = vEgtsPackSensorsTransport(
|
|
111,
|
|
data,
|
|
0b000,
|
|
&sensors
|
|
);
|
|
|
|
sendTcp("127.0.0.1", 5020, data, len);
|
|
|
|
}
|
|
|
|
int main() {
|
|
// send_test();
|
|
// parse_test();
|
|
test_sensors();
|
|
} |