INF2004_Project/frtos/frontend/ssi.h

57 lines
1.3 KiB
C

#include "lwip/apps/httpd.h"
#include "pico/cyw43_arch.h"
#include "hardware/adc.h"
#include "pico/stdlib.h"
// SSI tags - tag length limited to 8 bytes by default
const char * ssi_tags[] = {"speed","barcode","pid","orient"};
u16_t ssi_handler(int iIndex, char *pcInsert, int iInsertLen) {
size_t printed;
switch (iIndex) {
case 0: // Speed
{
// call getSpeed() function
const float Speed = adc_read() * 3.3f / (1 << 12);
printed = snprintf(pcInsert, iInsertLen, "%f ",Speed);
}
break;
case 1: // barcode
{
// call getBarcodeOutput() function
const char* barC = "36" ;
printed = snprintf(pcInsert, iInsertLen, "%s", barC);
}
break;
case 2: //PID
{
// whatever to display for PID
const char* PID = "54" ;
printed = snprintf(pcInsert, iInsertLen, "%s", PID);
}
break;
case 3: //Orientation
{
// call getOrientation() function
const char* orien = "South" ;
printed = snprintf(pcInsert, iInsertLen, "%s", orien);
}
break;
default:
printed = 0;
break;
}
return (u16_t)printed;
}
// Initialise the SSI handler
void ssi_init() {
// Initialise ADC (internal pin)
adc_init();
adc_set_temp_sensor_enabled(true);
adc_select_input(4);
http_set_ssi_handler(ssi_handler, ssi_tags, LWIP_ARRAYSIZE(ssi_tags));
}