From ea435789dc2fab30ec16fa765a0b6577fe08166a Mon Sep 17 00:00:00 2001
From: GuoWenxue <“guowenxue@gmail.com”>
Date: Tue, 19 Apr 2022 10:06:03 +0800
Subject: [PATCH] update client and socket.c, add DNS support
---
iotd/hal/sht20.c | 496 +++++++++++++++++++++++++++---------------------------
1 files changed, 249 insertions(+), 247 deletions(-)
diff --git a/iotd/hal/sht20.c b/iotd/hal/sht20.c
index d881b43..fed3000 100644
--- a/iotd/hal/sht20.c
+++ b/iotd/hal/sht20.c
@@ -68,57 +68,58 @@
int sht2x_softreset(int fd)
{
- uint8_t buf[4];
+ uint8_t buf[4];
- if( fd<0 )
- {
- log_err("Invalid input arguments\n");
- return -1;
- }
+ if( fd<0 )
+ {
+ log_err("Invalid input arguments\n");
+ return -1;
+ }
- /* software reset SHT2x */
- memset(buf, 0, sizeof(buf));
+ /* software reset SHT2x */
+ memset(buf, 0, sizeof(buf));
- buf[0] = SOFTRESET;
- write(fd, buf, 1);
+ buf[0] = SOFTRESET;
+ write(fd, buf, 1);
- msleep(50);
+ msleep(50);
- return 0;
+ return 0;
}
int sht2x_init(void)
{
-
- if( (s_sht2x_fd=open("/dev/i2c-1", O_RDWR)) < 0)
- {
- log_fatal("i2c device open failed: %s\n", strerror(errno));
+
+ if( (s_sht2x_fd=open("/dev/i2c-1", O_RDWR)) < 0)
+ {
+ log_fatal("i2c device open failed: %s\n", strerror(errno));
return -1;
- }
-
- /* set I2C mode and SHT2x slave address */
- ioctl(s_sht2x_fd, I2C_TENBIT, 0); /* Not 10-bit but 7-bit mode */
- ioctl(s_sht2x_fd, I2C_SLAVE, 0x40); /* set SHT2x slava address 0x40*/
+ }
- if( sht2x_softreset(s_sht2x_fd) < 0 )
- {
- log_err("SHT2x softreset failure\n");
+ /* set I2C mode and SHT2x slave address */
+ ioctl(s_sht2x_fd, I2C_TENBIT, 0); /* Not 10-bit but 7-bit mode */
+ ioctl(s_sht2x_fd, I2C_SLAVE, 0x40); /* set SHT2x slava address 0x40*/
+
+ if( sht2x_softreset(s_sht2x_fd) < 0 )
+ {
+ log_err("SHT2x softreset failure\n");
sht2x_term();
- return -2;
- }
+ return -2;
+ }
- return s_sht2x_fd;
+ log_dbg("SHT2X initialise ok, s_sht2x_fd=%d\n", s_sht2x_fd);
+ return s_sht2x_fd;
}
int sht2x_get_temp_humidity(float *temp, float *rh)
{
- uint8_t buf[4];
+ uint8_t buf[4];
- if( !temp || !rh )
- {
- log_err("Invalid input arguments\n");
- return -1;
- }
+ if( !temp || !rh )
+ {
+ log_err("Invalid input arguments\n");
+ return -1;
+ }
if( s_sht2x_fd < 0 )
{
@@ -129,42 +130,42 @@
}
}
- /* send trigger temperature measure command and read the data */
- memset(buf, 0, sizeof(buf));
- buf[0]=TRIGGER_TEMPERATURE_NO_HOLD;
- write(s_sht2x_fd, buf, 1);
+ /* send trigger temperature measure command and read the data */
+ memset(buf, 0, sizeof(buf));
+ buf[0]=TRIGGER_TEMPERATURE_NO_HOLD;
+ write(s_sht2x_fd, buf, 1);
- msleep(85); /* datasheet: typ=66, max=85 */
+ msleep(85); /* datasheet: typ=66, max=85 */
- memset(buf, 0, sizeof(buf));
- read(s_sht2x_fd, buf, 3);
- //dump_buf("Temperature sample data: ", buf, 3);
- *temp = 175.72 * (((((int) buf[0]) << 8) + buf[1]) / 65536.0) - 46.85;
-
- /* send trigger humidity measure command and read the data */
- memset(buf, 0, sizeof(buf));
- buf[0] = TRIGGER_HUMIDITY_NO_HOLD;
- write(s_sht2x_fd, buf, 1);
+ memset(buf, 0, sizeof(buf));
+ read(s_sht2x_fd, buf, 3);
+ //dump_buf("Temperature sample data: ", buf, 3);
+ *temp = 175.72 * (((((int) buf[0]) << 8) + buf[1]) / 65536.0) - 46.85;
- msleep(29); /* datasheet: typ=22, max=29 */
- memset(buf, 0, sizeof(buf));
+ /* send trigger humidity measure command and read the data */
+ memset(buf, 0, sizeof(buf));
+ buf[0] = TRIGGER_HUMIDITY_NO_HOLD;
+ write(s_sht2x_fd, buf, 1);
- read(s_sht2x_fd, buf, 3);
- //dump_buf("Relative humidity sample data: ", buf, 3);
- *rh = 125 * (((((int) buf[0]) << 8) + buf[1]) / 65536.0) - 6;
+ msleep(29); /* datasheet: typ=22, max=29 */
+ memset(buf, 0, sizeof(buf));
- return 0;
+ read(s_sht2x_fd, buf, 3);
+ //dump_buf("Relative humidity sample data: ", buf, 3);
+ *rh = 125 * (((((int) buf[0]) << 8) + buf[1]) / 65536.0) - 6;
+
+ return 0;
}
int sht2x_get_serialnumber(uint8_t *serialnumber, int size)
{
- uint8_t buf[4];
+ uint8_t buf[4];
- if( !serialnumber || size!=8 )
- {
- log_err("Invalid input arguments\n");
- return -1;
- }
+ if( !serialnumber || size!=8 )
+ {
+ log_err("Invalid input arguments\n");
+ return -1;
+ }
if( s_sht2x_fd < 0 )
{
@@ -175,37 +176,37 @@
}
}
- /* Read SerialNumber from Location 1 */
- memset(buf, 0, sizeof(buf));
- buf[0] = 0xfa; /* command for readout on-chip memory */
- buf[1] = 0x0f; /* on-chip memory address */
- write(s_sht2x_fd, buf, 2);
+ /* Read SerialNumber from Location 1 */
+ memset(buf, 0, sizeof(buf));
+ buf[0] = 0xfa; /* command for readout on-chip memory */
+ buf[1] = 0x0f; /* on-chip memory address */
+ write(s_sht2x_fd, buf, 2);
- memset(buf, 0, sizeof(buf));
- read(s_sht2x_fd, buf, 4);
+ memset(buf, 0, sizeof(buf));
+ read(s_sht2x_fd, buf, 4);
- serialnumber[5]=buf[0]; /* Read SNB_3 */
- serialnumber[4]=buf[1]; /* Read SNB_2 */
- serialnumber[3]=buf[2]; /* Read SNB_1 */
- serialnumber[2]=buf[3]; /* Read SNB_0 */
-
- /* Read SerialNumber from Location 2 */
- memset(buf, 0, sizeof(buf) );
- buf[0]=0xfc; /* command for readout on-chip memory */
- buf[1]=0xc9; /* on-chip memory address */
- write(s_sht2x_fd, buf, 2);
+ serialnumber[5]=buf[0]; /* Read SNB_3 */
+ serialnumber[4]=buf[1]; /* Read SNB_2 */
+ serialnumber[3]=buf[2]; /* Read SNB_1 */
+ serialnumber[2]=buf[3]; /* Read SNB_0 */
- memset(buf, 0, sizeof(buf) );
- read(s_sht2x_fd, buf, 4);
+ /* Read SerialNumber from Location 2 */
+ memset(buf, 0, sizeof(buf) );
+ buf[0]=0xfc; /* command for readout on-chip memory */
+ buf[1]=0xc9; /* on-chip memory address */
+ write(s_sht2x_fd, buf, 2);
- serialnumber[1]=buf[0]; /* Read SNC_1 */
- serialnumber[0]=buf[1]; /* Read SNC_0 */
- serialnumber[7]=buf[2]; /* Read SNA_1 */
- serialnumber[6]=buf[3]; /* Read SNA_0 */
+ memset(buf, 0, sizeof(buf) );
+ read(s_sht2x_fd, buf, 4);
- //dump_buf("SHT2x Serial number: ", serialnumber, 8);
+ serialnumber[1]=buf[0]; /* Read SNC_1 */
+ serialnumber[0]=buf[1]; /* Read SNC_0 */
+ serialnumber[7]=buf[2]; /* Read SNA_1 */
+ serialnumber[6]=buf[3]; /* Read SNA_0 */
- return 0;
+ //dump_buf("SHT2x Serial number: ", serialnumber, 8);
+
+ return 0;
}
#elif (defined I2C_API_IOCTL) /* Use I2C userspace driver read/write API */
@@ -213,67 +214,68 @@
int sht2x_softreset(int fd)
{
struct i2c_msg msg;
- struct i2c_rdwr_ioctl_data sht2x_data;
- uint8_t buf[2];
+ struct i2c_rdwr_ioctl_data sht2x_data;
+ uint8_t buf[2];
- if( fd<0 )
- {
- log_err("Invalid input arguments\n");
- return -1;
- }
+ if( fd<0 )
+ {
+ log_err("Invalid input arguments\n");
+ return -1;
+ }
- msg.addr= 0x40;
- msg.flags=0; //write
- msg.len= 1;
- msg.buf= buf;
- msg.buf[0]=SOFTRESET;
+ msg.addr= 0x40;
+ msg.flags=0; //write
+ msg.len= 1;
+ msg.buf= buf;
+ msg.buf[0]=SOFTRESET;
- sht2x_data.nmsgs= 1;
- sht2x_data.msgs= &msg;
+ sht2x_data.nmsgs= 1;
+ sht2x_data.msgs= &msg;
- if( ioctl(fd, I2C_RDWR, &sht2x_data) < 0 )
- {
- log_err("sht2x I2C_RDWR ioctl failure: %s\n", strerror(errno));
+ if( ioctl(fd, I2C_RDWR, &sht2x_data) < 0 )
+ {
+ log_err("sht2x I2C_RDWR ioctl failure: %s\n", strerror(errno));
sht2x_term();
- return -2;
- }
+ return -2;
+ }
- msleep(50);
+ msleep(50);
- return 0;
+ return 0;
}
int sht2x_init(void)
{
- if( (s_sht2x_fd=open("/dev/i2c-1", O_RDWR)) < 0)
- {
+ if( (s_sht2x_fd=open("/dev/i2c-1", O_RDWR)) < 0)
+ {
log_err("i2c device open failed: %s\n", strerror(errno));
return -1;
- }
+ }
- if( sht2x_softreset(s_sht2x_fd) < 0 )
- {
- log_err("SHT2x softreset failure\n");
+ if( sht2x_softreset(s_sht2x_fd) < 0 )
+ {
+ log_err("SHT2x softreset failure\n");
sht2x_term();
- return -2;
- }
+ return -2;
+ }
+ log_dbg("SHT2X initialise ok, s_sht2x_fd=%d\n", s_sht2x_fd);
return 0;
}
int sht2x_get_serialnumber(uint8_t *serialnumber, int size)
{
struct i2c_msg msgs[2];
- struct i2c_rdwr_ioctl_data sht2x_data;
- uint8_t sbuf[2];
- uint8_t rbuf[4];
+ struct i2c_rdwr_ioctl_data sht2x_data;
+ uint8_t sbuf[2];
+ uint8_t rbuf[4];
- if( !serialnumber || size!=8 )
- {
- log_err("Invalid input arguments\n");
- return -1;
- }
+ if( !serialnumber || size!=8 )
+ {
+ log_err("Invalid input arguments\n");
+ return -1;
+ }
if( s_sht2x_fd < 0 )
{
@@ -284,86 +286,86 @@
}
}
- /*+------------------------------------------+
- *| Read SerialNumber from Location 1 |
- *+------------------------------------------+*/
+ /*+------------------------------------------+
+ *| Read SerialNumber from Location 1 |
+ *+------------------------------------------+*/
- msgs[0].addr= 0x40;
- msgs[0].flags=0; //write
- msgs[0].len= 2;
- msgs[0].buf= sbuf;
- msgs[0].buf[0]=0xfa; /* command for readout on-chip memory */
- msgs[0].buf[1]=0x0f; /* on-chip memory address */
-
- msgs[1].addr=0x40;
- msgs[1].flags=I2C_M_RD; //write
- msgs[1].len= 4;
- msgs[1].buf= rbuf;
+ msgs[0].addr= 0x40;
+ msgs[0].flags=0; //write
+ msgs[0].len= 2;
+ msgs[0].buf= sbuf;
+ msgs[0].buf[0]=0xfa; /* command for readout on-chip memory */
+ msgs[0].buf[1]=0x0f; /* on-chip memory address */
- sht2x_data.nmsgs= 2;
- sht2x_data.msgs= msgs;
+ msgs[1].addr=0x40;
+ msgs[1].flags=I2C_M_RD; //write
+ msgs[1].len= 4;
+ msgs[1].buf= rbuf;
- if( ioctl(s_sht2x_fd, I2C_RDWR, &sht2x_data) < 0 )
- {
- log_err("sht2x I2C_RDWR ioctl failure: %s\n", strerror(errno));
+ sht2x_data.nmsgs= 2;
+ sht2x_data.msgs= msgs;
+
+ if( ioctl(s_sht2x_fd, I2C_RDWR, &sht2x_data) < 0 )
+ {
+ log_err("sht2x I2C_RDWR ioctl failure: %s\n", strerror(errno));
sht2x_term();
- return -2;
- }
-
- serialnumber[5]=rbuf[0]; /* Read SNB_3 */
+ return -2;
+ }
+
+ serialnumber[5]=rbuf[0]; /* Read SNB_3 */
serialnumber[4]=rbuf[1]; /* Read SNB_2 */
serialnumber[3]=rbuf[2]; /* Read SNB_1 */
serialnumber[2]=rbuf[3]; /* Read SNB_0 */
- /*+------------------------------------------+
- *| Read SerialNumber from Location 2 |
- *+------------------------------------------+*/
-
- msgs[0].addr= 0x40;
- msgs[0].flags=0; //write
- msgs[0].len= 2;
- msgs[0].buf= sbuf;
- msgs[0].buf[0]=0xfc; /* command for readout on-chip memory */
- msgs[0].buf[1]=0xc9; /* on-chip memory address */
-
- msgs[1].addr=0x40;
- msgs[1].flags=I2C_M_RD; //write
- msgs[1].len= 4;
- msgs[1].buf= rbuf;
+ /*+------------------------------------------+
+ *| Read SerialNumber from Location 2 |
+ *+------------------------------------------+*/
- sht2x_data.nmsgs= 2;
- sht2x_data.msgs= msgs;
+ msgs[0].addr= 0x40;
+ msgs[0].flags=0; //write
+ msgs[0].len= 2;
+ msgs[0].buf= sbuf;
+ msgs[0].buf[0]=0xfc; /* command for readout on-chip memory */
+ msgs[0].buf[1]=0xc9; /* on-chip memory address */
- if( ioctl(s_sht2x_fd, I2C_RDWR, &sht2x_data) < 0 )
- {
- log_err("sht2x I2C_RDWR ioctl failure: %s\n", strerror(errno));
+ msgs[1].addr=0x40;
+ msgs[1].flags=I2C_M_RD; //write
+ msgs[1].len= 4;
+ msgs[1].buf= rbuf;
+
+ sht2x_data.nmsgs= 2;
+ sht2x_data.msgs= msgs;
+
+ if( ioctl(s_sht2x_fd, I2C_RDWR, &sht2x_data) < 0 )
+ {
+ log_err("sht2x I2C_RDWR ioctl failure: %s\n", strerror(errno));
sht2x_term();
- return -2;
- }
-
- serialnumber[1]=rbuf[0]; /* Read SNC_1 */
- serialnumber[0]=rbuf[1]; /* Read SNC_0 */
- serialnumber[7]=rbuf[2]; /* Read SNA_1 */
- serialnumber[6]=rbuf[3]; /* Read SNA_0 */
+ return -2;
+ }
- //dump_buf("SHT2x Serial number: ", serialnumber, 8);
+ serialnumber[1]=rbuf[0]; /* Read SNC_1 */
+ serialnumber[0]=rbuf[1]; /* Read SNC_0 */
+ serialnumber[7]=rbuf[2]; /* Read SNA_1 */
+ serialnumber[6]=rbuf[3]; /* Read SNA_0 */
- return 0;
+ //dump_buf("SHT2x Serial number: ", serialnumber, 8);
+
+ return 0;
}
int sht2x_get_temp_humidity(float *temp, float *rh)
{
struct i2c_msg msg;
- struct i2c_rdwr_ioctl_data sht2x_data;
- uint8_t buf[4];
+ struct i2c_rdwr_ioctl_data sht2x_data;
+ uint8_t buf[4];
- if( !temp || !rh )
- {
- log_err("Invalid input arguments\n");
- return -1;
- }
+ if( !temp || !rh )
+ {
+ log_err("Invalid input arguments\n");
+ return -1;
+ }
if( s_sht2x_fd < 0 )
{
@@ -373,91 +375,91 @@
return -2;
}
}
-
- /*+------------------------------------------+
- *| measure and get temperature |
- *+------------------------------------------+*/
- msg.addr= 0x40;
- msg.flags=0; //write
- msg.len= 1;
- msg.buf= buf;
- msg.buf[0]=TRIGGER_TEMPERATURE_NO_HOLD; /* trigger temperature without hold I2C bus */
+ /*+------------------------------------------+
+ *| measure and get temperature |
+ *+------------------------------------------+*/
- sht2x_data.nmsgs= 1;
- sht2x_data.msgs= &msg;
+ msg.addr= 0x40;
+ msg.flags=0; //write
+ msg.len= 1;
+ msg.buf= buf;
+ msg.buf[0]=TRIGGER_TEMPERATURE_NO_HOLD; /* trigger temperature without hold I2C bus */
- if( ioctl(s_sht2x_fd, I2C_RDWR, &sht2x_data) < 0 )
- {
- log_err("sht2x I2C_RDWR ioctl failure: %s\n", strerror(errno));
+ sht2x_data.nmsgs= 1;
+ sht2x_data.msgs= &msg;
+
+ if( ioctl(s_sht2x_fd, I2C_RDWR, &sht2x_data) < 0 )
+ {
+ log_err("sht2x I2C_RDWR ioctl failure: %s\n", strerror(errno));
sht2x_term();
- return -2;
- }
+ return -2;
+ }
- msleep(85);
-
- memset(buf, 0, sizeof(buf));
- msg.addr=0x40;
- msg.flags=I2C_M_RD; //write
- msg.len= 3;
- msg.buf= buf;
+ msleep(85);
- sht2x_data.nmsgs= 1;
- sht2x_data.msgs= &msg;
+ memset(buf, 0, sizeof(buf));
+ msg.addr=0x40;
+ msg.flags=I2C_M_RD; //write
+ msg.len= 3;
+ msg.buf= buf;
- if( ioctl(s_sht2x_fd, I2C_RDWR, &sht2x_data) < 0 )
- {
- log_err("sht2x I2C_RDWR ioctl failure: %s\n", strerror(errno));
+ sht2x_data.nmsgs= 1;
+ sht2x_data.msgs= &msg;
+
+ if( ioctl(s_sht2x_fd, I2C_RDWR, &sht2x_data) < 0 )
+ {
+ log_err("sht2x I2C_RDWR ioctl failure: %s\n", strerror(errno));
sht2x_term();
- return -2;
- }
-
- //dump_buf("Temperature sample data: ", buf, 3);
- *temp = 175.72 * (((((int) buf[0]) << 8) + buf[1]) / 65536.0) - 46.85;
+ return -2;
+ }
-
- /*+------------------------------------------+
- *| measure and get relative humidity |
- *+------------------------------------------+*/
+ //dump_buf("Temperature sample data: ", buf, 3);
+ *temp = 175.72 * (((((int) buf[0]) << 8) + buf[1]) / 65536.0) - 46.85;
- msg.addr= 0x40;
- msg.flags=0; //write
- msg.len= 1;
- msg.buf= buf;
- msg.buf[0]=TRIGGER_HUMIDITY_NO_HOLD; /* trigger humidity without hold I2C bus */
- sht2x_data.nmsgs= 1;
- sht2x_data.msgs= &msg;
+ /*+------------------------------------------+
+ *| measure and get relative humidity |
+ *+------------------------------------------+*/
- if( ioctl(s_sht2x_fd, I2C_RDWR, &sht2x_data) < 0 )
- {
- log_err("sht2x I2C_RDWR ioctl failure: %s\n", strerror(errno));
+ msg.addr= 0x40;
+ msg.flags=0; //write
+ msg.len= 1;
+ msg.buf= buf;
+ msg.buf[0]=TRIGGER_HUMIDITY_NO_HOLD; /* trigger humidity without hold I2C bus */
+
+ sht2x_data.nmsgs= 1;
+ sht2x_data.msgs= &msg;
+
+ if( ioctl(s_sht2x_fd, I2C_RDWR, &sht2x_data) < 0 )
+ {
+ log_err("sht2x I2C_RDWR ioctl failure: %s\n", strerror(errno));
sht2x_term();
- return -2;
- }
+ return -2;
+ }
- msleep(29);
-
- memset(buf, 0, sizeof(buf));
- msg.addr=0x40;
- msg.flags=I2C_M_RD; //write
- msg.len= 3;
- msg.buf= buf;
+ msleep(29);
- sht2x_data.nmsgs= 1;
- sht2x_data.msgs= &msg;
+ memset(buf, 0, sizeof(buf));
+ msg.addr=0x40;
+ msg.flags=I2C_M_RD; //write
+ msg.len= 3;
+ msg.buf= buf;
- if( ioctl(s_sht2x_fd, I2C_RDWR, &sht2x_data) < 0 )
- {
- log_err("sht2x I2C_RDWR ioctl failure: %s\n", strerror(errno));
+ sht2x_data.nmsgs= 1;
+ sht2x_data.msgs= &msg;
+
+ if( ioctl(s_sht2x_fd, I2C_RDWR, &sht2x_data) < 0 )
+ {
+ log_err("sht2x I2C_RDWR ioctl failure: %s\n", strerror(errno));
sht2x_term();
- return -2;
- }
+ return -2;
+ }
- //dump_buf("Relative humidity sample data: ", buf, 3);
- *rh = 125 * (((((int) buf[0]) << 8) + buf[1]) / 65536.0) - 6;
-
- return 0;
+ //dump_buf("Relative humidity sample data: ", buf, 3);
+ *rh = 125 * (((((int) buf[0]) << 8) + buf[1]) / 65536.0) - 6;
+
+ return 0;
}
#endif
--
Gitblit v1.9.1