Mercurial > public > ostc4
annotate Small_CPU/Inc/GNSS.h @ 1004:efb7d18cc564 GasConsumption
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
| author | Ideenmodellierer |
|---|---|
| date | Sat, 03 May 2025 17:45:32 +0200 |
| parents | c386ae6635e4 |
| children |
| rev | line source |
|---|---|
| 887 | 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]; | |
| 931 | 63 uint8_t uartWorkingBuffer[255]; |
| 887 | 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 | |
| 931 | 91 uint8_t numSat; |
| 92 uint8_t statSat[4]; | |
| 93 | |
| 940 | 94 uint8_t alive; |
| 95 | |
| 955 | 96 float last_fLon; /* last known position storage and time stamp */ |
| 97 float last_fLat; | |
| 98 float last_hour; | |
| 99 | |
| 887 | 100 }GNSS_StateHandle; |
| 101 | |
| 102 GNSS_StateHandle GNSS_Handle; | |
| 103 | |
| 1000 | 104 typedef struct { |
| 105 uint8_t header1; | |
| 106 uint8_t header2; | |
| 107 uint8_t msgClass; | |
| 108 uint8_t msgID; | |
| 109 uint16_t length; | |
| 110 uint8_t type; | |
| 111 uint8_t version; | |
| 112 uint8_t ref; | |
| 113 uint8_t leapsec; | |
| 114 uint16_t year; | |
| 115 uint8_t month; | |
| 116 uint8_t day; | |
| 117 uint8_t hour; | |
| 118 uint8_t minute; | |
| 119 uint8_t second; | |
| 120 uint8_t flags; | |
| 121 uint32_t nanoseconds; | |
| 122 uint16_t accuracy_seconds; | |
| 123 uint16_t reserved; | |
| 124 uint32_t accuracy_nano; | |
|
1004
efb7d18cc564
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
Ideenmodellierer
parents:
1000
diff
changeset
|
125 } __attribute__((packed)) UBX_MGA_INI_TIME_UTC_t; |
| 1000 | 126 |
|
1004
efb7d18cc564
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
Ideenmodellierer
parents:
1000
diff
changeset
|
127 typedef struct { |
|
efb7d18cc564
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
Ideenmodellierer
parents:
1000
diff
changeset
|
128 uint8_t header1; |
|
efb7d18cc564
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
Ideenmodellierer
parents:
1000
diff
changeset
|
129 uint8_t header2; |
|
efb7d18cc564
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
Ideenmodellierer
parents:
1000
diff
changeset
|
130 uint8_t class_id; |
|
efb7d18cc564
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
Ideenmodellierer
parents:
1000
diff
changeset
|
131 uint8_t msg_id; |
|
efb7d18cc564
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
Ideenmodellierer
parents:
1000
diff
changeset
|
132 uint16_t length; |
|
efb7d18cc564
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
Ideenmodellierer
parents:
1000
diff
changeset
|
133 uint8_t type; |
|
efb7d18cc564
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
Ideenmodellierer
parents:
1000
diff
changeset
|
134 uint8_t version; |
|
efb7d18cc564
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
Ideenmodellierer
parents:
1000
diff
changeset
|
135 uint16_t reserved; |
|
efb7d18cc564
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
Ideenmodellierer
parents:
1000
diff
changeset
|
136 int32_t latitude; |
|
efb7d18cc564
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
Ideenmodellierer
parents:
1000
diff
changeset
|
137 int32_t longitude; |
|
efb7d18cc564
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
Ideenmodellierer
parents:
1000
diff
changeset
|
138 int32_t altitude; |
|
efb7d18cc564
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
Ideenmodellierer
parents:
1000
diff
changeset
|
139 uint32_t accuracy; |
|
efb7d18cc564
DevelopmentOption: added the possibility to provide a fixed position info to the gnss module. Code is deactivated at the moment.
Ideenmodellierer
parents:
1000
diff
changeset
|
140 } __attribute__((packed)) UBX_MGA_INI_POS_LLH_t; |
| 1000 | 141 |
| 887 | 142 |
| 143 enum GNSSMode{Portable=0, Stationary=1, Pedestrian=2, Automotiv=3, Airbone1G=5, Airbone2G=6,Airbone4G=7,Wirst=8,Bike=9}; | |
| 144 | |
| 933 | 145 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}; |
| 887 | 146 |
| 933 | 147 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}; |
| 887 | 148 |
| 149 //Activation of navigation system: Galileo, Glonass, GPS, SBAS, IMES | |
| 933 | 150 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}; |
| 887 | 151 |
| 933 | 152 static const uint8_t getDeviceID[]={0xB5,0x62,0x27,0x03,0x00,0x00}; |
| 887 | 153 |
| 933 | 154 static const uint8_t getNavigatorData[]={0xB5,0x62,0x01,0x21,0x00,0x00}; |
| 931 | 155 |
| 933 | 156 static const uint8_t getPOSLLHData[]={0xB5,0x62,0x01,0x02,0x00,0x00}; |
| 887 | 157 |
| 933 | 158 static const uint8_t getPVTData[]={0xB5,0x62,0x01,0x07,0x00,0x00}; |
| 887 | 159 |
| 933 | 160 static const uint8_t getNavSat[]={0xB5,0x62,0x01,0x35,0x00,0x00}; |
| 887 | 161 |
| 948 | 162 static const uint8_t setPowerLow[]={0xB5,0x62,0x06,0x86,0x08,0x00,0x00,0x02,0x10,0x0E,0x14,0x00,0x00,0x00}; |
| 936 | 163 |
| 939 | 164 static const uint8_t setPowerNormal[]={0xB5,0x62,0x06,0x86,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; |
| 887 | 165 |
| 1000 | 166 /* UBX-CFG-NAV5 */ |
| 933 | 167 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}; |
| 168 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}; | |
| 169 | |
| 936 | 170 static const uint8_t setConfig[]={0xB5,0x62,0x06,0x09,0x0D,0x00, 0x00,0x00,0x00,0x00, 0x18,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x01}; |
| 1000 | 171 /* UBX-MGA-INI-TIME_UTC */ |
| 172 static const uint8_t setDateTime[] = {0xB5,0x62,0x13,0x40,0x18,0x00,0x10,0x00,0x00,0x80,0x07,0xE9,0x01,0x02,0x03,0x04,0x05,0x00,0x01,0x02,0x03,0x04,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00}; | |
| 887 | 173 |
| 174 static const uint8_t setPortableType[]={}; | |
| 175 void GNSS_Init(GNSS_StateHandle *GNSS, UART_HandleTypeDef *huart); | |
| 176 void GNSS_LoadConfig(GNSS_StateHandle *GNSS); | |
|
899
2225c467f1e9
Added data path and visualization for position data:
Ideenmodellierer
parents:
887
diff
changeset
|
177 uint8_t GNSS_ParseBuffer(GNSS_StateHandle *GNSS); |
| 887 | 178 |
| 179 void GNSS_GetUniqID(GNSS_StateHandle *GNSS); | |
| 180 void GNSS_ParseUniqID(GNSS_StateHandle *GNSS); | |
| 181 | |
| 182 void GNSS_GetNavigatorData(GNSS_StateHandle *GNSS); | |
| 183 void GNSS_ParseNavigatorData(GNSS_StateHandle *GNSS); | |
| 931 | 184 void GNSS_ParseNavSatData(GNSS_StateHandle *GNSS); |
| 887 | 185 |
| 186 void GNSS_GetPOSLLHData(GNSS_StateHandle *GNSS); | |
| 187 void GNSS_ParsePOSLLHData(GNSS_StateHandle *GNSS); | |
| 188 | |
| 189 void GNSS_GetPVTData(GNSS_StateHandle *GNSS); | |
| 190 void GNSS_ParsePVTData(GNSS_StateHandle *GNSS); | |
| 191 | |
| 192 void GNSS_SetMode(GNSS_StateHandle *GNSS, short gnssMode); | |
| 193 #endif /* INC_GNSS_H_ */ | |
| 194 | |
| 195 | |
| 196 |
