// // Created by zemon on 22.03.23. // #include #include #include //#include "ArrayPrint.h" #include "EraGlonassUveos.h" void dummyGetNavData(void *env, EraGlonassUveosNavData *navData) { } void dummyGetTime(void *env, uint32_t *time) { } bool dummySendDataPdu(void *env, char *phone, uint8_t phoneSize, uint8_t *data, uint16_t dataSize) { return true; } void dummyEraGlonassForceDumpCall(void *env) { } bool wcomp = true; void printfLoggerGenericMethod( void *env, char *authorStatic, uint8_t authorLen, eLoggerLevel loglevel, char *msg, uint16_t msgLen, bool complete ) { if (wcomp) { printf("[%.*s]\t\t", authorLen, authorStatic); printf(" "); } printf("%.*s", msgLen, msg); if (complete) { printf("\n"); } wcomp = complete; } ////--------------------------------------- Примеры sms-pdu ------------------------------------------------------------ //пример полученый с ivs.aoglonass char hexPdu[] = "07919714180010F3040B919714111190F7000432302231033221350100000B0028000A00013D1D000A00010A0000000404331A00500A000000A9010000000100420D0237393431383130303032357D82"; //пример из лога с полинома, послано с rohde-schwartz // char hexPdu[] = "04804523F1040A808051563412000432404131303240270100000B001A000600015513000600400404331000500600000000000000000000022302302FAE"; // char hexPdu[] = "04804523F1040A8080515634120004324041318175402A0100000B001D000A00017516000A00400404331300500A0000000000000000000002230235353535852C"; ////-------------------------------------------------------------------------------------------------------------------- ////--------------------------------------- Примеры sms-pdu ------------------------------------------------------------ void test_pdu_and_egts_parser(tEraGlonassUveos *uveos) { LoggerInfoStatic(uveos->logger, "тест", "") LoggerInfoStatic(uveos->logger, "тест", "Тест парсера sms-pdu и егтс парсера") char hexPduData[140]; uint16_t hexPduDataSize = 0; uint8_t binaryData[255]; uint16_t binaryDataSize; AtGsmSms_BildPduData((char *) hexPdu, sizeof(hexPdu) - 1, hexPduData, &hexPduDataSize); binaryDataSize = (uint16_t) iAsciiStringParseHexBytes(binaryData, hexPduData, hexPduDataSize); EraGlonassUveos_ProcessEgtsPacket(uveos, binaryData, binaryDataSize); } void test_egts_parser_only(tEraGlonassUveos *uveos) { LoggerInfoStatic(uveos->logger, "тест", "") LoggerInfoStatic(uveos->logger, "тест", "Тест только егтс парсера по готовому егтс пакету") printf("TEST BEGIN\n"); //пример егтс пакета с коммандой (вырезан из sms-pdu) BIN_FROM_HEX(binData, binDataLen, "0100000B001A000600015513000600400404331000500600000000000000000000022302302FAE"); // ArrayPrint_Hex(binData, binDataLen); EraGlonassUveos_ProcessEgtsPacket(uveos, binData, binDataLen); } int main() { //инициализация всего необходимого для УВЭОС tEraGlonassMsdTable table; tUveosGostSettings settings; tEraGlonassUveos uveos; tNavDataProvider navDataProvider = { .getTime = dummyGetTime, .getNavData = dummyGetNavData }; tEraGlonassSmsProvider smsProvider = { .sendDataPdu = dummySendDataPdu }; tEraGlonassUveosDumperInterface dumper = { .forceDump = dummyEraGlonassForceDumpCall }; tLoggerInterface logger = { .logging =printfLoggerGenericMethod }; // EraGlonassUveos_Init( // &uveos, // &logger, // &table, // &settings, // &dumper, // &navDataProvider, // NULL, // &smsProvider, // NULL, // NULL, // NULL, // NULL, // NULL // ); test_pdu_and_egts_parser(&uveos); test_egts_parser_only(&uveos); }