藥盒基本概述請參考上一篇文章
源碼解析
主函數部分___main/main.c
●初始化 NVS:初始化非易失性存儲(NVS),如果需要擦除和重新初始化 NVS,會進行相應處理。
●檢查百度 API 密鑰:調用 baidu_api_key_check函數檢查是否配置了百度 API 密鑰。
●初始化 I2C:初始化 I2C 總線,用于觸摸和音頻設備。
●啟動顯示和 LVGL:啟動顯示并設置默認亮度。
●顯示用戶界面:調用 app_lvgl_display函數顯示用戶界面。
●初始化 RainMaker:啟動 RainMaker 服務,并等待其連接。
●初始化驅動和其他組件:初始化驅動、語音識別、文本到語音轉換和 UVC 攝像頭。
●輸出剩余內存:輸出啟動后的剩余內存。
●主循環:進入一個無限循環,每秒延遲一次;等待用戶操作。
主要功能模塊
LVGL___main/ui/ui.c
從主函數的 app_lvgl_display()調用,ui.c 用于管理多個屏幕和控件的初始化和事件處理。
屏幕初始化函數,這個函數用于初始化所有屏幕,并設置默認的顯示主題。最后,它將ui_Screen1作為初始屏幕加載。
屏幕和控件的初始化函數,這些函數用于初始化各個屏幕及其上的控件。
屏幕事件處理函數,這些函數用于處理用戶在各個屏幕上的操作事件,如手勢和按鈕點擊。
事件處理函數實現,這些函數根據事件類型和手勢方向來切換屏幕或執行其他操作。
UVC攝像頭___main/app/app_uvc_camera.c
從主函數的 app_uvc_camera_init()調用,使用了樂鑫的 USB 流媒體庫,能夠初始化攝像頭、處理攝像頭幀數據,并提供掛起和恢復流媒體的功能。
掛起和恢復UVC流媒體函數,app_uvc_suspend函數調用usb_streaming_control函數掛起流媒體,而app_uvc_resume函數恢復流媒體。
獲取當前幀數據函數,返回當前幀數據的指針。
初始化UVC攝像頭
初始化UVC攝像頭函數,包括以下步驟:
1.分配內存:
○為USB傳輸緩沖區分配雙緩沖區xfer_buffer_a和xfer_buffer_b。
○為幀緩沖區分配內存frame_buffer。
2.配置UVC功能:
○設置UVC配置,包括幀寬度、高度、幀間隔、傳輸緩沖區大小、幀緩沖區和回調函數。
3.配置UVC流媒體:
○調用uvc_streaming_config函數配置UVC流媒體,如果配置失敗,記錄錯誤日志。
4.啟動USB流媒體:
○調用usb_streaming_start函數啟動USB流媒體。
ESP_SR___main/app/app_sr.c
從主函數的 app_sr_start()調用,app_sr.c 是基于 FreeRtos的語音識別應用,能夠檢測喚醒詞和語音命令,并將結果發送到隊列進行處理。
應用啟動函數,初始化語音識別系統,包括創建結果隊列、加載模型、配置AFE和多網絡接口,并創建音頻饋送任務、音頻檢測任務和語音識別處理任務。
音頻饋送任務,從麥克風讀取音頻數據,并將其饋送到AFE模塊進行處理。
音頻檢測任務,檢測喚醒詞和語音命令,并將結果發送到隊列進行處理。
重置命令列表函數,用于重置語音命令列表。
TTS___main/app/app_sr_tts.c
從主函數的 app_tts_init()調用,app_sr_tts.c 實現了一個文本到語音(TTS)轉換的應用,能夠初始化TTS系統并播放給定的文本。
TTS初始化
TTS初始化函數,初始化TTS系統,包括以下步驟:
1.查找語音數據分區:
○使用esp_partition_find_first函數查找名為"voice_data"的分區。
○如果找不到分區,記錄錯誤日志并返回錯誤。
2.映射語音數據分區:
○使用esp_partition_mmap函數將分區映射到內存。
○如果映射失敗,記錄錯誤日志并返回錯誤。
3.初始化語音設置:
○使用esp_tts_voice_set_init函數初始化語音設置。
○創建TTS句柄,如果創建失敗,記錄錯誤日志并返回錯誤。
4.初始化揚聲器編碼器設備:
○使用bsp_audio_codec_speaker_init函數初始化揚聲器編碼器設備。
○設置默認音量。
TTS播放函數
1.打開揚聲器設備:
○設置采樣率、通道數和位深度。
○使用esp_codec_dev_open函數打開揚聲器設備。
2.播放提示文本:
○記錄要播放的文本。
○使用esp_tts_parse_chinese函數解析中文文本。
○使用esp_tts_stream_play函數獲取PCM數據,并使用esp_codec_dev_write函數將數據寫入揚聲器設備。
○循環播放直到所有數據播放完畢。
3.關閉揚聲器設備并重置TTS流:
○使用esp_codec_dev_close函數關閉揚聲器設備。
○使用esp_tts_stream_reset函數重置TTS流。
Rainmaker___main/rmker/rmker.c
從主函數的 app_rmaker_start()調用,rmker.c 主要功能是通過 Wi-Fi 連接到 RainMaker 云平臺,并管理藥盒和心率檢測設備。
啟動RainMaker任務
啟動 RainMaker 任務,創建并啟動 RainMaker 任務。
獲取和設置藥盒狀態參數,提供了獲取和設置藥盒狀態參數的函數。
更新和報告藥盒和心率數據,提供了更新和報告藥盒和心率數據的函數。
重置 Wi-Fi,提供了重置 Wi-Fi 的函數。
處理來自 RainMaker 云的命令,處理來自 RainMaker 云的命令,根據命令執行相應的操作,如打開/關閉藥盒、通知用戶等。
事件處理函數,處理 RainMaker 事件,如連接和斷開連接,并根據事件更新顯示屏。
創建藥盒和心率檢測設備,創建藥盒和心率檢測設備,并添加相應的參數和回調函數。
RainMaker 主任務,初始化網絡和 RainMaker 節點,創建設備,啟用時區和調度服務,注冊事件處理函數,啟動 RainMaker 代理,并啟動 Wi-Fi。
-
ESP
+關注
關注
0文章
183瀏覽量
33950 -
源碼
+關注
關注
8文章
641瀏覽量
29213 -
函數
+關注
關注
3文章
4331瀏覽量
62618
發布評論請先 登錄
相關推薦
評論