/* DeskLock — living-room face and voice for the Tatlock butler. * * Boot: display + face -> audio (gong) -> Wi-Fi (C6/ESP-Hosted) -> gateway WS. * Interaction (phase 2): touch-to-talk — tap to speak, tap again to finish. */ #include "esp_log.h" #include "bsp/esp-bsp.h" #include "desklock.h" static const char *TAG = "desklock"; static bool s_talking; void app_on_touch(void) { face_activity(); if (!gw_connected()) { return; } if (!s_talking) { if (audio_is_playing() || face_get() == FACE_EFFORT) { return; /* barge-in is phase 4 */ } s_talking = true; gw_send_text("{\"type\":\"utterance_start\"}"); audio_capture_start(); face_set(FACE_LISTENING); ESP_LOGI(TAG, "listening…"); } else { s_talking = false; audio_capture_stop(); gw_send_text("{\"type\":\"utterance_end\"}"); face_set(FACE_PENSIVE); ESP_LOGI(TAG, "utterance sent"); } } void app_on_playback_done(void) { face_set(FACE_IDLE); } void app_main(void) { ESP_LOGI(TAG, "DeskLock starting"); bsp_display_start(); bsp_display_backlight_on(); face_init(); audio_init(); audio_play_gong(); net_start(); ESP_LOGI(TAG, "DeskLock up"); }