Legacy_EgtsEncoderDecoder/Tst/test_module.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();
}