#ifndef _AIRPLAY_H_ #define _AIRPLAY_H_ #include #include #define METADATA_STRING_LEN 100 typedef enum { AIRPLAY_SUCCESS = 0, AIRPLAY_ERR_BAD_PARAM, AIRPLAY_ERR_BAD_STATE, AIRPLAY_ERR_NO_RESOURCE, AIRPLAY_ERR_OOM, AIRPLAY_ERR_NOT_SUPPORTED, AIRPLAY_ERR_OTHER, } Airplay_Status_e; typedef enum { AIRPLAY_SUPPORT_MIRROR = 0x01, AIRPLAY_SUPPORT_VIDEO_CAST = 0x02, AIRPLAY_DISPLAY_COVERART = 0x04, AIRPLAY_SUPPORT_ALL = 0xff, } Airplay_Capability_e; typedef struct { char data[METADATA_STRING_LEN]; uint8_t size; } MetaData_String_t; typedef struct { MetaData_String_t songAlbumArtist; MetaData_String_t songArtist; MetaData_String_t songAlbum; MetaData_String_t songComposer; MetaData_String_t songGenre; MetaData_String_t songName; uint16_t songYear; uint16_t songTrackCount; uint16_t songTrackNumber; uint32_t totalTime; // in milliseconds uint32_t startTime; // in milliseconds } Airplay_Audio_MetaData_t; typedef struct { int size; char *data; } Airplay_Audio_CoverArt_t; typedef enum { AIRPLAY_AV_EVENT_DECODE_START = 0X0001000F, /*!< Audio/Video Decode Start evnet*/ AIRPLAY_AV_EVENT_INITOK, AIRPLAY_AV_EVENT_PLAY_DONE, AIRPLAY_AV_EVENT_SET_VOLUME, AIRPLAY_AV_EVENT_SET_METADATA, AIRPLAY_AV_EVENT_SET_COVERART, AIRPLAY_AV_EVENT_NOT_HTTP, AIRPLAY_AV_EVENT_SCREEN_ON, AIRPLAY_AV_EVENT_SCREEN_OFF, AIRPLAY_AV_EVENT_UNKNOWN_FORMAT, AIRPLAY_AV_EVENT_LOADING, AIRPLAY_AV_EVENT_PAUSED, AIRPLAY_EVENT_END = 0X000FFFFF, } Airplay_Event_t; typedef enum { AIRP_PLAYER_STOPPED, AIRP_PLAYER_INITIALIZING, AIRP_PLAYER_READY, AIRP_PLAYER_PLAYING, AIRP_PLAYER_PAUSED, AIRP_PLAYER_STOPPING, } Airp_Player_State_t; typedef bool (*AirplayCbkFunc_t)(Airplay_Event_t, int param); Airplay_Status_e Airplay_Start(uint32_t capability); Airplay_Status_e Airplay_Stop(void); Airplay_Status_e Airplay_GetAudioMetadata(Airplay_Audio_MetaData_t *); Airplay_Status_e Airplay_GetAudioCoverArt(Airplay_Audio_CoverArt_t *); Airplay_Status_e Airplay_FreeAudioCoverArt(Airplay_Audio_CoverArt_t *); void Airplay_RegisterCBKFunc(AirplayCbkFunc_t); AirplayCbkFunc_t Airplay_GetRegisteredCBKFunc(void); Airplay_Status_e Airplay_Ctrl_PausePlay(void); bool Airplay_Is_AudioOnly(void); Airp_Player_State_t Airplay_Get_PlayerState(void); #endif