// // Created by cfif on 04.10.2022. // #ifndef TRACERT_H #define TRACERT_H #include #include #include #include "ModemMain.h" #include "External.h" #include "TaskAdc.h" typedef struct { uint8_t filename[9]; uint8_t static_null; uint8_t version; uint8_t len; uint8_t nAt[3]; uint8_t reserve; } tStructTracertHeader; // Точка tracert датчики #pragma scalar_storage_order big-endian typedef struct __attribute__ ((packed)) { // Точка tracert время // Слово времени uint32_t year: 6; // Год uint32_t mouth: 4; // Месяц uint32_t day: 5; // День uint32_t hour: 5; // Часы uint32_t min: 6; // Минуты uint32_t sec: 6; // Секунды // Точка tracert координаты uint32_t lat_data_static: 2; // 01 - Резерв uint32_t lat_latLonFlag: 1; // Полушарие N - 0 S - 1 uint32_t lat_direction: 1; // 0 - Признак широты uint32_t lat_absFullDeg: 8; // Градусы uint32_t lat_absFullMin: 6; // Минуты uint32_t lat_absFrOfMin: 14; // Доли минут после точки // Точка tracert координаты uint32_t lon_data_static: 2; // 01 - Резерв uint32_t lon_latLonFlag: 1; // 0 - Признак широты uint32_t lon_direction: 1; // Полушарие N - 0 S - 1 uint32_t lon_absFullDeg: 8; // Градусы uint32_t lon_absFullMin: 6; // Минуты uint32_t lon_absFrOfMin: 14; // Доли минут после точки // Слово датчиков uint32_t id_static2: 4; // 1000 - Резерв uint32_t EC: 1; // Признак слова курса uint32_t reserver2: 2; uint32_t D3: 1; // uint32_t D2: 1; // uint32_t D1: 1; // Датчик вскрытия uint32_t AL: 1; // Тревога uint32_t IG: 1; // Зажигание uint32_t sensor_B: 10; // uint32_t sensor_A: 10; // // Точка tracert курс скорость температура uint32_t id_static1: 4; // 1001 uint32_t reserved: 1; uint32_t temperature: 8; uint32_t curse: 9; // uint32_t speed: 10; // // Доп. Данные uint8_t addition[12]; } tStructTracertPoint; #pragma scalar_storage_order little-endian // Точка tracert координаты #pragma scalar_storage_order big-endian typedef struct __attribute__ ((packed)) { uint32_t data_static: 2; // 01 - Резерв uint32_t latLonFlag: 1; // 0 - Признак широты uint32_t direction: 1; // Полушарие N - 0 S - 1 uint32_t absFullDeg: 8; // Градусы uint32_t absFullMin: 6; // Минуты uint32_t absFrOfMin: 14; // Доли минут после точки } tStructTracertCoord; #pragma scalar_storage_order little-endian // Точка tracert время #pragma scalar_storage_order big-endian typedef struct __attribute__ ((packed)) { // Слово времени uint32_t year: 6; // Год uint32_t mouth: 4; // Месяц uint32_t day: 5; // День uint32_t hour: 5; // Часы uint32_t min: 6; // Минуты uint32_t sec: 6; // Секунды } tStructTracertDateTime; #pragma scalar_storage_order little-endian // Точка tracert курс скорость температура #pragma scalar_storage_order big-endian typedef struct __attribute__ ((packed)) { uint32_t id_static: 4; // 1001 uint32_t reserved: 1; uint32_t temperature: 8; uint32_t curse: 9; // uint32_t speed: 10; // } tStructTracertSpeedCursePoint; #pragma scalar_storage_order little-endian // Слово датчиков #pragma scalar_storage_order big-endian typedef struct __attribute__ ((packed)) { uint32_t id_static: 4; // 1000 - Резерв uint32_t EC: 1; // Признак слова курса uint32_t reserver2: 2; uint32_t D3: 1; // uint32_t D2: 1; // uint32_t D1: 1; // Датчик вскрытия uint32_t AL: 1; // Тревога uint32_t IG: 1; // Зажигание uint32_t sensor_B: 10; // uint32_t sensor_A: 10; // } tStructTracertSensorAB; #pragma scalar_storage_order little-endian /* typedef struct { tSerialPortIO *io; tDeviceStorageIni *store; struct { uint8_t modemRx[512]; uint8_t modemTx[512]; } mem; tAtCmd tracertAt; osMutexId_t sensorAccess; uint8_t sensorA[2]; uint8_t sensorB[2]; uint8_t sensorExt1[4]; uint8_t sensorExt2[4]; uint8_t sensorExt3[4]; uint8_t sensorExt4[4]; struct { osThreadId_t id; uint32_t stack[2048]; StaticTask_t controlBlock; osThreadAttr_t attr; } thread; } tTracertSensor; */ typedef struct { tDeviceStorageIni *store; tGnss *gnss; struct { osThreadId_t id; uint32_t stack[2048]; StaticTask_t controlBlock; osThreadAttr_t attr; } thread; uint8_t bufTracert[1300]; uint8_t stepPoint; uint32_t posInBlock; tExternal *external; tFs *fs; tRtcIO *rtcIO; osMutexId_t accessTracert; tModemMain *modemMain; tTaskAdc *taskAdc; bool isSpeedCurse; bool isDataAddition; bool isModemCreateAccess; bool isModemDelAccess; tLoggerInterface *logger; } tTracertMain; void TracertMain_Init( tTracertMain *env, tGnss *gnss, tDeviceStorageIni *store, tExternal *external, tFs *fs, tTaskAdc *taskAdc, tRtcIO *rtcIo, tModemMain *modemMain, osMutexId_t accessTracert ); //void TracertSensor_Init( // tTracertSensor *env, // tSerialPortIO *io, // tDeviceStorageIni *store //); void TracertMain_StartThread(tTracertMain *env); //void TracertSensor_StartThread(tTracertSensor *env); #endif //TRACERT_H