This class provides an API to communicate with a u-blox GNSS chip. The files here were originally part of the C027_Support library (https://developer.mbed.org/teams/ublox/code/C027_Support/ at revision 138:dafbbf31bf76) but have been separated out, primarily for use on the u-blox C030 board where the cellular interace portion of the C027_Support library will instead be provided through the new mbed Cellular API.
Dependents: example-ublox-at-cellular-interface-ext example-low-power-sleep example-C030-out-of-box-demo example-C030-out-of-box-demo ... more
gnss_operations.cpp@32:36bf0ff17131, 2019-04-24 (annotated)
- Committer:
- fahim.alavi@u-blox.com
- Date:
- Wed Apr 24 17:55:48 2019 +0500
- Revision:
- 32:36bf0ff17131
- Parent:
- 31:9a1ce433f062
- Child:
- 33:75163fa7e453
Warnings removed and message NAVX5 corrected
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Bilal Qamar |
12:a04f7eeece23 | 1 | #include "gnss_operations.h" |
Bilal Qamar |
12:a04f7eeece23 | 2 | |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 3 | #ifndef UBLOX_WEARABLE_FRAMEWORK |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 4 | #define SEND_LOGGING_MESSAGE printf |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 5 | #else |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 6 | #include "MessageView.h" |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 7 | #endif |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 8 | |
Bilal Qamar |
12:a04f7eeece23 | 9 | #define FIRST_BYTE 0x000000FF |
Bilal Qamar |
12:a04f7eeece23 | 10 | #define SECOND_BYTE 0x0000FF00 |
Bilal Qamar |
12:a04f7eeece23 | 11 | #define THIRD_BYTE 0x00FF0000 |
Bilal Qamar |
12:a04f7eeece23 | 12 | #define FOURTH_BYTE 0xFF000000 |
Bilal Qamar |
12:a04f7eeece23 | 13 | #define RETRY 5 |
Bilal Qamar |
12:a04f7eeece23 | 14 | |
Bilal Qamar |
12:a04f7eeece23 | 15 | #define EXTRACT_BYTE(INDEX, BYTE, VALUE) ((VALUE & BYTE) >> (INDEX*8)) |
Bilal Qamar |
12:a04f7eeece23 | 16 | |
Bilal Qamar |
12:a04f7eeece23 | 17 | /** |
Bilal Qamar |
12:a04f7eeece23 | 18 | * |
Bilal Qamar |
12:a04f7eeece23 | 19 | * Enable UBX-NAV-PVT using UBX-CFG-MSG |
Bilal Qamar |
12:a04f7eeece23 | 20 | * @param return SUCCESS: 1 |
Bilal Qamar |
12:a04f7eeece23 | 21 | * FAILURE: 0 |
Bilal Qamar |
12:a04f7eeece23 | 22 | */ |
Bilal Qamar |
12:a04f7eeece23 | 23 | int GnssOperations::enable_ubx_nav_pvt() |
Bilal Qamar |
12:a04f7eeece23 | 24 | { |
Bilal Qamar |
12:a04f7eeece23 | 25 | int conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 26 | unsigned char enable_ubx_nav_pvt[]={0x01, 0x07, 0x01}; |
Bilal Qamar |
12:a04f7eeece23 | 27 | conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 28 | int length =0; |
Bilal Qamar |
12:a04f7eeece23 | 29 | |
Bilal Qamar |
12:a04f7eeece23 | 30 | while(conf) |
Bilal Qamar |
12:a04f7eeece23 | 31 | { |
Bilal Qamar |
12:a04f7eeece23 | 32 | |
Bilal Qamar |
12:a04f7eeece23 | 33 | length = GnssSerial::sendUbx(0x06, 0x01, enable_ubx_nav_pvt, sizeof(enable_ubx_nav_pvt)); |
Bilal Qamar |
12:a04f7eeece23 | 34 | if(length >= (int)(sizeof(enable_ubx_nav_pvt) + UBX_FRAME_SIZE)) |
Bilal Qamar |
12:a04f7eeece23 | 35 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 36 | SEND_LOGGING_MESSAGE("UBX-NAV-PVT was enabled\r\n"); |
wajahat.abbas@u-blox.com | 19:119e7c15ff97 | 37 | wait(1); |
Bilal Qamar |
12:a04f7eeece23 | 38 | break; |
Bilal Qamar |
12:a04f7eeece23 | 39 | } |
Bilal Qamar |
12:a04f7eeece23 | 40 | else |
Bilal Qamar |
12:a04f7eeece23 | 41 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 42 | SEND_LOGGING_MESSAGE("enabling UBX-NAV-PVT...\r\n"); |
Bilal Qamar |
12:a04f7eeece23 | 43 | conf = conf - 1; |
Bilal Qamar |
12:a04f7eeece23 | 44 | } |
Bilal Qamar |
12:a04f7eeece23 | 45 | } |
Bilal Qamar |
12:a04f7eeece23 | 46 | |
Bilal Qamar |
12:a04f7eeece23 | 47 | return (conf == 0) ? 0 : 1; |
Bilal Qamar |
12:a04f7eeece23 | 48 | } |
Bilal Qamar |
12:a04f7eeece23 | 49 | |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 50 | int GnssOperations::enable_ubx_nav_status() { |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 51 | int conf = RETRY; |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 52 | unsigned char enable_ubx_nav_status[]={0x01, 0x03, 0x01}; |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 53 | conf = RETRY; |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 54 | int length =0; |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 55 | |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 56 | while(conf) |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 57 | { |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 58 | |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 59 | length = GnssSerial::sendUbx(0x06, 0x01, enable_ubx_nav_status, sizeof(enable_ubx_nav_status)); |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 60 | if(length >= (int)(sizeof(enable_ubx_nav_status) + UBX_FRAME_SIZE)) |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 61 | { |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 62 | SEND_LOGGING_MESSAGE("UBX-NAV-STATUS was enabled\r\n"); |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 63 | wait(1); |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 64 | break; |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 65 | } |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 66 | else |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 67 | { |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 68 | SEND_LOGGING_MESSAGE("enabling UBX-NAV-STATUS...\r\n"); |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 69 | conf = conf - 1; |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 70 | } |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 71 | } |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 72 | |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 73 | return (conf == 0) ? 0 : 1; |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 74 | |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 75 | } |
fahim.alavi@u-blox.com | 21:f91c0334d017 | 76 | |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 77 | int GnssOperations::enable_ubx_nav_sat() { |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 78 | int conf = RETRY; |
fahim.alavi@u-blox.com | 25:f538f1dc4121 | 79 | unsigned char enable_ubx_nav_sat[]={0x01, 0x35, 0x01}; |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 80 | conf = RETRY; |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 81 | int length =0; |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 82 | |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 83 | while(conf) |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 84 | { |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 85 | |
fahim.alavi@u-blox.com | 25:f538f1dc4121 | 86 | length = GnssSerial::sendUbx(0x06, 0x01, enable_ubx_nav_sat, sizeof(enable_ubx_nav_sat)); |
fahim.alavi@u-blox.com | 25:f538f1dc4121 | 87 | if(length >= (int)(sizeof(enable_ubx_nav_sat) + UBX_FRAME_SIZE)) |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 88 | { |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 89 | SEND_LOGGING_MESSAGE("UBX-NAV-STATUS was enabled\r\n"); |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 90 | wait(1); |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 91 | break; |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 92 | } |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 93 | else |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 94 | { |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 95 | SEND_LOGGING_MESSAGE("enabling UBX-NAV-STATUS...\r\n"); |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 96 | conf = conf - 1; |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 97 | } |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 98 | } |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 99 | |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 100 | return (conf == 0) ? 0 : 1; |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 101 | |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 102 | } |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 103 | |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 104 | int GnssOperations::enable_ubx_nav_sol() { |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 105 | int conf = RETRY; |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 106 | unsigned char enable_ubx_nav_status[]={0x01, 0x06, 0x0A}; |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 107 | conf = RETRY; |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 108 | int length =0; |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 109 | |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 110 | while(conf) |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 111 | { |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 112 | |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 113 | length = GnssSerial::sendUbx(0x06, 0x01, enable_ubx_nav_status, sizeof(enable_ubx_nav_status)); |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 114 | if(length >= (int)(sizeof(enable_ubx_nav_status) + UBX_FRAME_SIZE)) |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 115 | { |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 116 | SEND_LOGGING_MESSAGE("UBX-NAV-STATUS was enabled\r\n"); |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 117 | wait(1); |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 118 | break; |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 119 | } |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 120 | else |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 121 | { |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 122 | SEND_LOGGING_MESSAGE("enabling UBX-NAV-STATUS...\r\n"); |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 123 | conf = conf - 1; |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 124 | } |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 125 | } |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 126 | |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 127 | return (conf == 0) ? 0 : 1; |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 128 | |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 129 | } |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 130 | |
fahim.alavi@u-blox.com | 22:d8cd4cf0fcc0 | 131 | |
Bilal Qamar |
12:a04f7eeece23 | 132 | /** |
Bilal Qamar |
12:a04f7eeece23 | 133 | * |
Bilal Qamar |
12:a04f7eeece23 | 134 | * Disable UBX-NAV-PVT |
Bilal Qamar |
12:a04f7eeece23 | 135 | * @param return SUCCESS: 1 |
Bilal Qamar |
12:a04f7eeece23 | 136 | * FAILURE: 0 |
Bilal Qamar |
12:a04f7eeece23 | 137 | */ |
Bilal Qamar |
12:a04f7eeece23 | 138 | int GnssOperations::disable_ubx_nav_pvt() |
Bilal Qamar |
12:a04f7eeece23 | 139 | { |
Bilal Qamar |
12:a04f7eeece23 | 140 | int conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 141 | unsigned char enable_ubx_nav_pvt[]={0x01, 0x07, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 142 | conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 143 | int length =0; |
Bilal Qamar |
12:a04f7eeece23 | 144 | |
Bilal Qamar |
12:a04f7eeece23 | 145 | while(conf) |
Bilal Qamar |
12:a04f7eeece23 | 146 | { |
Bilal Qamar |
12:a04f7eeece23 | 147 | |
Bilal Qamar |
12:a04f7eeece23 | 148 | length = GnssSerial::sendUbx(0x06, 0x01, enable_ubx_nav_pvt, sizeof(enable_ubx_nav_pvt)); |
Bilal Qamar |
12:a04f7eeece23 | 149 | if(length >= (int)(sizeof(enable_ubx_nav_pvt) + UBX_FRAME_SIZE)) |
Bilal Qamar |
12:a04f7eeece23 | 150 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 151 | SEND_LOGGING_MESSAGE("UBX-NAV-PVT was disabled\r\n"); |
Bilal Qamar |
12:a04f7eeece23 | 152 | wait(5); |
Bilal Qamar |
12:a04f7eeece23 | 153 | break; |
Bilal Qamar |
12:a04f7eeece23 | 154 | } |
Bilal Qamar |
12:a04f7eeece23 | 155 | else |
Bilal Qamar |
12:a04f7eeece23 | 156 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 157 | SEND_LOGGING_MESSAGE("disabling UBX-NAV-PVT...\r\n"); |
Bilal Qamar |
12:a04f7eeece23 | 158 | conf = conf - 1; |
Bilal Qamar |
12:a04f7eeece23 | 159 | } |
Bilal Qamar |
12:a04f7eeece23 | 160 | } |
Bilal Qamar |
12:a04f7eeece23 | 161 | |
Bilal Qamar |
12:a04f7eeece23 | 162 | return (conf == 0) ? 0 : 1; |
Bilal Qamar |
12:a04f7eeece23 | 163 | } |
Bilal Qamar |
12:a04f7eeece23 | 164 | |
Bilal Qamar |
12:a04f7eeece23 | 165 | int GnssOperations::enable_ubx_nav5(unsigned int acc) |
Bilal Qamar |
12:a04f7eeece23 | 166 | { |
Bilal Qamar |
12:a04f7eeece23 | 167 | int conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 168 | conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 169 | int length =0; |
Bilal Qamar |
12:a04f7eeece23 | 170 | //convert unsigned int acc to hex |
Bilal Qamar |
12:a04f7eeece23 | 171 | //ask if positioning mask or time accuracy mask |
bqam |
18:7adca4350499 | 172 | unsigned char ubx_cfg_nav5[]={0xFF, 0xFF, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, |
fahim.alavi@u-blox.com | 32:36bf0ff17131 | 173 | 0x0A, 0x00, 0xFA, 0x00,0xFA, 0x00, (unsigned char)EXTRACT_BYTE(0, FIRST_BYTE, acc), (unsigned char)EXTRACT_BYTE(1, SECOND_BYTE, acc), |
bqam |
18:7adca4350499 | 174 | 0x5E, 0x01, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 175 | |
Bilal Qamar |
12:a04f7eeece23 | 176 | while(conf) |
Bilal Qamar |
12:a04f7eeece23 | 177 | { |
Bilal Qamar |
12:a04f7eeece23 | 178 | length = GnssSerial::sendUbx(0x06, 0x24, ubx_cfg_nav5, sizeof(ubx_cfg_nav5)); |
Bilal Qamar |
12:a04f7eeece23 | 179 | if(length >= (int)(sizeof(ubx_cfg_nav5) + UBX_FRAME_SIZE)) |
Bilal Qamar |
12:a04f7eeece23 | 180 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 181 | SEND_LOGGING_MESSAGE("ubx_cfg_nav5 was enabled\r\n"); |
wajahat.abbas@u-blox.com | 19:119e7c15ff97 | 182 | wait(1); |
Bilal Qamar |
12:a04f7eeece23 | 183 | break; |
Bilal Qamar |
12:a04f7eeece23 | 184 | } |
Bilal Qamar |
12:a04f7eeece23 | 185 | else |
Bilal Qamar |
12:a04f7eeece23 | 186 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 187 | SEND_LOGGING_MESSAGE("enabling ubx_cfg_nav5...\r\n"); |
Bilal Qamar |
12:a04f7eeece23 | 188 | conf = conf - 1; |
Bilal Qamar |
12:a04f7eeece23 | 189 | } |
Bilal Qamar |
12:a04f7eeece23 | 190 | } |
Bilal Qamar |
12:a04f7eeece23 | 191 | |
Bilal Qamar |
12:a04f7eeece23 | 192 | return (conf == 0) ? 0 : 1; |
Bilal Qamar |
12:a04f7eeece23 | 193 | } |
Bilal Qamar |
12:a04f7eeece23 | 194 | |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 195 | int GnssOperations::enable_ubx_navx5() |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 196 | { |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 197 | int conf = RETRY; |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 198 | conf = RETRY; |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 199 | int length =0; |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 200 | //convert unsigned int acc to hex |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 201 | //ask if positioning mask or time accuracy mask |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 202 | unsigned char ubx_cfg_navx5[]={0x28, 0x00, 0x02, 0x00, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x03, 0x02, 0x03, 0x20, 0x06, 0x00, 0x01, 0x01, 0x00, 0x00, 0x90, |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 203 | 0x07, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x64, 0x64, 0x00, 0x00, 0x01, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xF7}; |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 204 | |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 205 | while(conf) |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 206 | { |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 207 | length = GnssSerial::sendUbx(0x06, 0x23, ubx_cfg_navx5, sizeof(ubx_cfg_navx5)); |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 208 | if(length >= (int)(sizeof(ubx_cfg_navx5) + UBX_FRAME_SIZE)) |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 209 | { |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 210 | SEND_LOGGING_MESSAGE("ubx_cfg_navx5 was enabled\r\n"); |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 211 | wait(1); |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 212 | break; |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 213 | } |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 214 | else |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 215 | { |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 216 | SEND_LOGGING_MESSAGE("enabling ubx_cfg_navx5...\r\n"); |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 217 | conf = conf - 1; |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 218 | } |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 219 | } |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 220 | |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 221 | return (conf == 0) ? 0 : 1; |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 222 | } |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 223 | |
Bilal Qamar |
12:a04f7eeece23 | 224 | /** |
Bilal Qamar |
12:a04f7eeece23 | 225 | * Enabling UBX-ODOMETER using UBX-CFG-ODO |
Bilal Qamar |
12:a04f7eeece23 | 226 | * @param return SUCCESS: 1 |
Bilal Qamar |
12:a04f7eeece23 | 227 | * FAILURE: 0 |
Bilal Qamar |
12:a04f7eeece23 | 228 | * |
Bilal Qamar |
12:a04f7eeece23 | 229 | */ |
Bilal Qamar |
12:a04f7eeece23 | 230 | int GnssOperations::enable_ubx_odo() |
Bilal Qamar |
12:a04f7eeece23 | 231 | { |
Bilal Qamar |
12:a04f7eeece23 | 232 | int conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 233 | unsigned char ubx_cfg_odo[]={0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x19, 0x46, 0x19, 0x66, 0x0A, 0x32, 0x00, |
Bilal Qamar |
12:a04f7eeece23 | 234 | 0x00, 0x99, 0x4C, 0x00, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 235 | conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 236 | int length =0; |
Bilal Qamar |
12:a04f7eeece23 | 237 | |
Bilal Qamar |
12:a04f7eeece23 | 238 | while(conf) |
Bilal Qamar |
12:a04f7eeece23 | 239 | { |
Bilal Qamar |
12:a04f7eeece23 | 240 | length = GnssSerial::sendUbx(0x06, 0x1E, ubx_cfg_odo, sizeof(ubx_cfg_odo)); |
Bilal Qamar |
12:a04f7eeece23 | 241 | if(length >= (int)(sizeof(ubx_cfg_odo) + UBX_FRAME_SIZE)) |
Bilal Qamar |
12:a04f7eeece23 | 242 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 243 | SEND_LOGGING_MESSAGE("UBX-ODO was enabled\r\n"); |
wajahat.abbas@u-blox.com | 19:119e7c15ff97 | 244 | wait(1); |
Bilal Qamar |
12:a04f7eeece23 | 245 | break; |
Bilal Qamar |
12:a04f7eeece23 | 246 | } |
Bilal Qamar |
12:a04f7eeece23 | 247 | else |
Bilal Qamar |
12:a04f7eeece23 | 248 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 249 | SEND_LOGGING_MESSAGE("enabling UBX-ODO...\r\n"); |
Bilal Qamar |
12:a04f7eeece23 | 250 | conf = conf - 1; |
Bilal Qamar |
12:a04f7eeece23 | 251 | } |
Bilal Qamar |
12:a04f7eeece23 | 252 | } |
Bilal Qamar |
12:a04f7eeece23 | 253 | |
Bilal Qamar |
12:a04f7eeece23 | 254 | return (conf == 0) ? 0 : 1; |
Bilal Qamar |
12:a04f7eeece23 | 255 | } |
Bilal Qamar |
12:a04f7eeece23 | 256 | |
Bilal Qamar |
12:a04f7eeece23 | 257 | int GnssOperations::disable_ubx_odo() |
Bilal Qamar |
12:a04f7eeece23 | 258 | { |
Bilal Qamar |
12:a04f7eeece23 | 259 | int conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 260 | unsigned char ubx_cfg_odo[]={0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x19, 0x46, 0x19, 0x66, 0x0A, 0x32, 0x00, |
Bilal Qamar |
12:a04f7eeece23 | 261 | 0x00, 0x99, 0x4C, 0x00, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 262 | conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 263 | int length =0; |
Bilal Qamar |
12:a04f7eeece23 | 264 | |
Bilal Qamar |
12:a04f7eeece23 | 265 | while(conf) |
Bilal Qamar |
12:a04f7eeece23 | 266 | { |
Bilal Qamar |
12:a04f7eeece23 | 267 | length = GnssSerial::sendUbx(0x06, 0x1E, ubx_cfg_odo, sizeof(ubx_cfg_odo)); |
Bilal Qamar |
12:a04f7eeece23 | 268 | if(length >= (int)(sizeof(ubx_cfg_odo) + UBX_FRAME_SIZE)) |
Bilal Qamar |
12:a04f7eeece23 | 269 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 270 | SEND_LOGGING_MESSAGE("UBX-ODO was disabled\r\n"); |
Bilal Qamar |
12:a04f7eeece23 | 271 | wait(5); |
Bilal Qamar |
12:a04f7eeece23 | 272 | break; |
Bilal Qamar |
12:a04f7eeece23 | 273 | } |
Bilal Qamar |
12:a04f7eeece23 | 274 | else |
Bilal Qamar |
12:a04f7eeece23 | 275 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 276 | SEND_LOGGING_MESSAGE("disabling UBX-ODO...\r\n"); |
Bilal Qamar |
12:a04f7eeece23 | 277 | conf = conf - 1; |
Bilal Qamar |
12:a04f7eeece23 | 278 | } |
Bilal Qamar |
12:a04f7eeece23 | 279 | } |
Bilal Qamar |
12:a04f7eeece23 | 280 | |
Bilal Qamar |
12:a04f7eeece23 | 281 | return (conf == 0) ? 0 : 1; |
Bilal Qamar |
12:a04f7eeece23 | 282 | } |
Bilal Qamar |
12:a04f7eeece23 | 283 | /** |
Bilal Qamar |
12:a04f7eeece23 | 284 | * Enabling UBX-NAV-ODO messages using UBX-CFG-MSG |
Bilal Qamar |
12:a04f7eeece23 | 285 | * @param return SUCCESS: 1 |
Bilal Qamar |
12:a04f7eeece23 | 286 | * FAILURE: 0 |
Bilal Qamar |
12:a04f7eeece23 | 287 | * |
Bilal Qamar |
12:a04f7eeece23 | 288 | */ |
Bilal Qamar |
12:a04f7eeece23 | 289 | int GnssOperations::enable_ubx_nav_odo() |
Bilal Qamar |
12:a04f7eeece23 | 290 | { |
Bilal Qamar |
12:a04f7eeece23 | 291 | int conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 292 | unsigned char ubx_nav_odo[]={0x01, 0x09, 0x01}; |
Bilal Qamar |
12:a04f7eeece23 | 293 | conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 294 | int length =0; |
Bilal Qamar |
12:a04f7eeece23 | 295 | |
Bilal Qamar |
12:a04f7eeece23 | 296 | while(conf) |
Bilal Qamar |
12:a04f7eeece23 | 297 | { |
Bilal Qamar |
12:a04f7eeece23 | 298 | length = GnssSerial::sendUbx(0x06, 0x01, ubx_nav_odo, sizeof(ubx_nav_odo)); |
Bilal Qamar |
12:a04f7eeece23 | 299 | if(length >= (int)(sizeof(ubx_nav_odo) + UBX_FRAME_SIZE)) |
Bilal Qamar |
12:a04f7eeece23 | 300 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 301 | SEND_LOGGING_MESSAGE("UBX-NAV-ODO was enabled\r\n"); |
wajahat.abbas@u-blox.com | 19:119e7c15ff97 | 302 | wait(1); |
Bilal Qamar |
12:a04f7eeece23 | 303 | break; |
Bilal Qamar |
12:a04f7eeece23 | 304 | } |
Bilal Qamar |
12:a04f7eeece23 | 305 | else |
Bilal Qamar |
12:a04f7eeece23 | 306 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 307 | SEND_LOGGING_MESSAGE("enabling UBX-NAV-ODO...\r\n"); |
Bilal Qamar |
12:a04f7eeece23 | 308 | conf = conf - 1; |
Bilal Qamar |
12:a04f7eeece23 | 309 | } |
Bilal Qamar |
12:a04f7eeece23 | 310 | } |
Bilal Qamar |
12:a04f7eeece23 | 311 | |
Bilal Qamar |
12:a04f7eeece23 | 312 | return (conf == 0) ? 0 : 1; |
Bilal Qamar |
12:a04f7eeece23 | 313 | } |
Bilal Qamar |
12:a04f7eeece23 | 314 | |
Bilal Qamar |
12:a04f7eeece23 | 315 | /** |
Bilal Qamar |
12:a04f7eeece23 | 316 | * Disabling UBX-NAV-ODO messages using UBX-CFG-MSG |
Bilal Qamar |
12:a04f7eeece23 | 317 | * @param return SUCCESS: 1 |
Bilal Qamar |
12:a04f7eeece23 | 318 | * FAILURE: 0 |
Bilal Qamar |
12:a04f7eeece23 | 319 | * |
Bilal Qamar |
12:a04f7eeece23 | 320 | */ |
Bilal Qamar |
12:a04f7eeece23 | 321 | int GnssOperations::disable_ubx_nav_odo() |
Bilal Qamar |
12:a04f7eeece23 | 322 | { |
Bilal Qamar |
12:a04f7eeece23 | 323 | int conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 324 | unsigned char ubx_nav_odo[]={0x01, 0x09, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 325 | conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 326 | int length =0; |
Bilal Qamar |
12:a04f7eeece23 | 327 | |
Bilal Qamar |
12:a04f7eeece23 | 328 | while(conf) |
Bilal Qamar |
12:a04f7eeece23 | 329 | { |
Bilal Qamar |
12:a04f7eeece23 | 330 | length = GnssSerial::sendUbx(0x06, 0x01, ubx_nav_odo, sizeof(ubx_nav_odo)); |
Bilal Qamar |
12:a04f7eeece23 | 331 | if(length >= (int)(sizeof(ubx_nav_odo) + UBX_FRAME_SIZE)) |
Bilal Qamar |
12:a04f7eeece23 | 332 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 333 | SEND_LOGGING_MESSAGE("UBX-NAV-ODO was disabled\r\n"); |
Bilal Qamar |
12:a04f7eeece23 | 334 | wait(5); |
Bilal Qamar |
12:a04f7eeece23 | 335 | break; |
Bilal Qamar |
12:a04f7eeece23 | 336 | } |
Bilal Qamar |
12:a04f7eeece23 | 337 | else |
Bilal Qamar |
12:a04f7eeece23 | 338 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 339 | SEND_LOGGING_MESSAGE("disabling UBX-NAV-ODO...\r\n"); |
Bilal Qamar |
12:a04f7eeece23 | 340 | conf = conf - 1; |
Bilal Qamar |
12:a04f7eeece23 | 341 | } |
Bilal Qamar |
12:a04f7eeece23 | 342 | } |
Bilal Qamar |
12:a04f7eeece23 | 343 | |
Bilal Qamar |
12:a04f7eeece23 | 344 | return (conf == 0) ? 0 : 1; |
Bilal Qamar |
12:a04f7eeece23 | 345 | } |
Bilal Qamar |
12:a04f7eeece23 | 346 | |
Bilal Qamar |
12:a04f7eeece23 | 347 | int GnssOperations::enable_ubx_batch_feature() |
Bilal Qamar |
12:a04f7eeece23 | 348 | { |
Bilal Qamar |
12:a04f7eeece23 | 349 | int conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 350 | unsigned char enable_ubx_log_batch[]={0x00, 0x0D, 0x0A, 0x00, 0x07, 0x00, 0x00, 0x01}; |
Bilal Qamar |
12:a04f7eeece23 | 351 | conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 352 | int length =0; |
Bilal Qamar |
12:a04f7eeece23 | 353 | |
Bilal Qamar |
12:a04f7eeece23 | 354 | //Disable NAV-ODO and NAV-PVT |
Bilal Qamar |
12:a04f7eeece23 | 355 | disable_ubx_nav_odo(); |
Bilal Qamar |
12:a04f7eeece23 | 356 | disable_ubx_nav_pvt(); |
Bilal Qamar |
12:a04f7eeece23 | 357 | |
Bilal Qamar |
12:a04f7eeece23 | 358 | while(conf) |
Bilal Qamar |
12:a04f7eeece23 | 359 | { |
Bilal Qamar |
12:a04f7eeece23 | 360 | length = GnssSerial::sendUbx(0x06, 0x93, enable_ubx_log_batch, sizeof(enable_ubx_log_batch)); |
Bilal Qamar |
12:a04f7eeece23 | 361 | if(length >= (int)(sizeof(enable_ubx_log_batch) + UBX_FRAME_SIZE)) |
Bilal Qamar |
12:a04f7eeece23 | 362 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 363 | SEND_LOGGING_MESSAGE("UBX_LOG_BATCH was enabled\r\n"); |
wajahat.abbas@u-blox.com | 19:119e7c15ff97 | 364 | wait(1); |
Bilal Qamar |
12:a04f7eeece23 | 365 | break; |
Bilal Qamar |
12:a04f7eeece23 | 366 | } |
Bilal Qamar |
12:a04f7eeece23 | 367 | else |
Bilal Qamar |
12:a04f7eeece23 | 368 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 369 | SEND_LOGGING_MESSAGE("enable ubx_batch_log...\r\n"); |
Bilal Qamar |
12:a04f7eeece23 | 370 | conf = conf - 1; |
Bilal Qamar |
12:a04f7eeece23 | 371 | } |
Bilal Qamar |
12:a04f7eeece23 | 372 | } |
Bilal Qamar |
12:a04f7eeece23 | 373 | return (conf == 0) ? 0 : 1; |
Bilal Qamar |
12:a04f7eeece23 | 374 | } |
Bilal Qamar |
12:a04f7eeece23 | 375 | |
Bilal Qamar |
12:a04f7eeece23 | 376 | int GnssOperations::disable_ubx_batch_feature() |
Bilal Qamar |
12:a04f7eeece23 | 377 | { |
Bilal Qamar |
12:a04f7eeece23 | 378 | int conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 379 | unsigned char enable_ubx_log_batch[]={0x00, 0x0C, 0x0A, 0x00, 0x07, 0x00, 0x00, 0x01}; |
Bilal Qamar |
12:a04f7eeece23 | 380 | conf = RETRY; |
Bilal Qamar |
12:a04f7eeece23 | 381 | int length =0; |
Bilal Qamar |
12:a04f7eeece23 | 382 | |
Bilal Qamar |
12:a04f7eeece23 | 383 | //Enable NAV-ODO and NAV-PVT |
Bilal Qamar |
12:a04f7eeece23 | 384 | enable_ubx_nav_odo(); |
Bilal Qamar |
12:a04f7eeece23 | 385 | enable_ubx_nav_pvt(); |
Bilal Qamar |
12:a04f7eeece23 | 386 | |
Bilal Qamar |
12:a04f7eeece23 | 387 | while(conf) |
Bilal Qamar |
12:a04f7eeece23 | 388 | { |
Bilal Qamar |
12:a04f7eeece23 | 389 | length = GnssSerial::sendUbx(0x06, 0x93, enable_ubx_log_batch, sizeof(enable_ubx_log_batch)); |
Bilal Qamar |
12:a04f7eeece23 | 390 | if(length >= (int)(sizeof(enable_ubx_log_batch) + UBX_FRAME_SIZE)) |
Bilal Qamar |
12:a04f7eeece23 | 391 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 392 | SEND_LOGGING_MESSAGE("UBX_LOG_BATCH was enabled\r\n"); |
Bilal Qamar |
12:a04f7eeece23 | 393 | wait(5); |
Bilal Qamar |
12:a04f7eeece23 | 394 | break; |
Bilal Qamar |
12:a04f7eeece23 | 395 | } |
Bilal Qamar |
12:a04f7eeece23 | 396 | else |
Bilal Qamar |
12:a04f7eeece23 | 397 | { |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 398 | SEND_LOGGING_MESSAGE("enable ubx_batch_log...\r\n"); |
Bilal Qamar |
12:a04f7eeece23 | 399 | conf = conf - 1; |
Bilal Qamar |
12:a04f7eeece23 | 400 | } |
Bilal Qamar |
12:a04f7eeece23 | 401 | } |
Bilal Qamar |
12:a04f7eeece23 | 402 | return (conf == 0) ? 0 : 1; |
Bilal Qamar |
12:a04f7eeece23 | 403 | } |
Bilal Qamar |
12:a04f7eeece23 | 404 | |
Bilal Qamar |
12:a04f7eeece23 | 405 | /** |
Bilal Qamar |
12:a04f7eeece23 | 406 | * |
Bilal Qamar |
12:a04f7eeece23 | 407 | * Configuring UBX-LOG-BATCH with UBX-CFG-BATCH |
Bilal Qamar |
12:a04f7eeece23 | 408 | * |
Bilal Qamar |
12:a04f7eeece23 | 409 | * @param obj struct containing the data to be send in payload |
Bilal Qamar |
12:a04f7eeece23 | 410 | * @param return SUCCESS: 1 |
Bilal Qamar |
12:a04f7eeece23 | 411 | * FAIL: 0 |
Bilal Qamar |
12:a04f7eeece23 | 412 | * |
Bilal Qamar |
12:a04f7eeece23 | 413 | */ |
Bilal Qamar |
12:a04f7eeece23 | 414 | int GnssOperations::cfg_batch_feature(tUBX_CFG_BATCH *obj) |
Bilal Qamar |
12:a04f7eeece23 | 415 | { |
Bilal Qamar |
12:a04f7eeece23 | 416 | int length =0; |
fahim.alavi@u-blox.com | 32:36bf0ff17131 | 417 | const unsigned char cfg_batch_feature[] = {0x00, 0x01, (unsigned char)EXTRACT_BYTE(0, FIRST_BYTE, obj->bufSize), |
fahim.alavi@u-blox.com | 32:36bf0ff17131 | 418 | (unsigned char) EXTRACT_BYTE(1, SECOND_BYTE, obj->bufSize), (unsigned char) EXTRACT_BYTE(0, FIRST_BYTE, obj->notifThrs), |
fahim.alavi@u-blox.com | 32:36bf0ff17131 | 419 | (unsigned char) EXTRACT_BYTE(1, SECOND_BYTE, obj->notifThrs), obj->pioId, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 420 | |
Bilal Qamar |
12:a04f7eeece23 | 421 | length = GnssSerial::sendUbx(0x06, 0x93, cfg_batch_feature, sizeof(cfg_batch_feature)); |
Bilal Qamar |
12:a04f7eeece23 | 422 | |
Bilal Qamar |
12:a04f7eeece23 | 423 | return (length >= (int)(sizeof(cfg_batch_feature) + UBX_FRAME_SIZE)) ? 1 : 0; |
Bilal Qamar |
12:a04f7eeece23 | 424 | } |
Bilal Qamar |
12:a04f7eeece23 | 425 | |
Bilal Qamar |
12:a04f7eeece23 | 426 | /* |
Bilal Qamar |
12:a04f7eeece23 | 427 | * Power mode configuration for GNSS receiver |
Bilal Qamar |
12:a04f7eeece23 | 428 | * |
Bilal Qamar |
12:a04f7eeece23 | 429 | * Pending: Need to send extended power management configuration messages (UBX-CFG-PM2) |
Bilal Qamar |
12:a04f7eeece23 | 430 | * |
Bilal Qamar |
12:a04f7eeece23 | 431 | * |
Bilal Qamar |
12:a04f7eeece23 | 432 | */ |
fahim.alavi@u-blox.com | 27:405a5e611635 | 433 | int GnssOperations::cfg_power_mode(Powermodes power_mode, bool minimumAcqTimeZero) |
Bilal Qamar |
12:a04f7eeece23 | 434 | { |
Bilal Qamar |
12:a04f7eeece23 | 435 | int length = 0; |
fahim.alavi@u-blox.com | 27:405a5e611635 | 436 | const int minimumAcqTime_index = 22; |
Bilal Qamar |
12:a04f7eeece23 | 437 | unsigned char semi_continuous_pms[] = {0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 438 | unsigned char semi_continuous_pm2[] = {0x02, 0x06, 0x00, 0x00, 0x02, 0x00, 0x43, 0x01, 0x10, 0x27, 0x00, 0x00, 0x10, |
Bilal Qamar |
12:a04f7eeece23 | 439 | 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x2C, 0x01, 0x00, 0x00, 0xCF, 0x40, 0x00, |
Bilal Qamar |
12:a04f7eeece23 | 440 | 0x00, 0x87, 0x5A, 0xA4, 0x46, 0xFE, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 441 | unsigned char semi_continuous_rate[] = {0xE8, 0x03, 0x01, 0x00, 0x01, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 442 | |
Bilal Qamar |
12:a04f7eeece23 | 443 | unsigned char aggresive_continuous_pms[] = {0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 444 | unsigned char aggresive_continuous_pm2[] = {0x02, 0x06, 0x00, 0x00, 0x02, 0x00, 0x43, 0x01, 0xE8, 0x03, 0x00, 0x00, |
Bilal Qamar |
12:a04f7eeece23 | 445 | 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x2C, 0x01, 0x00, 0x00, 0xCF, 0x40, |
Bilal Qamar |
12:a04f7eeece23 | 446 | 0x00, 0x00, 0x87, 0x5A, 0xA4, 0x46, 0xFE, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 447 | unsigned char aggressive_continuous_rate[] = {0xE8, 0x03, 0x01, 0x00, 0x01, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 448 | |
Bilal Qamar |
12:a04f7eeece23 | 449 | unsigned char conservative_continuous_pms[] = {0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 450 | unsigned char conservative_continuous_pm2[] = {0x02, 0x06, 0x00, 0x00, 0x00, 0x00, 0x43, 0x01, 0xE8, 0x03, 0x00, 0x00, |
Bilal Qamar |
12:a04f7eeece23 | 451 | 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x2C, 0x01, 0x00, 0x00, 0xCF, 0x41, |
Bilal Qamar |
12:a04f7eeece23 | 452 | 0x00, 0x00, 0x88, 0x6A, 0xA4, 0x46, 0xFE, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 453 | unsigned char conservative_continuous_rate[] = {0xE8, 0x03, 0x01, 0x00, 0x01, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 454 | |
Bilal Qamar |
12:a04f7eeece23 | 455 | unsigned char full_power_pms[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; |
bqam |
18:7adca4350499 | 456 | unsigned char full_power_rate[] = {0xE8, 0x03, 0x01, 0x00, 0x01, 0x00}; |
bqam |
18:7adca4350499 | 457 | |
bqam |
18:7adca4350499 | 458 | unsigned char full_power_block_level_pms[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; |
bqam |
18:7adca4350499 | 459 | unsigned char full_power_block_level_rate[] = {0xE8, 0x03, 0x01, 0x00, 0x01, 0x00}; |
bqam |
18:7adca4350499 | 460 | |
bqam |
18:7adca4350499 | 461 | unsigned char full_power_building_level_pms[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; |
bqam |
18:7adca4350499 | 462 | unsigned char full_power_building_level_rate[] = {0xE8, 0x03, 0x01, 0x00, 0x01, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 463 | |
Bilal Qamar |
12:a04f7eeece23 | 464 | switch (power_mode) |
Bilal Qamar |
12:a04f7eeece23 | 465 | { |
Bilal Qamar |
12:a04f7eeece23 | 466 | case SEMI_CONTINOUS: |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 467 | SEND_LOGGING_MESSAGE("Configuring SEMI_CONTINOUS"); |
Bilal Qamar |
12:a04f7eeece23 | 468 | length = GnssSerial::sendUbx(0x06, 0x86, semi_continuous_pms, sizeof(semi_continuous_pms)); |
wajahat.abbas@u-blox.com | 19:119e7c15ff97 | 469 | wait(1); |
fahim.alavi@u-blox.com | 27:405a5e611635 | 470 | |
fahim.alavi@u-blox.com | 27:405a5e611635 | 471 | if(minimumAcqTimeZero) { |
fahim.alavi@u-blox.com | 27:405a5e611635 | 472 | semi_continuous_pm2[minimumAcqTime_index] = 0x00; |
fahim.alavi@u-blox.com | 27:405a5e611635 | 473 | semi_continuous_pm2[minimumAcqTime_index + 1] = 0x00; |
fahim.alavi@u-blox.com | 27:405a5e611635 | 474 | } |
fahim.alavi@u-blox.com | 27:405a5e611635 | 475 | |
Bilal Qamar |
12:a04f7eeece23 | 476 | length = GnssSerial::sendUbx(0x06, 0x3B, semi_continuous_pm2, sizeof(semi_continuous_pm2)); |
wajahat.abbas@u-blox.com | 19:119e7c15ff97 | 477 | wait(1); |
Bilal Qamar |
12:a04f7eeece23 | 478 | length = GnssSerial::sendUbx(0x06, 0x08, semi_continuous_rate, sizeof(semi_continuous_rate)); |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 479 | wait(1); |
Bilal Qamar |
12:a04f7eeece23 | 480 | break; |
Bilal Qamar |
12:a04f7eeece23 | 481 | |
Bilal Qamar |
12:a04f7eeece23 | 482 | case AGGRESSIVE_CONTINUOS: |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 483 | SEND_LOGGING_MESSAGE("Configuring AGGRESSIVE_CONTINUOS"); |
Bilal Qamar |
12:a04f7eeece23 | 484 | length = GnssSerial::sendUbx(0x06, 0x86, aggresive_continuous_pms, sizeof(aggresive_continuous_pms)); |
wajahat.abbas@u-blox.com | 19:119e7c15ff97 | 485 | wait(1); |
fahim.alavi@u-blox.com | 27:405a5e611635 | 486 | |
fahim.alavi@u-blox.com | 27:405a5e611635 | 487 | if(minimumAcqTimeZero) { |
fahim.alavi@u-blox.com | 27:405a5e611635 | 488 | semi_continuous_pm2[minimumAcqTime_index] = 0x00; |
fahim.alavi@u-blox.com | 27:405a5e611635 | 489 | semi_continuous_pm2[minimumAcqTime_index + 1] = 0x00; |
fahim.alavi@u-blox.com | 27:405a5e611635 | 490 | } |
fahim.alavi@u-blox.com | 27:405a5e611635 | 491 | |
Bilal Qamar |
12:a04f7eeece23 | 492 | length = GnssSerial::sendUbx(0x06, 0x3B, aggresive_continuous_pm2, sizeof(aggresive_continuous_pm2)); |
wajahat.abbas@u-blox.com | 19:119e7c15ff97 | 493 | wait(1); |
Bilal Qamar |
12:a04f7eeece23 | 494 | length = GnssSerial::sendUbx(0x06, 0x08, aggressive_continuous_rate, sizeof(aggressive_continuous_rate)); |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 495 | wait(1); |
Bilal Qamar |
12:a04f7eeece23 | 496 | break; |
Bilal Qamar |
12:a04f7eeece23 | 497 | |
Bilal Qamar |
12:a04f7eeece23 | 498 | case CONSERVATIVE_CONTINOUS: |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 499 | SEND_LOGGING_MESSAGE("Configuring CONSERVATIVE_CONTINOUS"); |
Bilal Qamar |
12:a04f7eeece23 | 500 | length = GnssSerial::sendUbx(0x06, 0x86, conservative_continuous_pms, sizeof(conservative_continuous_pms)); |
wajahat.abbas@u-blox.com | 19:119e7c15ff97 | 501 | wait(1); |
fahim.alavi@u-blox.com | 27:405a5e611635 | 502 | |
fahim.alavi@u-blox.com | 27:405a5e611635 | 503 | if(minimumAcqTimeZero) { |
fahim.alavi@u-blox.com | 27:405a5e611635 | 504 | semi_continuous_pm2[minimumAcqTime_index] = 0x00; |
fahim.alavi@u-blox.com | 27:405a5e611635 | 505 | semi_continuous_pm2[minimumAcqTime_index + 1] = 0x00; |
fahim.alavi@u-blox.com | 27:405a5e611635 | 506 | } |
fahim.alavi@u-blox.com | 27:405a5e611635 | 507 | |
Bilal Qamar |
12:a04f7eeece23 | 508 | length = GnssSerial::sendUbx(0x06, 0x3B, conservative_continuous_pm2, sizeof(conservative_continuous_pm2)); |
wajahat.abbas@u-blox.com | 19:119e7c15ff97 | 509 | wait(1); |
Bilal Qamar |
12:a04f7eeece23 | 510 | length = GnssSerial::sendUbx(0x06, 0x08, conservative_continuous_rate, sizeof(conservative_continuous_rate)); |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 511 | wait(1); |
Bilal Qamar |
12:a04f7eeece23 | 512 | break; |
Bilal Qamar |
12:a04f7eeece23 | 513 | |
Bilal Qamar |
12:a04f7eeece23 | 514 | case FULL_POWER: |
fahim.alavi@u-blox.com | 16:cb9861f0f4d8 | 515 | SEND_LOGGING_MESSAGE("Configuring FULL_POWER"); |
Bilal Qamar |
12:a04f7eeece23 | 516 | length = GnssSerial::sendUbx(0x06, 0x86, full_power_pms, sizeof(full_power_pms)); |
wajahat.abbas@u-blox.com | 19:119e7c15ff97 | 517 | wait(1); |
Bilal Qamar |
12:a04f7eeece23 | 518 | length = GnssSerial::sendUbx(0x06, 0x08, full_power_rate, sizeof(full_power_rate)); |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 519 | wait(1); |
Bilal Qamar |
12:a04f7eeece23 | 520 | break; |
bqam |
18:7adca4350499 | 521 | case FULL_POWER_BLOCK_LEVEL: |
bqam |
18:7adca4350499 | 522 | SEND_LOGGING_MESSAGE("Configuring FULL_POWER_BLOCK_LEVEL"); |
bqam |
18:7adca4350499 | 523 | length = GnssSerial::sendUbx(0x06, 0x86, full_power_block_level_pms, sizeof(full_power_block_level_pms)); |
wajahat.abbas@u-blox.com | 19:119e7c15ff97 | 524 | wait(1); |
bqam |
18:7adca4350499 | 525 | length = GnssSerial::sendUbx(0x06, 0x08, full_power_block_level_rate, sizeof(full_power_block_level_rate)); |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 526 | wait(1); |
bqam |
18:7adca4350499 | 527 | break; |
bqam |
18:7adca4350499 | 528 | case FULL_POWER_BUILDING_LEVEL: |
bqam |
18:7adca4350499 | 529 | SEND_LOGGING_MESSAGE("Configuring FULL_POWER_BUILDING_LEVEL"); |
bqam |
18:7adca4350499 | 530 | length = GnssSerial::sendUbx(0x06, 0x86, full_power_building_level_pms, sizeof(full_power_building_level_pms)); |
wajahat.abbas@u-blox.com | 19:119e7c15ff97 | 531 | wait(1); |
bqam |
18:7adca4350499 | 532 | length = GnssSerial::sendUbx(0x06, 0x08, full_power_building_level_rate, sizeof(full_power_building_level_rate)); |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 533 | wait(1); |
bqam |
18:7adca4350499 | 534 | break; |
fahim.alavi@u-blox.com | 32:36bf0ff17131 | 535 | case AVAILABLE_OPERATION: |
fahim.alavi@u-blox.com | 32:36bf0ff17131 | 536 | default : { |
fahim.alavi@u-blox.com | 32:36bf0ff17131 | 537 | SEND_LOGGING_MESSAGE("Invalid power mode"); |
fahim.alavi@u-blox.com | 32:36bf0ff17131 | 538 | } |
fahim.alavi@u-blox.com | 32:36bf0ff17131 | 539 | break; |
Bilal Qamar |
12:a04f7eeece23 | 540 | } |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 541 | |
Bilal Qamar |
12:a04f7eeece23 | 542 | return (length >= (int)(sizeof(semi_continuous_pms) + UBX_FRAME_SIZE)) ? 1 : 0; |
Bilal Qamar |
12:a04f7eeece23 | 543 | } |
Bilal Qamar |
12:a04f7eeece23 | 544 | |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 545 | bool GnssOperations::verify_gnss_mode() { |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 546 | |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 547 | unsigned char CFG_PMS[] = {0xB5, 0x62, 0x06, 0x86, 0x00, 0x00, 0x8c, 0xAA}; |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 548 | unsigned char CFG_PM2[] = {0xB5, 0x62, 0x06, 0x3B, 0x00, 0x00, 0x41, 0xC9}; |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 549 | unsigned char CFG_RATE[] = {0xB5, 0x62, 0x06, 0x08, 0x00, 0x00, 0x0E, 0x30}; |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 550 | unsigned char CFG_NAV5[] = {0xB5, 0x62, 0x06, 0x24, 0x00, 0x00, 0x2A, 0x84}; |
fahim.alavi@u-blox.com | 32:36bf0ff17131 | 551 | unsigned char CFG_NAVX5[] = {0xB5, 0x62, 0x06, 0x23, 0x00, 0x00, 0x29, 0x81}; |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 552 | |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 553 | this->_send(CFG_PMS, sizeof(CFG_PMS)); |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 554 | wait(1); |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 555 | |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 556 | this->_send(CFG_PM2, sizeof(CFG_PM2)); |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 557 | wait(1); |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 558 | |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 559 | this->_send(CFG_RATE, sizeof(CFG_RATE)); |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 560 | wait(1); |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 561 | |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 562 | this->_send(CFG_NAV5, sizeof(CFG_NAV5)); |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 563 | wait(1); |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 564 | |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 565 | this->_send(CFG_NAVX5, sizeof(CFG_NAVX5)); |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 566 | wait(1); |
fahim.alavi@u-blox.com | 31:9a1ce433f062 | 567 | |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 568 | return true; |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 569 | } |
fahim.alavi@u-blox.com | 20:bc678f383db1 | 570 | |
Bilal Qamar |
12:a04f7eeece23 | 571 | /** |
Bilal Qamar |
12:a04f7eeece23 | 572 | * GNSS start modes (Hot/Warm/Cold start) |
Bilal Qamar |
12:a04f7eeece23 | 573 | * |
Bilal Qamar |
12:a04f7eeece23 | 574 | * @param return SUCCESS: 1 |
Bilal Qamar |
12:a04f7eeece23 | 575 | * FAILURE: 0 |
Bilal Qamar |
12:a04f7eeece23 | 576 | * |
Bilal Qamar |
12:a04f7eeece23 | 577 | */ |
Bilal Qamar |
12:a04f7eeece23 | 578 | int GnssOperations::start_mode(int start_mode) |
Bilal Qamar |
12:a04f7eeece23 | 579 | { |
Bilal Qamar |
12:a04f7eeece23 | 580 | int length = 0; |
Bilal Qamar |
12:a04f7eeece23 | 581 | unsigned char hot_start[] = {0x00, 0x00, 0x02, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 582 | unsigned char warm_start[] = {0x01, 0x00, 0x02, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 583 | unsigned char cold_start[] = {0xFF, 0xFF, 0x02, 0x00}; |
Bilal Qamar |
12:a04f7eeece23 | 584 | |
Bilal Qamar |
12:a04f7eeece23 | 585 | switch (start_mode) |
Bilal Qamar |
12:a04f7eeece23 | 586 | { |
Bilal Qamar |
12:a04f7eeece23 | 587 | case HOT: |
Bilal Qamar |
12:a04f7eeece23 | 588 | length = GnssSerial::sendUbx(0x06, 0x04, hot_start, sizeof(hot_start)); |
Bilal Qamar |
12:a04f7eeece23 | 589 | break; |
Bilal Qamar |
12:a04f7eeece23 | 590 | |
Bilal Qamar |
12:a04f7eeece23 | 591 | case WARM: |
Bilal Qamar |
12:a04f7eeece23 | 592 | length = GnssSerial::sendUbx(0x06, 0x04, warm_start, sizeof(warm_start)); |
Bilal Qamar |
12:a04f7eeece23 | 593 | break; |
Bilal Qamar |
12:a04f7eeece23 | 594 | |
Bilal Qamar |
12:a04f7eeece23 | 595 | case COLD: |
Bilal Qamar |
12:a04f7eeece23 | 596 | length = GnssSerial::sendUbx(0x06, 0x04, cold_start, sizeof(cold_start)); |
Bilal Qamar |
12:a04f7eeece23 | 597 | break; |
Bilal Qamar |
12:a04f7eeece23 | 598 | } |
Bilal Qamar |
12:a04f7eeece23 | 599 | |
Bilal Qamar |
12:a04f7eeece23 | 600 | return (length >= (int)(sizeof(hot_start) + UBX_FRAME_SIZE)) ? 1 : 0; |
Bilal Qamar |
12:a04f7eeece23 | 601 | } |
bqam |
14:4b22bd505b93 | 602 | |
bqam |
14:4b22bd505b93 | 603 | void GnssOperations::send_to_gnss(char rChar) |
bqam |
14:4b22bd505b93 | 604 | { |
bqam |
14:4b22bd505b93 | 605 | GnssSerial::putc(rChar); |
bqam |
14:4b22bd505b93 | 606 | } |
bqam |
14:4b22bd505b93 | 607 | |
bqam |
14:4b22bd505b93 | 608 | void GnssOperations::power_on_gnss() |
bqam |
14:4b22bd505b93 | 609 | { |
bqam |
14:4b22bd505b93 | 610 | GnssSerial::_powerOn(); |
bqam |
14:4b22bd505b93 | 611 | } |