GONEC_ARTERY_Tracert/Inc/Tracert.h

215 lines
5.8 KiB
C

//
// Created by cfif on 04.10.2022.
//
#ifndef TRACERT_H
#define TRACERT_H
#include <SerialPortIO.h>
#include <DeviceStorageIni.h>
#include <Gnss.h>
#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