#include "protocol.h" #include #define TAG "Protocol" void Protocol::OnIncomingJson(std::function callback) { on_incoming_json_ = callback; } void Protocol::OnIncomingAudio(std::function&& data)> callback) { on_incoming_audio_ = callback; } void Protocol::OnAudioChannelOpened(std::function callback) { on_audio_channel_opened_ = callback; } void Protocol::OnAudioChannelClosed(std::function callback) { on_audio_channel_closed_ = callback; } void Protocol::OnNetworkError(std::function callback) { on_network_error_ = callback; } void Protocol::SendAbortSpeaking(AbortReason reason) { std::string message = "{\"session_id\":\"" + session_id_ + "\",\"type\":\"abort\""; if (reason == kAbortReasonWakeWordDetected) { message += ",\"reason\":\"wake_word_detected\""; } message += "}"; SendText(message); } void Protocol::SendWakeWordDetected(const std::string& wake_word) { std::string json = "{\"session_id\":\"" + session_id_ + "\",\"type\":\"listen\",\"state\":\"detect\",\"text\":\"" + wake_word + "\"}"; SendText(json); } void Protocol::SendStartListening(ListeningMode mode) { std::string message = "{\"session_id\":\"" + session_id_ + "\""; message += ",\"type\":\"listen\",\"state\":\"start\""; if (mode == kListeningModeAlwaysOn) { message += ",\"mode\":\"realtime\""; } else if (mode == kListeningModeAutoStop) { message += ",\"mode\":\"auto\""; } else { message += ",\"mode\":\"manual\""; } message += "}"; SendText(message); } void Protocol::SendStopListening() { std::string message = "{\"session_id\":\"" + session_id_ + "\",\"type\":\"listen\",\"state\":\"stop\"}"; SendText(message); } void Protocol::SendIotDescriptors(const std::string& descriptors) { std::string message = "{\"session_id\":\"" + session_id_ + "\",\"type\":\"iot\",\"descriptors\":" + descriptors + "}"; SendText(message); } void Protocol::SendIotStates(const std::string& states) { std::string message = "{\"session_id\":\"" + session_id_ + "\",\"type\":\"iot\",\"states\":" + states + "}"; SendText(message); }