From 17164c722e59f6853f48a396a1e48be79d94106c Mon Sep 17 00:00:00 2001 From: Th3maz1ng Date: Sun, 14 May 2023 22:14:38 +0200 Subject: [PATCH] Integrated the music player screen to the watch's firmware + minor other things --- src/W800_SDK_v1.00.10/app/gfx/gfx_task.c | 34 ++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/src/W800_SDK_v1.00.10/app/gfx/gfx_task.c b/src/W800_SDK_v1.00.10/app/gfx/gfx_task.c index 017f0f4..fb43715 100644 --- a/src/W800_SDK_v1.00.10/app/gfx/gfx_task.c +++ b/src/W800_SDK_v1.00.10/app/gfx/gfx_task.c @@ -11,6 +11,7 @@ #include "menu_screen.h" #include "compass_screen.h" #include "find_my_phone_screen.h" +#include "music_player_screen.h" #include "settings_screen.h" #include "watch_peripherals.h" #include "watch_settings.h" @@ -36,6 +37,8 @@ WatchFace_t watchFace; MenuScreen_t menuScreen; CompassScreen_t compassScreen; FindMyPhoneScreen_t findMyPhoneScreen; +MusicPlayerScreen_t musicPlayerScreen; + SettingsScreen_t settingsScreen; static struct @@ -240,8 +243,8 @@ static void setBLEEnabledCb(bool *enabled, SettingMode_e mode) { watch_face_set_bluetooth_indicator(&watchFace, BLUETOOTH_STATE_OFF); find_my_phone_screen_notify_BLE_connection_state(&findMyPhoneScreen, false); - } - + music_player_screen_notify_BLE_connection_state(&musicPlayerScreen, false); + } } } } @@ -374,6 +377,23 @@ static void parser_event_cb(const gadget_bridge_event_data_t *gadget_bridge_even watch_face_force_sync(&watchFace); } break; + case GADGET_BRIDGE_EVENT_TYPE_MUSIC_INFO: + music_player_screen_set_playing_music_title_and_artist(&musicPlayerScreen, gadget_bridge_event_data->music_info.track, gadget_bridge_event_data->music_info.artist); + music_player_screen_set_music_duration(&musicPlayerScreen, gadget_bridge_event_data->music_info.duration_in_seconds); + break; + case GADGET_BRIDGE_EVENT_TYPE_MUSIC_STATE: + switch(gadget_bridge_event_data->music_state.music_state) + { + case GADGET_BRIDGE_MUSIC_STATE_PLAY: + music_player_screen_set_music_playing_state(&musicPlayerScreen, MUSIC_CONTROL_PLAY); + break; + case GADGET_BRIDGE_MUSIC_STATE_PAUSE: + case GADGET_BRIDGE_MUSIC_STATE_STOP: + music_player_screen_set_music_playing_state(&musicPlayerScreen, MUSIC_CONTROL_PAUSE); + break; + } + music_player_screen_set_music_position(&musicPlayerScreen, gadget_bridge_event_data->music_state.position_in_seconds); + break; default: APP_LOG_INFO("Not yet handled\n"); } @@ -400,10 +420,12 @@ static void ble_service_state_change_cb(ble_service_state_e ble_service_state) case BLE_SERVICE_MODE_CONNECTED: watch_face_set_bluetooth_indicator(&watchFace, BLUETOOTH_STATE_CONNECTED); find_my_phone_screen_notify_BLE_connection_state(&findMyPhoneScreen, true); + music_player_screen_notify_BLE_connection_state(&musicPlayerScreen, true); break; case BLE_SERVICE_MODE_ADVERTISING: watch_face_set_bluetooth_indicator(&watchFace, BLUETOOTH_STATE_ON); find_my_phone_screen_notify_BLE_connection_state(&findMyPhoneScreen, false); + music_player_screen_notify_BLE_connection_state(&musicPlayerScreen, false); break; case BLE_SERVICE_MODE_SUBSCRIBED: _is_ble_device_subscribed = true; @@ -462,6 +484,11 @@ static void sendFindMyPhoneBLECommandCb(bool findMyPhone) gadget_bridge_send_find_phone(findMyPhone); } +static void sendMusicPlaybackBLECommandCb(MusicPlaybackCtrlAction_e musicPlaybackCtrlAction) +{ + gadget_bridge_send_music_control(musicPlaybackCtrlAction); +} + extern LCDConfig_t LCDConfig; void gfx_task(void *param) @@ -527,6 +554,9 @@ void gfx_task(void *param) find_my_phone_screen_init(&findMyPhoneScreen); find_my_phone_screen_register_BLE_command_send_cb(&findMyPhoneScreen, &(sendFindMyPhoneBLECommandCb)); + music_player_screen_init(&musicPlayerScreen); + music_player_screen_register_music_playback_control_cb(&musicPlayerScreen, &(sendMusicPlaybackBLECommandCb)); + settings_screen_init(&settingsScreen); settings_screen_register_API_interface(&settingsScreen, &settingsScreenAPIInterface);