comparison Small_CPU/Inc/GNSS.h @ 981:c6c781a2e85b default

Merge into default
author heinrichsweikamp
date Tue, 11 Feb 2025 18:12:00 +0100
parents 9b29995d6619
children c386ae6635e4
comparison
equal deleted inserted replaced
871:f7318457df4d 981:c6c781a2e85b
1 /*
2 * GNSS.h
3 *
4 * Created on: 03.10.2020
5 * Author: SimpleMethod
6 *
7 *Copyright 2020 SimpleMethod
8 *
9 *Permission is hereby granted, free of charge, to any person obtaining a copy of
10 *this software and associated documentation files (the "Software"), to deal in
11 *the Software without restriction, including without limitation the rights to
12 *use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
13 *of the Software, and to permit persons to whom the Software is furnished to do
14 *so, subject to the following conditions:
15 *
16 *The above copyright notice and this permission notice shall be included in all
17 *copies or substantial portions of the Software.
18 *
19 *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 *IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 *FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 *AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 *LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24 *OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25 *THE SOFTWARE.
26 ******************************************************************************
27 */
28
29 #ifndef INC_GNSS_H_
30 #define INC_GNSS_H_
31
32 #include "stm32f4xx_hal.h"
33
34 union u_Short
35 {
36 uint8_t bytes[2];
37 unsigned short uShort;
38 };
39
40 union i_Short
41 {
42 uint8_t bytes[2];
43 signed short iShort;
44 };
45
46 union u_Long
47 {
48 uint8_t bytes[4];
49 unsigned long uLong;
50 };
51
52 union i_Long
53 {
54 uint8_t bytes[4];
55 signed long iLong;
56 };
57
58 typedef struct
59 {
60 UART_HandleTypeDef *huart;
61
62 uint8_t uniqueID[4];
63 uint8_t uartWorkingBuffer[255];
64
65 unsigned short year;
66 uint8_t yearBytes[2];
67 uint8_t month;
68 uint8_t day;
69 uint8_t hour;
70 uint8_t min;
71 uint8_t sec;
72 uint8_t fixType;
73
74 signed long lon;
75 uint8_t lonBytes[4];
76 signed long lat;
77 uint8_t latBytes[4];
78 float fLon;
79 float fLat;
80
81 signed long height;
82 signed long hMSL;
83 uint8_t hMSLBytes[4];
84 unsigned long hAcc;
85 unsigned long vAcc;
86
87 signed long gSpeed;
88 uint8_t gSpeedBytes[4];
89 signed long headMot;
90
91 uint8_t numSat;
92 uint8_t statSat[4];
93
94 uint8_t alive;
95
96 float last_fLon; /* last known position storage and time stamp */
97 float last_fLat;
98 float last_hour;
99
100 }GNSS_StateHandle;
101
102 GNSS_StateHandle GNSS_Handle;
103
104
105 enum GNSSMode{Portable=0, Stationary=1, Pedestrian=2, Automotiv=3, Airbone1G=5, Airbone2G=6,Airbone4G=7,Wirst=8,Bike=9};
106
107 static const uint8_t configUBX[]={0xB5,0x62,0x06,0x00,0x14,0x00,0x01,0x00,0x00,0x00,0xD0,0x08,0x00,0x00,0x80,0x25,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00};
108
109 static const uint8_t setNMEA410[]={0xB5,0x62,0x06,0x17,0x14,0x00,0x00,0x41,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
110
111 //Activation of navigation system: Galileo, Glonass, GPS, SBAS, IMES
112 static const uint8_t setGNSS[]={0xB5,0x62,0x06,0x3E,0x24,0x00,0x00,0x00,0x20,0x04,0x00,0x08,0x10,0x00,0x01,0x00,0x01,0x01,0x01,0x01,0x03,0x00,0x01,0x00,0x01,0x01,0x02,0x04,0x08,0x00,0x01,0x00,0x01,0x01,0x06,0x08,0x0E,0x00,0x01,0x00,0x01,0x01};
113
114 static const uint8_t getDeviceID[]={0xB5,0x62,0x27,0x03,0x00,0x00};
115
116 static const uint8_t getNavigatorData[]={0xB5,0x62,0x01,0x21,0x00,0x00};
117
118 static const uint8_t getPOSLLHData[]={0xB5,0x62,0x01,0x02,0x00,0x00};
119
120 static const uint8_t getPVTData[]={0xB5,0x62,0x01,0x07,0x00,0x00};
121
122 static const uint8_t getNavSat[]={0xB5,0x62,0x01,0x35,0x00,0x00};
123
124 static const uint8_t setPowerLow[]={0xB5,0x62,0x06,0x86,0x08,0x00,0x00,0x02,0x10,0x0E,0x14,0x00,0x00,0x00};
125
126 static const uint8_t setPowerNormal[]={0xB5,0x62,0x06,0x86,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
127
128 static const uint8_t setPortableMode[]={0xB5,0x62,0x06,0x24,0x24,0x00,0xFF,0xFF,0x00,0x03,0x00,0x00,0x00,0x00,0x10,0x27,0x00,0x00,0x05,0x00,0xFA,0x00,0xFA,0x00,0x64,0x00,0x5E,0x01,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
129
130 static const uint8_t setPedestrianMode[]={0xB5,0x62,0x06,0x24,0x24,0x00,0xFF,0xFF,0x03,0x03,0x00,0x00,0x00,0x00,0x10,0x27,0x00,0x00,0x05,0x00,0xFA,0x00,0xFA,0x00,0x64,0x00,0x5E,0x01,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
131
132 static const uint8_t setConfig[]={0xB5,0x62,0x06,0x09,0x0D,0x00, 0x00,0x00,0x00,0x00, 0x18,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x01};
133
134 static const uint8_t setPortableType[]={};
135 void GNSS_Init(GNSS_StateHandle *GNSS, UART_HandleTypeDef *huart);
136 void GNSS_LoadConfig(GNSS_StateHandle *GNSS);
137 uint8_t GNSS_ParseBuffer(GNSS_StateHandle *GNSS);
138
139 void GNSS_GetUniqID(GNSS_StateHandle *GNSS);
140 void GNSS_ParseUniqID(GNSS_StateHandle *GNSS);
141
142 void GNSS_GetNavigatorData(GNSS_StateHandle *GNSS);
143 void GNSS_ParseNavigatorData(GNSS_StateHandle *GNSS);
144 void GNSS_ParseNavSatData(GNSS_StateHandle *GNSS);
145
146 void GNSS_GetPOSLLHData(GNSS_StateHandle *GNSS);
147 void GNSS_ParsePOSLLHData(GNSS_StateHandle *GNSS);
148
149 void GNSS_GetPVTData(GNSS_StateHandle *GNSS);
150 void GNSS_ParsePVTData(GNSS_StateHandle *GNSS);
151
152 void GNSS_SetMode(GNSS_StateHandle *GNSS, short gnssMode);
153 #endif /* INC_GNSS_H_ */
154
155
156