@@ -87,7 +87,7 @@ esp_err_t SDPSensor::initI2C(int pinSDA, int pinSCL) {
8787 i2c_master_rx_buf_disable, i2c_master_tx_buf_disable,
8888 intr_flag_disable);
8989 if (err != ESP_OK) {
90- ESP_LOGE (TAG_SDPSENSOR, " Could not initialize the I2C: %s" , esp_err_to_name (err));
90+ ESP_LOGE (TAG_SDPSENSOR, " Failed to initialize the I2C: %s" , esp_err_to_name (err));
9191 return err;
9292 }
9393 ESP_LOGI (TAG_SDPSENSOR, " I2C%d line initialized" , i2c_port);
@@ -97,9 +97,7 @@ esp_err_t SDPSensor::initI2C(int pinSDA, int pinSCL) {
9797
9898
9999void logInitFailed (esp_err_t err) {
100- ESP_LOGE (TAG_SDPSENSOR,
101- " Could not initialize and setup the SDP sensor: %s" ,
102- esp_err_to_name (err));
100+ ESP_LOGE (TAG_SDPSENSOR, " SDPSensor::begin failed: %s" , esp_err_to_name (err));
103101}
104102
105103
@@ -129,7 +127,7 @@ esp_err_t SDPSensor::begin() {
129127 /*
130128 Read product id and serial number.
131129 Data Format:
132- | Byte | 0 | 1 | 2 | 3 | 4 | 5 | 6...18 |
130+ | Byte | 0 | 1 | 2 | 3 | 4 | 5 | 6...17 |
133131 | Value | pid1 |CRC| pid2 |CRC| serial |
134132 */
135133 err = i2c_master_read_from_device (i2c_port, i2c_addr, read_buffer, 18 , ticks_to_wait_long);
@@ -141,6 +139,14 @@ esp_err_t SDPSensor::begin() {
141139 const uint32_t pid = (read_buffer[0 ] << 24 ) | (read_buffer[1 ] << 16 )
142140 | (read_buffer[3 ] << 8 ) | (read_buffer[4 ] << 0 );
143141
142+ uint64_t serial_num = 0 ;
143+ uint64_t *pserial = &serial_num;
144+ for (int i = 6 ; i < 18 ; i++) {
145+ if ((i + 1 ) % 3 == 0 ) continue ; // CRC
146+ *pserial <<= 8 ;
147+ *pserial |= (uint64_t ) read_buffer[i];
148+ }
149+
144150 uint32_t model_number, range_pa;
145151 switch (pid & 0xFFFFFF00 ) {
146152 case SPD31_500_PID:
@@ -177,7 +183,7 @@ esp_err_t SDPSensor::begin() {
177183 break ;
178184 }
179185
180- ESP_LOGI (TAG_SDPSENSOR, " Initialized SDP%d %dPa sensor (PID=0x%08X)" , model_number, range_pa, pid);
186+ ESP_LOGI (TAG_SDPSENSOR, " Initialized SDP%d %dPa sensor (PID=0x%08X), serial=0x%016llX " , model_number, range_pa, pid, serial_num );
181187
182188 err = i2c_master_write_to_device (i2c_port, i2c_addr, cmd_measure, SDPSENSOR_I2C_CMD_LEN, ticks_to_wait_long);
183189 if (err != ESP_OK) {
0 commit comments