@@ -1193,6 +1193,34 @@ int getDigitalRead(const uint8_t command[], uint8_t response[])
1193
1193
return 6 ;
1194
1194
}
1195
1195
1196
+ extern " C" {
1197
+ #include < driver/adc.h>
1198
+ }
1199
+
1200
+ int getAnalogRead (const uint8_t command[], uint8_t response[])
1201
+ {
1202
+ uint8_t pin = command[4 ];
1203
+
1204
+ /* Power up the ADC. */
1205
+ adc_power_on ();
1206
+ /* Initialize the ADC. */
1207
+ adc_gpio_init (ADC_UNIT_1, (adc_channel_t )pin);
1208
+ /* Set maximum analog bit-width = 12 bit. */
1209
+ adc1_config_width (ADC_WIDTH_BIT_12);
1210
+ /* Configure channel attenuation. */
1211
+ adc1_config_channel_atten ((adc1_channel_t )pin, ADC_ATTEN_DB_0);
1212
+ /* Read the analog value from the pin. */
1213
+ uint16_t const adc_raw = adc1_get_raw ((adc1_channel_t )pin);
1214
+ /* Power down the ADC. */
1215
+ adc_power_off ();
1216
+
1217
+ response[2 ] = 1 ; // number of parameters
1218
+ response[3 ] = sizeof (adc_raw); // parameter 1 length = 2 bytes
1219
+ memcpy (&response[4 ], &adc_raw, sizeof (adc_raw));
1220
+
1221
+ return 7 ;
1222
+ }
1223
+
1196
1224
int writeFile (const uint8_t command[], uint8_t response[]) {
1197
1225
char filename[32 + 1 ];
1198
1226
size_t len;
@@ -1579,7 +1607,7 @@ const CommandHandlerType commandHandlers[] = {
1579
1607
setEnt, NULL , NULL , NULL , sendDataTcp, getDataBufTcp, insertDataBuf, NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL ,
1580
1608
1581
1609
// 0x50 -> 0x5f
1582
- setPinMode, setDigitalWrite, setAnalogWrite, getDigitalRead, NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL ,
1610
+ setPinMode, setDigitalWrite, setAnalogWrite, getDigitalRead, getAnalogRead , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL ,
1583
1611
1584
1612
// 0x60 -> 0x6f
1585
1613
writeFile, readFile, deleteFile, existsFile, downloadFile, applyOTA, renameFile, downloadOTA, NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL ,
0 commit comments