Private Private / Mbed 2 deprecated SenseAirLP8

Dependencies:   BLE_API mbed nRF51822

Fork of SenseAirLP8 by Jonas Skalman

Committer:
jony1401
Date:
Mon Aug 14 20:52:48 2017 +0000
Revision:
2:d02255d8c36f
Parent:
1:b512a405b584
Child:
3:933dd59ad44d
v2.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jony1401 0:ee3787c8e209 1 #ifndef LP8_H
jony1401 0:ee3787c8e209 2 #define LP8_H
jony1401 0:ee3787c8e209 3
jony1401 2:d02255d8c36f 4 /* To initialize the lp8 object, you need to pass a serial (tx, rx), a DigitalOut signal for the en_vbb,
jony1401 2:d02255d8c36f 5 an DigitalIn for the ready signal, DigitalOut for Reset and a timer object. */
jony1401 1:b512a405b584 6
jony1401 0:ee3787c8e209 7 class LP8
jony1401 0:ee3787c8e209 8 {
jony1401 0:ee3787c8e209 9 public:
jony1401 1:b512a405b584 10 //constructor
jony1401 2:d02255d8c36f 11 LP8(Serial &device, DigitalOut &vbb_en, DigitalIn &rdy, DigitalOut &res ,Timer &_timer):
jony1401 1:b512a405b584 12 Device(device),
jony1401 1:b512a405b584 13 VBB_EN(vbb_en),
jony1401 1:b512a405b584 14 RDY(rdy),
jony1401 2:d02255d8c36f 15 RES(res),
jony1401 1:b512a405b584 16 lp8Wait(_timer)
jony1401 1:b512a405b584 17 {
jony1401 1:b512a405b584 18 Device.baud(9600); //set baud rate to 9600
jony1401 0:ee3787c8e209 19
jony1401 1:b512a405b584 20 //initialize arrays with lp8 modbus commands.
jony1401 1:b512a405b584 21 //initial startup command:
jony1401 1:b512a405b584 22 firstWrite[0] = 0xfe; //device adress
jony1401 1:b512a405b584 23 firstWrite[1] = 0x41; //write to ram
jony1401 1:b512a405b584 24 firstWrite[2] = 0x00; //
jony1401 1:b512a405b584 25 firstWrite[3] = 0x80; //starting adress
jony1401 1:b512a405b584 26 firstWrite[4] = 0x01; //nr of bytes to send
jony1401 1:b512a405b584 27 firstWrite[5] = 0x10; //calculation control byte
jony1401 1:b512a405b584 28 firstWrite[6] = 0x28; //crc low
jony1401 1:b512a405b584 29 firstWrite[7] = 0x7e; //crc high
jony1401 0:ee3787c8e209 30
jony1401 1:b512a405b584 31 //write previous sensor state to lp8, command:
jony1401 1:b512a405b584 32 stateWrite[0] = 0xfe; //device adress
jony1401 1:b512a405b584 33 stateWrite[1] = 0x41; //write to ram
jony1401 1:b512a405b584 34 stateWrite[2] = 0x00; //
jony1401 1:b512a405b584 35 stateWrite[3] = 0x80; //starting adress
jony1401 1:b512a405b584 36 stateWrite[4] = 0x18; //nr of bytes to send
jony1401 1:b512a405b584 37 stateWrite[5] = 0x20; //Calculation Control
jony1401 1:b512a405b584 38 for(int k = 6; k < 31; k++) { stateWrite[k] = 0x00; } //
jony1401 0:ee3787c8e209 39
jony1401 1:b512a405b584 40 //read request from the lp8:
jony1401 1:b512a405b584 41 stateRead[0] = 0xfe; //adress
jony1401 1:b512a405b584 42 stateRead[1] = 0x44; //read from ram
jony1401 1:b512a405b584 43 stateRead[2] = 0x00; //
jony1401 1:b512a405b584 44 stateRead[3] = 0x80; //starting adress
jony1401 1:b512a405b584 45 stateRead[4] = 0x2c; //number of bytes to read
jony1401 1:b512a405b584 46 stateRead[5] = 0x00; //crc_l
jony1401 1:b512a405b584 47 stateRead[5] = 0x00; //crc_h
jony1401 1:b512a405b584 48
jony1401 1:b512a405b584 49 //response buffer
jony1401 1:b512a405b584 50 for(int k = 0; k < 60; k++) { response[k] = 0x00; }
jony1401 0:ee3787c8e209 51
jony1401 1:b512a405b584 52 //variable initialization
jony1401 1:b512a405b584 53 co2 = 400; //co2 value
jony1401 1:b512a405b584 54 counter = 0; //
jony1401 1:b512a405b584 55 CRC = 0x0000; //crc value
jony1401 2:d02255d8c36f 56
jony1401 1:b512a405b584 57 };
jony1401 0:ee3787c8e209 58
jony1401 0:ee3787c8e209 59
jony1401 2:d02255d8c36f 60 //LP8 Initialization and first message
jony1401 0:ee3787c8e209 61 bool lp8Init(){
jony1401 2:d02255d8c36f 62
jony1401 2:d02255d8c36f 63 // //Reset LP8
jony1401 2:d02255d8c36f 64 // RES.write( 0 ); //reset
jony1401 2:d02255d8c36f 65 // timeIt( 1.2 );
jony1401 2:d02255d8c36f 66 // RES.write( 1 ); //enable
jony1401 2:d02255d8c36f 67
jony1401 2:d02255d8c36f 68 //Enable Sensor
jony1401 0:ee3787c8e209 69 VBB_EN.write( 1 ); //power on
jony1401 1:b512a405b584 70 //wait for rdy signal
jony1401 2:d02255d8c36f 71 timeIt( 0.35 ); //wait for lp8 rdy signal
jony1401 1:b512a405b584 72 transmitPacket(firstWrite, 8); //Send out msg (and nr of bytes) over serial line
jony1401 0:ee3787c8e209 73 Response( 4 ); //read 4 bytes response
jony1401 1:b512a405b584 74 //compute crc
jony1401 0:ee3787c8e209 75 CRC = modbusCrc(stateRead, 5);
jony1401 1:b512a405b584 76 //add crc value to the transmit package
jony1401 1:b512a405b584 77 stateRead[5] = (uint8_t)CRC; //crc_l
jony1401 1:b512a405b584 78 stateRead[6] = (uint8_t)(CRC >> 8); //crc_h
jony1401 1:b512a405b584 79 //wait for rdy
jony1401 2:d02255d8c36f 80 timeIt( 0.35 ); //
jony1401 0:ee3787c8e209 81 transmitPacket(stateRead, 7); //transmit packet
jony1401 0:ee3787c8e209 82 Response( 49 ); //read sensor state and co2 value(s)
jony1401 1:b512a405b584 83 VBB_EN.write( 0 ); //power off lp8
jony1401 2:d02255d8c36f 84
jony1401 1:b512a405b584 85 //was the talk a success? (simple check...)
jony1401 0:ee3787c8e209 86 if ( getValue() < 1 ) {
jony1401 0:ee3787c8e209 87 return 1; }
jony1401 0:ee3787c8e209 88 else {
jony1401 0:ee3787c8e209 89 return 0; }
jony1401 0:ee3787c8e209 90 };
jony1401 0:ee3787c8e209 91
jony1401 1:b512a405b584 92 //send subsequent messages to the lp8
jony1401 1:b512a405b584 93 void lp8Talk(uint8_t ccByte){
jony1401 2:d02255d8c36f 94
jony1401 0:ee3787c8e209 95 //transfer previous sensor state to the new msg out
jony1401 0:ee3787c8e209 96 for (int u = 4; u < 23+4; u++) {
jony1401 0:ee3787c8e209 97 stateWrite[u+2] = response[u];
jony1401 0:ee3787c8e209 98 }
jony1401 1:b512a405b584 99 //Set Calibration Control Byte (see end of page for explantion)
jony1401 1:b512a405b584 100 stateWrite[5] = ccByte;
jony1401 0:ee3787c8e209 101 //compute new crc value
jony1401 0:ee3787c8e209 102 CRC = modbusCrc(stateWrite, 29);
jony1401 0:ee3787c8e209 103 //add new crc value to send list
jony1401 0:ee3787c8e209 104 stateWrite[29] = (uint8_t)CRC;
jony1401 0:ee3787c8e209 105 stateWrite[30] = (uint8_t)(CRC >> 8);
jony1401 2:d02255d8c36f 106
jony1401 0:ee3787c8e209 107 //initialize new transfer sequence
jony1401 0:ee3787c8e209 108 VBB_EN.write( 1 ); //power on sensor
jony1401 2:d02255d8c36f 109 timeIt( 0.35 );
jony1401 0:ee3787c8e209 110 transmitPacket(stateWrite, 31); //Send out msg with previous state (and nr of elements) over serial line
jony1401 0:ee3787c8e209 111 Response( 4 ); //read 4 bytes response
jony1401 0:ee3787c8e209 112 //compute crc
jony1401 0:ee3787c8e209 113 CRC = modbusCrc(stateRead, 5);
jony1401 0:ee3787c8e209 114 //add crc value to the read request transmit package
jony1401 0:ee3787c8e209 115 stateRead[5] = (uint8_t)CRC; //crc_l
jony1401 0:ee3787c8e209 116 stateRead[6] = (uint8_t)(CRC >> 8); //crc_h
jony1401 2:d02255d8c36f 117 timeIt( 0.35 );
jony1401 0:ee3787c8e209 118 //send read request
jony1401 0:ee3787c8e209 119 transmitPacket(stateRead, 7); //transmit packet
jony1401 0:ee3787c8e209 120 //read sensor response
jony1401 0:ee3787c8e209 121 Response( 49 ); //read sensor state and co2 value(s)
jony1401 1:b512a405b584 122 VBB_EN.write( 0 ); //power off
jony1401 0:ee3787c8e209 123 };
jony1401 1:b512a405b584 124
jony1401 2:d02255d8c36f 125 //get value from lp8 response
jony1401 2:d02255d8c36f 126 unsigned long getValue() /* CO2 Value */
jony1401 0:ee3787c8e209 127 {
jony1401 1:b512a405b584 128 int high = response[29];
jony1401 1:b512a405b584 129 int low = response[30];
jony1401 0:ee3787c8e209 130 unsigned long val = high * 256 + low;
jony1401 0:ee3787c8e209 131
jony1401 0:ee3787c8e209 132 return val;
jony1401 0:ee3787c8e209 133 }
jony1401 2:d02255d8c36f 134
jony1401 2:d02255d8c36f 135 double getTempValue()
jony1401 2:d02255d8c36f 136 {
jony1401 2:d02255d8c36f 137 int h = response[33];
jony1401 2:d02255d8c36f 138 int l = response[34];
jony1401 2:d02255d8c36f 139 unsigned long _temp = h * 256 + l;
jony1401 2:d02255d8c36f 140
jony1401 2:d02255d8c36f 141 double _tempVal = 0.01 * _temp;
jony1401 2:d02255d8c36f 142
jony1401 2:d02255d8c36f 143 return _tempVal;
jony1401 2:d02255d8c36f 144 }
jony1401 2:d02255d8c36f 145
jony1401 2:d02255d8c36f 146 int getVcapValue(){
jony1401 2:d02255d8c36f 147
jony1401 2:d02255d8c36f 148 int hB = response[35];
jony1401 2:d02255d8c36f 149 int lB = response[36];
jony1401 2:d02255d8c36f 150 unsigned long temp = hB * 256 + lB;
jony1401 2:d02255d8c36f 151
jony1401 2:d02255d8c36f 152 return temp;
jony1401 2:d02255d8c36f 153 }
jony1401 2:d02255d8c36f 154
jony1401 2:d02255d8c36f 155 uint32_t getErrorStatus(){
jony1401 2:d02255d8c36f 156
jony1401 2:d02255d8c36f 157 uint32_t tmp = 0;
jony1401 2:d02255d8c36f 158 tmp += response[39] << (32-8);
jony1401 2:d02255d8c36f 159 tmp += response[40] << (32-16);
jony1401 2:d02255d8c36f 160 tmp += response[41] << (32-24);
jony1401 2:d02255d8c36f 161 tmp += response[42];
jony1401 2:d02255d8c36f 162
jony1401 2:d02255d8c36f 163 return tmp;
jony1401 2:d02255d8c36f 164 }
jony1401 2:d02255d8c36f 165
jony1401 2:d02255d8c36f 166 //get calculation Control byte from lp8 response
jony1401 2:d02255d8c36f 167 uint8_t getCCbyte(){
jony1401 2:d02255d8c36f 168 uint8_t responseCCbyte = response[0];
jony1401 2:d02255d8c36f 169 return responseCCbyte;
jony1401 2:d02255d8c36f 170 }
jony1401 2:d02255d8c36f 171
jony1401 1:b512a405b584 172
jony1401 1:b512a405b584 173 /************************************************* Helper Functions ********************************************/
jony1401 2:d02255d8c36f 174
jony1401 1:b512a405b584 175 //purge response buffer
jony1401 0:ee3787c8e209 176 void responsePurge(int bytesToPurge){
jony1401 0:ee3787c8e209 177 for (int j = 0; j < bytesToPurge; j++) {
jony1401 0:ee3787c8e209 178 response[j] = 0x00;
jony1401 0:ee3787c8e209 179 }
jony1401 0:ee3787c8e209 180 };
jony1401 1:b512a405b584 181
jony1401 2:d02255d8c36f 182 //read response from lp8 (not energy efficient...)
jony1401 0:ee3787c8e209 183 void Response(int bytesToRead ){
jony1401 1:b512a405b584 184 lp8Wait.start(); //poll rx line for 0.5 seconds
jony1401 0:ee3787c8e209 185 do {
jony1401 0:ee3787c8e209 186 if(Device.readable()) {
jony1401 0:ee3787c8e209 187 response[counter] = Device.getc();
jony1401 0:ee3787c8e209 188 counter++;
jony1401 0:ee3787c8e209 189 }
jony1401 0:ee3787c8e209 190 }
jony1401 2:d02255d8c36f 191 while( lp8Wait.read() < 0.2 );
jony1401 0:ee3787c8e209 192 counter = 0;
jony1401 0:ee3787c8e209 193 lp8Wait.stop();
jony1401 0:ee3787c8e209 194 lp8Wait.reset();
jony1401 0:ee3787c8e209 195 };
jony1401 0:ee3787c8e209 196
jony1401 1:b512a405b584 197 //transmit data over serial lines
jony1401 0:ee3787c8e209 198 void transmitPacket(uint8_t msg[], int le ){
jony1401 0:ee3787c8e209 199 //Send out msg over serial line:
jony1401 0:ee3787c8e209 200 while(!Device.writeable() ) { /* wait for serial available*/ }
jony1401 0:ee3787c8e209 201 for(int pos = 0; pos < le; pos++) {
jony1401 0:ee3787c8e209 202 Device.putc(msg[pos]);
jony1401 0:ee3787c8e209 203 }
jony1401 0:ee3787c8e209 204
jony1401 0:ee3787c8e209 205 };
jony1401 0:ee3787c8e209 206
jony1401 1:b512a405b584 207 //timer
jony1401 2:d02255d8c36f 208 void timeIt(float timeMe){
jony1401 0:ee3787c8e209 209 //start amd stop timer...
jony1401 0:ee3787c8e209 210 lp8Wait.start();
jony1401 0:ee3787c8e209 211 while (lp8Wait.read() < timeMe ) { /* W A I T I N G */ }
jony1401 0:ee3787c8e209 212 lp8Wait.stop();
jony1401 0:ee3787c8e209 213 lp8Wait.reset();
jony1401 0:ee3787c8e209 214 };
jony1401 0:ee3787c8e209 215
jony1401 1:b512a405b584 216 // Computation for the modbus 16-bit crc
jony1401 0:ee3787c8e209 217 uint16_t modbusCrc(uint8_t buffer[], int len){
jony1401 0:ee3787c8e209 218 uint16_t crc = 0xFFFF;
jony1401 0:ee3787c8e209 219
jony1401 0:ee3787c8e209 220 for (int pos = 0; pos < len; pos++) {
jony1401 0:ee3787c8e209 221 crc ^= (uint16_t)buffer[pos]; // XOR byte into least sig. byte of crc
jony1401 0:ee3787c8e209 222
jony1401 0:ee3787c8e209 223 for (int i = 8; i != 0; i--) { // Loop over each bit
jony1401 0:ee3787c8e209 224 if ((crc & 0x0001) != 0) { // If the LSB is set
jony1401 0:ee3787c8e209 225 crc >>= 1; // shift right and XOR 0xA001
jony1401 0:ee3787c8e209 226 crc ^= 0xA001;
jony1401 0:ee3787c8e209 227 }
jony1401 0:ee3787c8e209 228 else // Else LSB is not set
jony1401 0:ee3787c8e209 229 crc >>= 1; // shift right
jony1401 0:ee3787c8e209 230 }
jony1401 0:ee3787c8e209 231 }
jony1401 0:ee3787c8e209 232 // Note, this number has low and high bytes swapped
jony1401 0:ee3787c8e209 233 return crc;
jony1401 0:ee3787c8e209 234 };
jony1401 1:b512a405b584 235
jony1401 1:b512a405b584 236 //variables and buffers
jony1401 0:ee3787c8e209 237 private:
jony1401 2:d02255d8c36f 238 //pins
jony1401 0:ee3787c8e209 239 Serial &Device;
jony1401 0:ee3787c8e209 240 DigitalOut &VBB_EN;
jony1401 0:ee3787c8e209 241 DigitalIn &RDY;
jony1401 2:d02255d8c36f 242 DigitalOut &RES;
jony1401 2:d02255d8c36f 243
jony1401 0:ee3787c8e209 244 Timer &lp8Wait;
jony1401 0:ee3787c8e209 245
jony1401 1:b512a405b584 246 //msg containers
jony1401 0:ee3787c8e209 247 uint8_t firstWrite[8];
jony1401 0:ee3787c8e209 248 uint8_t stateWrite[31];
jony1401 0:ee3787c8e209 249 uint8_t stateRead[7];
jony1401 0:ee3787c8e209 250 uint8_t response[60];
jony1401 2:d02255d8c36f 251
jony1401 2:d02255d8c36f 252 //
jony1401 2:d02255d8c36f 253 int co2; //CO2 initial value
jony1401 2:d02255d8c36f 254 int tempValue;
jony1401 0:ee3787c8e209 255 int counter; //simple counter
jony1401 0:ee3787c8e209 256 uint16_t CRC; //modbus crc value
jony1401 0:ee3787c8e209 257
jony1401 0:ee3787c8e209 258
jony1401 0:ee3787c8e209 259 };
jony1401 0:ee3787c8e209 260 #endif
jony1401 0:ee3787c8e209 261
jony1401 0:ee3787c8e209 262 /*
jony1401 1:b512a405b584 263 LP8 Modbus Communication Protocol (With no external Pressure Sensor):
jony1401 0:ee3787c8e209 264 --------------------------------------------------------------------------------
jony1401 0:ee3787c8e209 265 Initial Measurement (first read after powerup): COMMANDS:
jony1401 0:ee3787c8e209 266 --------------------------------------------------------------------------------
jony1401 0:ee3787c8e209 267 1) host powers up sensor: VBB_EN = 1
jony1401 0:ee3787c8e209 268 2) host waits until rdy signal goes low: RDY = 0;
jony1401 0:ee3787c8e209 269 3) host writes command, "write 24 bytes starting from adress 0x0080": { 0xfe, 0x41, 0x00, 0x80, 0x18, 0x10, ... [any 23 bytes] ..., CRC_low, CRC_high };
jony1401 0:ee3787c8e209 270 4) host reads response: { 0xfe, 0x41, 0x81, 0xe0 };
jony1401 0:ee3787c8e209 271 5) host waits until rdy signal goes high: RDY = 1;
jony1401 0:ee3787c8e209 272 6) host writes command "read 44 bytes starting from adress 0x0080": { 0xfe, 0x44, 0x00, 0x80, 0x2c, CRC_low, CRC_high };
jony1401 0:ee3787c8e209 273 7) host reads response: { 0xfe, 0x44, 0x2c, 0x00, SS1, SS2, ..., SS23, PP_H, PP_L, D1, D2, ..., D18, CRC_low, CRC_high };
jony1401 0:ee3787c8e209 274 8) host powers down sensor: VBB_EN = 0;
jony1401 0:ee3787c8e209 275
jony1401 0:ee3787c8e209 276 [------------------------------------------------------------------------------]
jony1401 0:ee3787c8e209 277 Optional first reading W/O pressure sensor
jony1401 0:ee3787c8e209 278 [------------------------------------------------------------------------------]
jony1401 0:ee3787c8e209 279 1) host powers up sensor: VBB_EN = 1
jony1401 0:ee3787c8e209 280 2) host waits until rdy signal goes low: RDY = 0;
jony1401 0:ee3787c8e209 281 3) host writes command, "write 24 bytes starting from adress 0x0080": { 0xfe, 0x41, 0x00, 0x80, 0x18, 0x10, 0x28, 0x7e };
jony1401 0:ee3787c8e209 282 4) host reads response: { 0xfe, 0x41, 0x81, 0xe0 };
jony1401 0:ee3787c8e209 283 5) host waits until rdy signal goes high: RDY = 1;
jony1401 0:ee3787c8e209 284 6) host writes command "read 44 bytes starting from adress 0x0080": { 0xfe, 0x44, 0x00, 0x80, 0x2c, CRC_low, CRC_high };
jony1401 0:ee3787c8e209 285 7) host reads response: { 0xfe, 0x44, 0x2c, 0x00, SS1, SS2, ..., SS23, PP_H, PP_L, D1, D2, ..., D18, CRC_low, CRC_high };
jony1401 0:ee3787c8e209 286 8) host powers down sensor: VBB_EN = 0;
jony1401 0:ee3787c8e209 287
jony1401 0:ee3787c8e209 288
jony1401 0:ee3787c8e209 289 --------------------------------------------------------------------------------
jony1401 0:ee3787c8e209 290 Subsequent readings:
jony1401 0:ee3787c8e209 291 --------------------------------------------------------------------------------
jony1401 0:ee3787c8e209 292 1) host powers up sensor: VBB_EN = 1
jony1401 0:ee3787c8e209 293 2) host waits until rdy signal goes low: RDY = 0;
jony1401 0:ee3787c8e209 294 3) host writes command, "write 24 bytes starting from adress 0x0080": { 0xfe, 0x41, 0x00, 0x80, 0x18, CC, SS1, ..., SS23, CRC_low, CRC_high };
jony1401 0:ee3787c8e209 295 4) host reads response: { 0xfe, 0x41, 0x81, 0xe0 };
jony1401 0:ee3787c8e209 296 5) host waits until rdy signal goes high: RDY = 1;
jony1401 0:ee3787c8e209 297 6) host writes command "read 44 bytes starting from adress 0x0080": { 0xfe, 0x44, 0x00, 0x80, 0x2c, CRC_low, CRC_high };
jony1401 0:ee3787c8e209 298 7) host reads response: { 0xfe, 0x44, 0x2c, 0x00, SS1, SS2, ..., SS23, PP_H, PP_L, D1, D2, ..., D18, CRC_low, CRC_high };
jony1401 0:ee3787c8e209 299 8) host powers down sensor: VBB_EN = 0;
jony1401 0:ee3787c8e209 300
jony1401 0:ee3787c8e209 301
jony1401 0:ee3787c8e209 302 --------------------------------------------------------------------------------
jony1401 1:b512a405b584 303 LP8 Background Calibration, Calculation Control Byte
jony1401 1:b512a405b584 304 --------------------------------------------------------------------------------
jony1401 1:b512a405b584 305 To calibrate the lp8, commands needs to be sent with the calculation control byte
jony1401 1:b512a405b584 306 Calculation:
jony1401 1:b512a405b584 307 CC =
jony1401 1:b512a405b584 308 0x10 Initial measurement (filters reset, ABC sample reset and other,
jony1401 1:b512a405b584 309 0x20 Subsequent measurement,
jony1401 1:b512a405b584 310 0x40 Zero calibration using unfiltered data,
jony1401 1:b512a405b584 311 0x41 Zero calibration using filtered data,
jony1401 1:b512a405b584 312 0x42 Zero calibration using unfiltered data + reset filters,
jony1401 1:b512a405b584 313 0x43 Zero calibration using filtered data + reset filters,
jony1401 1:b512a405b584 314 0x50 Background calibration using unfiltered data,
jony1401 1:b512a405b584 315 0x51 Background calibration using filtered data,
jony1401 1:b512a405b584 316 0x52 Background calibration using unfiltered data + reset filters,
jony1401 1:b512a405b584 317 0x53 Background calibration using filtered data + reset filters,
jony1401 1:b512a405b584 318 0x70 ABC (based on filtered data),
jony1401 1:b512a405b584 319 0x72 ABC (based on filtered data) + reset filters
jony1401 1:b512a405b584 320
jony1401 1:b512a405b584 321
jony1401 1:b512a405b584 322 --------------------------------------------------------------------------------
jony1401 0:ee3787c8e209 323 --------------------------------------------------------------------------------
jony1401 0:ee3787c8e209 324 CC = Calculation Control, 1 byte
jony1401 0:ee3787c8e209 325 SS = Sensor State, Sensor State, 23 bytes
jony1401 0:ee3787c8e209 326 D = Measured data and Sensor Status, 23 bytes
jony1401 0:ee3787c8e209 327 PP = Host Pressure Value
jony1401 0:ee3787c8e209 328 CRC= 16 bit CRC error check
jony1401 0:ee3787c8e209 329 --------------------------------------------------------------------------------
jony1401 0:ee3787c8e209 330 --------------------------------------------------------------------------------
jony1401 0:ee3787c8e209 331 */
jony1401 0:ee3787c8e209 332