#include #include #include #include #include "driver/gpio.h" #include "drivers/fonts.h" #include "drivers/i2c.h" #include "drivers/sim800.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "drivers/battery.h" #include "drivers/pins.h" #include "drivers/bmi270.h" #include "drivers/es8311.h" #include "drivers/i2s.h" #include "drivers/irled.h" #include "drivers/sdcard.h" #include "drivers/st7789.h" #include "drivers/tca8418.h" #include "drivers/ws2812.h" #include "hal/gpio_types.h" #include "projdefs.h" char linebuf[1024]; char *linebufPtr = linebuf; void app_main(void) { memset(linebuf, 0, sizeof(linebuf)); printf("boot\n"); set_pin_dirs(); battery_start_task(); i2c_init(BUS_I2C_SDA, BUS_I2C_SCL); ws2812_init(); sim800_uart_init(); xTaskCreate(init_modem, "init_modem", 4096, NULL, 10, NULL); audio_i2s_init(); vTaskDelay(pdMS_TO_TICKS(10)); es8311_init(); tca8418_init(); if (!bmi270_init()) { printf("BMI Init failed\n"); } ir_pwm_init(); ir_carrier_off(); initSD(); st7789_init(); printf("init done"); ws2812_send_rgb(255, 255, 255); /* static int16_t micbuf[512]; audio_read(micbuf, 512); audio_write(micbuf, 512); */ while (1) { // keyboard uint8_t key; uint8_t pressed; char buf[256]; st7789_fill_rect(1, 1, LCD_WIDTH - 2, LCD_HEIGHT - 2, 0x0000); st7789_draw_string(10, 10, "CARDPUTER TEST", 0xFFFF, 0x0000, false, font5x7); while (tca8418_read(&key, &pressed)) { char c = getKeyboardChar(key); if (!pressed) { if (isprint(c)) { *(linebufPtr++) = c; } else { switch (c) { case '\n': sim800_tcp_send(linebuf, linebufPtr - linebuf); linebufPtr = linebuf; memset(linebuf, 0, sizeof(linebuf)); break; case '\b': if (linebufPtr > linebuf) { *(linebufPtr--) = 0; } } } if (linebufPtr > linebuf + 1023) { linebufPtr = linebuf + 1023; } } /* snprintf(buf, sizeof(buf), "key=%c %s %d %s", getKeyboardChar(key), getKeyboardKeyName(key), key, pressed ? "pressed" : "released"); printf("%s\n", buf); */ // audio_beep(); } st7789_draw_string(30, 30, linebuf, 0x07E0, 0x0000, true, fontHitachi); bmi270_data_t bmiData; if (!bmi270_read(&bmiData)) { printf("BMI read failed\n"); } else { snprintf(buf, sizeof(buf), "acc %f %f %f\ngyro %f %f %f\n", bmiData.ax, bmiData.ay, bmiData.az, bmiData.gx, bmiData.gy, bmiData.gz); st7789_draw_string(30, 60, buf, 0x07E0, 0x0000, true, fontHitachi); } snprintf(buf, sizeof(buf), "BAT: %d%%(%.3fV)", getBatteryPercentage(), getBatteryVoltage()); st7789_draw_string(140, 10, buf, 0x07E0, 0x0000, true, fontHitachi); st7789_draw_string(30, 90, linebufIn, 0x07E0, 0x0000, true, fontHitachi); st7789_flush(); vTaskDelay(pdMS_TO_TICKS(20)); // 50 fps max } }