LibDriver STCC4
Loading...
Searching...
No Matches
driver_stcc4_read_test.c
Go to the documentation of this file.
1
36
38
39static stcc4_handle_t gs_handle;
40
50uint8_t stcc4_read_test(stcc4_address_t address, uint32_t times)
51{
52 uint8_t res;
53 uint32_t i;
54 stcc4_info_t info;
55
56 /* link functions */
64
65 /* stcc4 info */
66 res = stcc4_info(&info);
67 if (res != 0)
68 {
69 stcc4_interface_debug_print("stcc4: get info failed.\n");
70
71 return 1;
72 }
73 else
74 {
75 /* print chip information */
76 stcc4_interface_debug_print("stcc4: chip is %s.\n", info.chip_name);
77 stcc4_interface_debug_print("stcc4: manufacturer is %s.\n", info.manufacturer_name);
78 stcc4_interface_debug_print("stcc4: interface is %s.\n", info.interface);
79 stcc4_interface_debug_print("stcc4: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
80 stcc4_interface_debug_print("stcc4: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
81 stcc4_interface_debug_print("stcc4: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
82 stcc4_interface_debug_print("stcc4: max current is %0.2fmA.\n", info.max_current_ma);
83 stcc4_interface_debug_print("stcc4: max temperature is %0.1fC.\n", info.temperature_max);
84 stcc4_interface_debug_print("stcc4: min temperature is %0.1fC.\n", info.temperature_min);
85 }
86
87 /* start read test */
88 stcc4_interface_debug_print("stcc4: start read test.\n");
89
90 /* set address pin */
91 res = stcc4_set_address_pin(&gs_handle, address);
92 if (res != 0)
93 {
94 stcc4_interface_debug_print("stcc4: set address pin failed.\n");
95
96 return 1;
97 }
98
99 /* stcc4 init */
100 res = stcc4_init(&gs_handle);
101 if (res != 0)
102 {
103 stcc4_interface_debug_print("stcc4: init failed.\n");
104
105 return 1;
106 }
107
108 /* continuous read test */
109 stcc4_interface_debug_print("stcc4: continuous read test.\n");
110
111 /* start continuous measurement */
112 res = stcc4_start_continuous_measurement(&gs_handle);
113 if (res != 0)
114 {
115 stcc4_interface_debug_print("stcc4: start continuous measurement failed.\n");
116 (void)stcc4_deinit(&gs_handle);
117
118 return 1;
119 }
120
121 /* loop */
122 for (i = 0; i < times; i++)
123 {
124 int16_t co2_raw;
125 int16_t co2_ppm;
126 uint16_t temperature_raw;
127 float temperature_s;
128 uint16_t humidity_raw;
129 float humidity_s;
130 uint16_t sensor_status;
131
132 /* delay 1000ms */
134
135 /* read data */
136 res = stcc4_read(&gs_handle, &co2_raw, &co2_ppm,
137 &temperature_raw, &temperature_s,
138 &humidity_raw, &humidity_s, &sensor_status);
139 if (res != 0)
140 {
141 stcc4_interface_debug_print("stcc4: read failed.\n");
142 (void)stcc4_deinit(&gs_handle);
143
144 return 1;
145 }
146
147 /* output */
148 stcc4_interface_debug_print("stcc4: co2 is %02dppm.\n", co2_ppm);
149 stcc4_interface_debug_print("stcc4: temperature is %0.2fC.\n", temperature_s);
150 stcc4_interface_debug_print("stcc4: humidity is %0.2f%%.\n", humidity_s);
151 stcc4_interface_debug_print("stcc4: sensor status is 0x%04X.\n", sensor_status);
152 }
153
154 /* stop continuous measurement */
155 res = stcc4_stop_continuous_measurement(&gs_handle);
156 if (res != 0)
157 {
158 stcc4_interface_debug_print("stcc4: stop continuous measurement failed.\n");
159 (void)stcc4_deinit(&gs_handle);
160
161 return 1;
162 }
163
164 /* measure single shot test */
165 stcc4_interface_debug_print("stcc4: measure single shot test.\n");
166
167 /* loop */
168 for (i = 0; i < times; i++)
169 {
170 int16_t co2_raw;
171 int16_t co2_ppm;
172 uint16_t temperature_raw;
173 float temperature_s;
174 uint16_t humidity_raw;
175 float humidity_s;
176 uint16_t sensor_status;
177
178 /* delay 1000ms */
180
181 /* measure single shot */
182 res = stcc4_measure_single_shot(&gs_handle);
183 if (res != 0)
184 {
185 stcc4_interface_debug_print("stcc4: measure single shot failed.\n");
186 (void)stcc4_deinit(&gs_handle);
187
188 return 1;
189 }
190
191 /* read data */
192 res = stcc4_read(&gs_handle, &co2_raw, &co2_ppm,
193 &temperature_raw, &temperature_s,
194 &humidity_raw, &humidity_s, &sensor_status);
195 if (res != 0)
196 {
197 stcc4_interface_debug_print("stcc4: read failed.\n");
198 (void)stcc4_deinit(&gs_handle);
199
200 return 1;
201 }
202
203 /* output */
204 stcc4_interface_debug_print("stcc4: co2 is %02dppm.\n", co2_ppm);
205 stcc4_interface_debug_print("stcc4: temperature is %0.2fC.\n", temperature_s);
206 stcc4_interface_debug_print("stcc4: humidity is %0.2f%%.\n", humidity_s);
207 stcc4_interface_debug_print("stcc4: sensor status is 0x%04X.\n", sensor_status);
208 }
209
210 /* finish read test */
211 stcc4_interface_debug_print("stcc4: finish read test.\n");
212 (void)stcc4_deinit(&gs_handle);
213
214 return 0;
215}
driver stcc4 read test header file
uint8_t stcc4_stop_continuous_measurement(stcc4_handle_t *handle)
stop continuous measurement
uint8_t stcc4_deinit(stcc4_handle_t *handle)
close the chip
uint8_t stcc4_info(stcc4_info_t *info)
get chip information
struct stcc4_handle_s stcc4_handle_t
stcc4 handle structure definition
stcc4_address_t
stcc4 address enumeration definition
uint8_t stcc4_measure_single_shot(stcc4_handle_t *handle)
measure single shot
uint8_t stcc4_init(stcc4_handle_t *handle)
initialize the chip
uint8_t stcc4_set_address_pin(stcc4_handle_t *handle, stcc4_address_t address)
set address pin
uint8_t stcc4_read(stcc4_handle_t *handle, int16_t *co2_raw, int16_t *co2_ppm, uint16_t *temperature_raw, float *temperature_s, uint16_t *humidity_raw, float *humidity_s, uint16_t *sensor_status)
read data
uint8_t stcc4_start_continuous_measurement(stcc4_handle_t *handle)
start continuous measurement
struct stcc4_info_s stcc4_info_t
stcc4 information structure definition
uint8_t stcc4_interface_iic_write_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus write command
void stcc4_interface_delay_ms(uint32_t ms)
interface delay ms
uint8_t stcc4_interface_iic_init(void)
interface iic bus init
uint8_t stcc4_interface_iic_deinit(void)
interface iic bus deinit
uint8_t stcc4_interface_iic_read_cmd(uint8_t addr, uint8_t *buf, uint16_t len)
interface iic bus read command
void stcc4_interface_debug_print(const char *const fmt,...)
interface print format data
uint8_t stcc4_read_test(stcc4_address_t address, uint32_t times)
read test
float temperature_max
float supply_voltage_max_v
uint32_t driver_version
float temperature_min
float max_current_ma
char manufacturer_name[32]
float supply_voltage_min_v
char interface[8]
char chip_name[32]