diff --git a/examples/all-clusters-app/all-clusters-common/gen/af-structs.h b/examples/all-clusters-app/all-clusters-common/gen/af-structs.h index b19ca54657a27a..16a5ef656d51ef 100644 --- a/examples/all-clusters-app/all-clusters-common/gen/af-structs.h +++ b/examples/all-clusters-app/all-clusters-common/gen/af-structs.h @@ -34,9 +34,9 @@ typedef struct _ApplicationLauncherApp // Struct for AudioOutputInfo typedef struct _AudioOutputInfo { - uint8_t Index; - uint8_t OutputType; - uint8_t * Name; + uint8_t index; + uint8_t outputType; + uint8_t * name; } EmberAfAudioOutputInfo; // Struct for BasicCommissioningInfoType @@ -100,17 +100,44 @@ typedef struct _ConfigureReportingStatusRecord // Struct for ContentLaunchAdditionalInfo typedef struct _ContentLaunchAdditionalInfo { - uint8_t * Name; - uint8_t * Value; + uint8_t * name; + uint8_t * value; } EmberAfContentLaunchAdditionalInfo; -// Struct for ContentLaunchSearch -typedef struct _ContentLaunchSearch +// Struct for ContentLaunchBrandingInformation +typedef struct _ContentLaunchBrandingInformation +{ + uint8_t * providerName; + uint8_t background; + uint8_t logo; + uint8_t progressBar; + uint8_t splash; + uint8_t waterMark; +} EmberAfContentLaunchBrandingInformation; + +// Struct for ContentLaunchDimension +typedef struct _ContentLaunchDimension +{ + uint8_t * width; + uint8_t * height; + uint8_t metric; +} EmberAfContentLaunchDimension; + +// Struct for ContentLaunchParamater +typedef struct _ContentLaunchParamater { - uint8_t EntitiesList; - uint8_t * searchWindowStart; - uint8_t * searchWindowEnd; -} EmberAfContentLaunchSearch; + uint8_t Type; + uint8_t * Value; + /* TYPE WARNING: array array defaults to */ uint8_t * ExternalIDList; +} EmberAfContentLaunchParamater; + +// Struct for ContentLaunchStyleInformation +typedef struct _ContentLaunchStyleInformation +{ + uint8_t * imageUrl; + uint8_t * color; + uint8_t size; +} EmberAfContentLaunchStyleInformation; // Struct for DebtPayload typedef struct _DebtPayload @@ -253,12 +280,19 @@ typedef uint8_t EmberAfIdentity; // Struct for MediaInputInfo typedef struct _MediaInputInfo { - uint8_t Index; - uint8_t InputType; - uint8_t * Name; - uint8_t * Description; + uint8_t index; + uint8_t inputType; + uint8_t * name; + uint8_t * description; } EmberAfMediaInputInfo; +// Struct for MediaPlaybackPosition +typedef struct _MediaPlaybackPosition +{ + uint64_t updatedAt; + uint64_t position; +} EmberAfMediaPlaybackPosition; + // Struct for NavigateTargetTargetInfo typedef struct _NavigateTargetTargetInfo { @@ -485,20 +519,20 @@ typedef struct _TransferredPhase // Struct for TvChannelInfo typedef struct _TvChannelInfo { - uint16_t MajorNumber; - uint16_t MinorNumber; - uint8_t * Name; - uint8_t * CallSign; - uint8_t * AffiliateCallSign; + uint16_t majorNumber; + uint16_t minorNumber; + uint8_t * name; + uint8_t * callSign; + uint8_t * affiliateCallSign; } EmberAfTvChannelInfo; // Struct for TvChannelLineupInfo typedef struct _TvChannelLineupInfo { - uint8_t * OperatorName; - uint8_t * LineupName; - uint8_t * PostalCode; - uint8_t LineupInfoType; + uint8_t * operatorName; + uint8_t * lineupName; + uint8_t * postalCode; + uint8_t lineupInfoType; } EmberAfTvChannelLineupInfo; // Struct for WiFiInterfaceScanResult diff --git a/examples/all-clusters-app/all-clusters-common/gen/attribute-id.h b/examples/all-clusters-app/all-clusters-common/gen/attribute-id.h index 6c224f5faf016e..8e7aa393464caf 100644 --- a/examples/all-clusters-app/all-clusters-common/gen/attribute-id.h +++ b/examples/all-clusters-app/all-clusters-common/gen/attribute-id.h @@ -1167,7 +1167,14 @@ // Client attributes // Server attributes -#define ZCL_CURRENT_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_START_TIME_ATTRIBUTE_ID (0x0001) +#define ZCL_MEDIA_PLAYBACK_DURATION_ATTRIBUTE_ID (0x0002) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_UPDATED_AT_ATTRIBUTE_ID (0x0003) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_ATTRIBUTE_ID (0x0004) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SPEED_ATTRIBUTE_ID (0x0005) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_END_ATTRIBUTE_ID (0x0006) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_START_ATTRIBUTE_ID (0x0007) // Attribute ids for cluster: Media Input @@ -1194,6 +1201,8 @@ // Client attributes // Server attributes +#define ZCL_CONTENT_LAUNCHER_ACCEPTS_HEADER_ATTRIBUTE_ID (0x0000) +#define ZCL_CONTENT_LAUNCHER_SUPPORTED_STREAMING_TYPES_ATTRIBUTE_ID (0x0001) // Attribute ids for cluster: Audio Output @@ -1209,7 +1218,8 @@ // Server attributes #define ZCL_APPLICATION_LAUNCHER_LIST_ATTRIBUTE_ID (0x0000) -#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_CATALOG_VENDOR_ID_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_APPLICATION_ID_ATTRIBUTE_ID (0x0002) // Attribute ids for cluster: Application Basic diff --git a/examples/all-clusters-app/all-clusters-common/gen/client-command-macro.h b/examples/all-clusters-app/all-clusters-common/gen/client-command-macro.h index c976129992f7e6..1cfc06d80ce7c2 100644 --- a/examples/all-clusters-app/all-clusters-common/gen/client-command-macro.h +++ b/examples/all-clusters-app/all-clusters-common/gen/client-command-macro.h @@ -3361,95 +3361,126 @@ \ ZCL_NAVIGATE_TARGET_COMMAND_ID, "uuuu", target, status, data, data); -/** @brief Command description for PlayRequest +/** @brief Command description for MediaPlay * - * Command: PlayRequest + * Command: MediaPlay + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPlayRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPlay(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_PLAY_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PLAY_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PauseRequest +/** @brief Command description for MediaPause * - * Command: PauseRequest + * Command: MediaPause + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPauseRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPause(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PAUSE_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PAUSE_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StopRequest +/** @brief Command description for MediaStop * - * Command: StopRequest + * Command: MediaStop + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStopRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStop(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_STOP_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_STOP_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StartOverRequest +/** @brief Command description for MediaStartOver * - * Command: StartOverRequest + * Command: MediaStartOver + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStartOverRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStartOver(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_START_OVER_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_START_OVER_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PreviousRequest +/** @brief Command description for MediaPrevious * - * Command: PreviousRequest + * Command: MediaPrevious + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPreviousRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPrevious(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PREVIOUS_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PREVIOUS_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for NextRequest +/** @brief Command description for MediaNext * - * Command: NextRequest + * Command: MediaNext + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterNextRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaNext(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_NEXT_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_NEXT_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for RewindRequest +/** @brief Command description for MediaRewind * - * Command: RewindRequest + * Command: MediaRewind + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterRewindRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaRewind(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_REWIND_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_REWIND_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for FastForwardRequest +/** @brief Command description for MediaFastForward * - * Command: FastForwardRequest + * Command: MediaFastForward + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterFastForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaFastForward(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_FAST_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_FAST_FORWARD_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for SkipForwardRequest +/** @brief Command description for MediaSkipForward * - * Command: SkipForwardRequest + * Command: MediaSkipForward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipForward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); -/** @brief Command description for SkipBackwardRequest +/** @brief Command description for MediaSkipBackward * - * Command: SkipBackwardRequest + * Command: MediaSkipBackward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipBackwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipBackward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); + +/** @brief Command description for MediaSkipSeek + * + * Command: MediaSkipSeek + * @param position INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus + */ +#define emberAfFillCommandMedia \ + PlaybackClusterMediaSkipSeek(position, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ + \ + ZCL_MEDIA_SKIP_SEEK_COMMAND_ID, "uu", position, mediaPlaybackStatus); /** @brief Command description for SelectInput * @@ -3502,7 +3533,7 @@ /** @brief Command description for SendKey * * Command: SendKey - * @param keyCode INT8U + * @param keyCode KeypadInputCecKeyCode * @param status KeypadInputStatus */ #define emberAfFillCommandKeypad \ @@ -3513,23 +3544,30 @@ /** @brief Command description for LaunchContent * * Command: LaunchContent + * @param autoPlay BOOLEAN + * @param data CHAR_STRING + * @param data CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchContent(contentLaunchStatus) \ + LaunchClusterLaunchContent(autoPlay, data, data, contentLaunchStatus) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_CONTENT_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_CONTENT_COMMAND_ID, "uuuu", autoPlay, data, data, contentLaunchStatus); /** @brief Command description for LaunchURL * * Command: LaunchURL + * @param contentURL CHAR_STRING + * @param data CHAR_STRING + * @param displayString CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchURL(contentLaunchStatus) emberAfFillExternalBuffer(mask, \ + LaunchClusterLaunchURL(contentURL, data, displayString, contentLaunchStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_URL_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_URL_COMMAND_ID, "uuuu", contentURL, data, displayString, contentLaunchStatus); /** @brief Command description for SelectOutput * @@ -3555,17 +3593,17 @@ /** @brief Command description for LaunchApp * * Command: LaunchApp + * @param data CHAR_STRING + * @param status ApplicationLauncherStatus * @param application ApplicationLauncherApp [] * @param applicationLen int - * @param status ApplicationLauncherStatus - * @param data CHAR_STRING * @param data CHAR_STRING */ #define emberAfFillCommandApplication \ - LauncherClusterLaunchApp(application, applicationLen, status, data, data) \ + LauncherClusterLaunchApp(data, status, application, applicationLen, data) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_APP_COMMAND_ID, "buuu", application, applicationLen, status, data, data); + ZCL_LAUNCH_APP_COMMAND_ID, "uubu", data, status, application, applicationLen, data); /** @brief Command description for GetSetupPIN * diff --git a/examples/all-clusters-app/all-clusters-common/gen/command-id.h b/examples/all-clusters-app/all-clusters-common/gen/command-id.h index e3c8f93cadb923..25ee08826f030c 100644 --- a/examples/all-clusters-app/all-clusters-common/gen/command-id.h +++ b/examples/all-clusters-app/all-clusters-common/gen/command-id.h @@ -415,17 +415,28 @@ #define ZCL_NAVIGATE_TARGET_RESPONSE_COMMAND_ID (0x00) // Commands for cluster: Media Playback -#define ZCL_PLAY_REQUEST_COMMAND_ID (0x00) -#define ZCL_PLAYBACK_COMMAND_ID (0x00) -#define ZCL_PAUSE_REQUEST_COMMAND_ID (0x01) -#define ZCL_STOP_REQUEST_COMMAND_ID (0x02) -#define ZCL_START_OVER_REQUEST_COMMAND_ID (0x03) -#define ZCL_PREVIOUS_REQUEST_COMMAND_ID (0x04) -#define ZCL_NEXT_REQUEST_COMMAND_ID (0x05) -#define ZCL_REWIND_REQUEST_COMMAND_ID (0x06) -#define ZCL_FAST_FORWARD_REQUEST_COMMAND_ID (0x07) -#define ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID (0x08) -#define ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID (0x09) +#define ZCL_MEDIA_PLAY_COMMAND_ID (0x00) +#define ZCL_MEDIA_PLAY_RESPONSE_COMMAND_ID (0x00) +#define ZCL_MEDIA_PAUSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_PAUSE_RESPONSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_STOP_COMMAND_ID (0x02) +#define ZCL_MEDIA_STOP_RESPONSE_COMMAND_ID (0x02) +#define ZCL_MEDIA_START_OVER_COMMAND_ID (0x03) +#define ZCL_MEDIA_START_OVER_RESPONSE_COMMAND_ID (0x03) +#define ZCL_MEDIA_PREVIOUS_COMMAND_ID (0x04) +#define ZCL_MEDIA_PREVIOUS_RESPONSE_COMMAND_ID (0x04) +#define ZCL_MEDIA_NEXT_COMMAND_ID (0x05) +#define ZCL_MEDIA_NEXT_RESPONSE_COMMAND_ID (0x05) +#define ZCL_MEDIA_REWIND_COMMAND_ID (0x06) +#define ZCL_MEDIA_REWIND_RESPONSE_COMMAND_ID (0x06) +#define ZCL_MEDIA_FAST_FORWARD_COMMAND_ID (0x07) +#define ZCL_MEDIA_FAST_FORWARD_RESPONSE_COMMAND_ID (0x07) +#define ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_BACKWARD_RESPONSE_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_SEEK_COMMAND_ID (0x0A) +#define ZCL_MEDIA_SKIP_SEEK_RESPONSE_COMMAND_ID (0x0A) // Commands for cluster: Media Input #define ZCL_SELECT_INPUT_COMMAND_ID (0x00) diff --git a/examples/all-clusters-app/all-clusters-common/gen/enums.h b/examples/all-clusters-app/all-clusters-common/gen/enums.h index f006d55171bec8..c14422f16eb01d 100644 --- a/examples/all-clusters-app/all-clusters-common/gen/enums.h +++ b/examples/all-clusters-app/all-clusters-common/gen/enums.h @@ -462,6 +462,29 @@ typedef enum EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT3 = 15, } EmberAfCommodityType; +// Enum for ContentLaunchMetricType +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PIXELS = 0, + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PERCENTAGE = 1, +} EmberAfContentLaunchMetricType; + +// Enum for ContentLaunchParameterEnum +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_ACTOR = 0, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHANNEL = 1, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHARACTER = 2, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_EVENT = 3, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_FRANCHISE = 4, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_GENRE = 5, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_LEAGUE = 6, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_POPULARITY = 7, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORT = 8, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORTS_TEAM = 9, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_VIDEO = 10, +} EmberAfContentLaunchParameterEnum; + // Enum for ContentLaunchStatus typedef enum { @@ -470,21 +493,12 @@ typedef enum EMBER_ZCL_CONTENT_LAUNCH_STATUS_AUTH_FAILED = 2, } EmberAfContentLaunchStatus; -// Enum for ContentLaunchType +// Enum for ContentLaunchStreamingType typedef enum { - EMBER_ZCL_CONTENT_LAUNCH_TYPE_ACTOR = 0, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHANNEL = 1, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHARACTER = 2, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_EVENT = 3, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_FRANCHISE = 4, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_GENRE = 5, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_LEAGUE = 6, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_POPULARITY = 7, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORT = 8, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORTS_TEAM = 9, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_VIDEO = 10, -} EmberAfContentLaunchType; + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_DASH = 0, + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_HLS = 1, +} EmberAfContentLaunchStreamingType; // Enum for CppEventResponseCppAuth typedef enum @@ -1617,6 +1631,97 @@ typedef enum EMBER_ZCL_KEY_INDEX_CERTIFICATION = 15, } EmberAfKeyIndex; +// Enum for KeypadInputCecKeyCode +typedef enum +{ + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT = 0, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_UP = 1, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOWN = 2, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT = 3, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT = 4, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_UP = 5, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_DOWN = 6, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_UP = 7, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_DOWN = 8, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ROOT_MENU = 9, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SETUP_MENU = 10, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CONTENTS_MENU = 11, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAVORITE_MENU = 12, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EXIT = 13, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_TOP_MENU = 16, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_CONTEXT_SENSITIVE_MENU = 17, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER_ENTRY_MODE = 29, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER11 = 30, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER12 = 31, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER0_OR_NUMBER10 = 32, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS1 = 33, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS2 = 34, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS3 = 35, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS4 = 36, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS5 = 37, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS6 = 38, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS7 = 39, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS8 = 40, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS9 = 41, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOT = 42, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ENTER = 43, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CLEAR = 44, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NEXT_FAVORITE = 47, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_UP = 48, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_DOWN = 49, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PREVIOUS_CHANNEL = 50, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SOUND_SELECT = 51, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INPUT_SELECT = 52, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DISPLAY_INFORMATION = 53, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_HELP = 54, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_UP = 55, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_DOWN = 56, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER = 64, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_UP = 65, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_DOWN = 66, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE = 67, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY = 68, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP = 69, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE = 70, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD = 71, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_REWIND = 72, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAST_FORWARD = 73, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EJECT = 74, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FORWARD = 75, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_BACKWARD = 76, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_RECORD = 77, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD = 78, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESERVED = 79, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ANGLE = 80, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SUB_PICTURE = 81, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VIDEO_ON_DEMAND = 82, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ELECTRONIC_PROGRAM_GUIDE = 83, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TIMER_PROGRAMMING = 84, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INITIAL_CONFIGURATION = 85, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_BROADCAST_TYPE = 86, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_SOUND_PRESENTATION = 87, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY_FUNCTION = 96, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_PLAY_FUNCTION = 97, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD_FUNCTION = 98, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD_FUNCTION = 99, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_FUNCTION = 100, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE_FUNCTION = 101, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESTORE_VOLUME_FUNCTION = 102, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TUNE_FUNCTION = 103, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_MEDIA_FUNCTION = 104, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AV_INPUT_FUNCTION = 105, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AUDIO_INPUT_FUNCTION = 106, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_TOGGLE_FUNCTION = 107, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_OFF_FUNCTION = 108, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_ON_FUNCTION = 109, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F1_BLUE = 113, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F2_RED = 114, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F3_GREEN = 115, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F4_YELLOW = 116, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F5 = 117, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DATA = 118, +} EmberAfKeypadInputCecKeyCode; + // Enum for KeypadInputStatus typedef enum { @@ -1698,6 +1803,26 @@ typedef enum EMBER_ZCL_MEDIA_INPUT_TYPE_OTHER = 11, } EmberAfMediaInputType; +// Enum for MediaPlaybackState +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PLAYING = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PAUSED = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_NOT_PLAYING = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_BUFFERING = 3, +} EmberAfMediaPlaybackState; + +// Enum for MediaPlaybackStatus +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SUCCESS = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_INVALID_STATE_FOR_COMMAND = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ALLOWED = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ACTIVE = 3, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SPEED_OUT_OF_RANGE = 4, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SEEK_OUT_OF_RANGE = 5, +} EmberAfMediaPlaybackStatus; + // Enum for MessagingControlConfirmation typedef enum { diff --git a/examples/bridge-app/bridge-common/gen/af-structs.h b/examples/bridge-app/bridge-common/gen/af-structs.h index b19ca54657a27a..16a5ef656d51ef 100644 --- a/examples/bridge-app/bridge-common/gen/af-structs.h +++ b/examples/bridge-app/bridge-common/gen/af-structs.h @@ -34,9 +34,9 @@ typedef struct _ApplicationLauncherApp // Struct for AudioOutputInfo typedef struct _AudioOutputInfo { - uint8_t Index; - uint8_t OutputType; - uint8_t * Name; + uint8_t index; + uint8_t outputType; + uint8_t * name; } EmberAfAudioOutputInfo; // Struct for BasicCommissioningInfoType @@ -100,17 +100,44 @@ typedef struct _ConfigureReportingStatusRecord // Struct for ContentLaunchAdditionalInfo typedef struct _ContentLaunchAdditionalInfo { - uint8_t * Name; - uint8_t * Value; + uint8_t * name; + uint8_t * value; } EmberAfContentLaunchAdditionalInfo; -// Struct for ContentLaunchSearch -typedef struct _ContentLaunchSearch +// Struct for ContentLaunchBrandingInformation +typedef struct _ContentLaunchBrandingInformation +{ + uint8_t * providerName; + uint8_t background; + uint8_t logo; + uint8_t progressBar; + uint8_t splash; + uint8_t waterMark; +} EmberAfContentLaunchBrandingInformation; + +// Struct for ContentLaunchDimension +typedef struct _ContentLaunchDimension +{ + uint8_t * width; + uint8_t * height; + uint8_t metric; +} EmberAfContentLaunchDimension; + +// Struct for ContentLaunchParamater +typedef struct _ContentLaunchParamater { - uint8_t EntitiesList; - uint8_t * searchWindowStart; - uint8_t * searchWindowEnd; -} EmberAfContentLaunchSearch; + uint8_t Type; + uint8_t * Value; + /* TYPE WARNING: array array defaults to */ uint8_t * ExternalIDList; +} EmberAfContentLaunchParamater; + +// Struct for ContentLaunchStyleInformation +typedef struct _ContentLaunchStyleInformation +{ + uint8_t * imageUrl; + uint8_t * color; + uint8_t size; +} EmberAfContentLaunchStyleInformation; // Struct for DebtPayload typedef struct _DebtPayload @@ -253,12 +280,19 @@ typedef uint8_t EmberAfIdentity; // Struct for MediaInputInfo typedef struct _MediaInputInfo { - uint8_t Index; - uint8_t InputType; - uint8_t * Name; - uint8_t * Description; + uint8_t index; + uint8_t inputType; + uint8_t * name; + uint8_t * description; } EmberAfMediaInputInfo; +// Struct for MediaPlaybackPosition +typedef struct _MediaPlaybackPosition +{ + uint64_t updatedAt; + uint64_t position; +} EmberAfMediaPlaybackPosition; + // Struct for NavigateTargetTargetInfo typedef struct _NavigateTargetTargetInfo { @@ -485,20 +519,20 @@ typedef struct _TransferredPhase // Struct for TvChannelInfo typedef struct _TvChannelInfo { - uint16_t MajorNumber; - uint16_t MinorNumber; - uint8_t * Name; - uint8_t * CallSign; - uint8_t * AffiliateCallSign; + uint16_t majorNumber; + uint16_t minorNumber; + uint8_t * name; + uint8_t * callSign; + uint8_t * affiliateCallSign; } EmberAfTvChannelInfo; // Struct for TvChannelLineupInfo typedef struct _TvChannelLineupInfo { - uint8_t * OperatorName; - uint8_t * LineupName; - uint8_t * PostalCode; - uint8_t LineupInfoType; + uint8_t * operatorName; + uint8_t * lineupName; + uint8_t * postalCode; + uint8_t lineupInfoType; } EmberAfTvChannelLineupInfo; // Struct for WiFiInterfaceScanResult diff --git a/examples/bridge-app/bridge-common/gen/attribute-id.h b/examples/bridge-app/bridge-common/gen/attribute-id.h index 6c224f5faf016e..8e7aa393464caf 100644 --- a/examples/bridge-app/bridge-common/gen/attribute-id.h +++ b/examples/bridge-app/bridge-common/gen/attribute-id.h @@ -1167,7 +1167,14 @@ // Client attributes // Server attributes -#define ZCL_CURRENT_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_START_TIME_ATTRIBUTE_ID (0x0001) +#define ZCL_MEDIA_PLAYBACK_DURATION_ATTRIBUTE_ID (0x0002) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_UPDATED_AT_ATTRIBUTE_ID (0x0003) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_ATTRIBUTE_ID (0x0004) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SPEED_ATTRIBUTE_ID (0x0005) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_END_ATTRIBUTE_ID (0x0006) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_START_ATTRIBUTE_ID (0x0007) // Attribute ids for cluster: Media Input @@ -1194,6 +1201,8 @@ // Client attributes // Server attributes +#define ZCL_CONTENT_LAUNCHER_ACCEPTS_HEADER_ATTRIBUTE_ID (0x0000) +#define ZCL_CONTENT_LAUNCHER_SUPPORTED_STREAMING_TYPES_ATTRIBUTE_ID (0x0001) // Attribute ids for cluster: Audio Output @@ -1209,7 +1218,8 @@ // Server attributes #define ZCL_APPLICATION_LAUNCHER_LIST_ATTRIBUTE_ID (0x0000) -#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_CATALOG_VENDOR_ID_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_APPLICATION_ID_ATTRIBUTE_ID (0x0002) // Attribute ids for cluster: Application Basic diff --git a/examples/bridge-app/bridge-common/gen/client-command-macro.h b/examples/bridge-app/bridge-common/gen/client-command-macro.h index c976129992f7e6..1cfc06d80ce7c2 100644 --- a/examples/bridge-app/bridge-common/gen/client-command-macro.h +++ b/examples/bridge-app/bridge-common/gen/client-command-macro.h @@ -3361,95 +3361,126 @@ \ ZCL_NAVIGATE_TARGET_COMMAND_ID, "uuuu", target, status, data, data); -/** @brief Command description for PlayRequest +/** @brief Command description for MediaPlay * - * Command: PlayRequest + * Command: MediaPlay + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPlayRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPlay(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_PLAY_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PLAY_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PauseRequest +/** @brief Command description for MediaPause * - * Command: PauseRequest + * Command: MediaPause + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPauseRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPause(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PAUSE_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PAUSE_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StopRequest +/** @brief Command description for MediaStop * - * Command: StopRequest + * Command: MediaStop + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStopRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStop(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_STOP_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_STOP_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StartOverRequest +/** @brief Command description for MediaStartOver * - * Command: StartOverRequest + * Command: MediaStartOver + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStartOverRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStartOver(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_START_OVER_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_START_OVER_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PreviousRequest +/** @brief Command description for MediaPrevious * - * Command: PreviousRequest + * Command: MediaPrevious + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPreviousRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPrevious(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PREVIOUS_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PREVIOUS_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for NextRequest +/** @brief Command description for MediaNext * - * Command: NextRequest + * Command: MediaNext + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterNextRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaNext(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_NEXT_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_NEXT_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for RewindRequest +/** @brief Command description for MediaRewind * - * Command: RewindRequest + * Command: MediaRewind + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterRewindRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaRewind(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_REWIND_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_REWIND_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for FastForwardRequest +/** @brief Command description for MediaFastForward * - * Command: FastForwardRequest + * Command: MediaFastForward + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterFastForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaFastForward(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_FAST_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_FAST_FORWARD_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for SkipForwardRequest +/** @brief Command description for MediaSkipForward * - * Command: SkipForwardRequest + * Command: MediaSkipForward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipForward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); -/** @brief Command description for SkipBackwardRequest +/** @brief Command description for MediaSkipBackward * - * Command: SkipBackwardRequest + * Command: MediaSkipBackward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipBackwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipBackward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); + +/** @brief Command description for MediaSkipSeek + * + * Command: MediaSkipSeek + * @param position INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus + */ +#define emberAfFillCommandMedia \ + PlaybackClusterMediaSkipSeek(position, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ + \ + ZCL_MEDIA_SKIP_SEEK_COMMAND_ID, "uu", position, mediaPlaybackStatus); /** @brief Command description for SelectInput * @@ -3502,7 +3533,7 @@ /** @brief Command description for SendKey * * Command: SendKey - * @param keyCode INT8U + * @param keyCode KeypadInputCecKeyCode * @param status KeypadInputStatus */ #define emberAfFillCommandKeypad \ @@ -3513,23 +3544,30 @@ /** @brief Command description for LaunchContent * * Command: LaunchContent + * @param autoPlay BOOLEAN + * @param data CHAR_STRING + * @param data CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchContent(contentLaunchStatus) \ + LaunchClusterLaunchContent(autoPlay, data, data, contentLaunchStatus) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_CONTENT_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_CONTENT_COMMAND_ID, "uuuu", autoPlay, data, data, contentLaunchStatus); /** @brief Command description for LaunchURL * * Command: LaunchURL + * @param contentURL CHAR_STRING + * @param data CHAR_STRING + * @param displayString CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchURL(contentLaunchStatus) emberAfFillExternalBuffer(mask, \ + LaunchClusterLaunchURL(contentURL, data, displayString, contentLaunchStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_URL_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_URL_COMMAND_ID, "uuuu", contentURL, data, displayString, contentLaunchStatus); /** @brief Command description for SelectOutput * @@ -3555,17 +3593,17 @@ /** @brief Command description for LaunchApp * * Command: LaunchApp + * @param data CHAR_STRING + * @param status ApplicationLauncherStatus * @param application ApplicationLauncherApp [] * @param applicationLen int - * @param status ApplicationLauncherStatus - * @param data CHAR_STRING * @param data CHAR_STRING */ #define emberAfFillCommandApplication \ - LauncherClusterLaunchApp(application, applicationLen, status, data, data) \ + LauncherClusterLaunchApp(data, status, application, applicationLen, data) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_APP_COMMAND_ID, "buuu", application, applicationLen, status, data, data); + ZCL_LAUNCH_APP_COMMAND_ID, "uubu", data, status, application, applicationLen, data); /** @brief Command description for GetSetupPIN * diff --git a/examples/bridge-app/bridge-common/gen/command-id.h b/examples/bridge-app/bridge-common/gen/command-id.h index e3c8f93cadb923..25ee08826f030c 100644 --- a/examples/bridge-app/bridge-common/gen/command-id.h +++ b/examples/bridge-app/bridge-common/gen/command-id.h @@ -415,17 +415,28 @@ #define ZCL_NAVIGATE_TARGET_RESPONSE_COMMAND_ID (0x00) // Commands for cluster: Media Playback -#define ZCL_PLAY_REQUEST_COMMAND_ID (0x00) -#define ZCL_PLAYBACK_COMMAND_ID (0x00) -#define ZCL_PAUSE_REQUEST_COMMAND_ID (0x01) -#define ZCL_STOP_REQUEST_COMMAND_ID (0x02) -#define ZCL_START_OVER_REQUEST_COMMAND_ID (0x03) -#define ZCL_PREVIOUS_REQUEST_COMMAND_ID (0x04) -#define ZCL_NEXT_REQUEST_COMMAND_ID (0x05) -#define ZCL_REWIND_REQUEST_COMMAND_ID (0x06) -#define ZCL_FAST_FORWARD_REQUEST_COMMAND_ID (0x07) -#define ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID (0x08) -#define ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID (0x09) +#define ZCL_MEDIA_PLAY_COMMAND_ID (0x00) +#define ZCL_MEDIA_PLAY_RESPONSE_COMMAND_ID (0x00) +#define ZCL_MEDIA_PAUSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_PAUSE_RESPONSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_STOP_COMMAND_ID (0x02) +#define ZCL_MEDIA_STOP_RESPONSE_COMMAND_ID (0x02) +#define ZCL_MEDIA_START_OVER_COMMAND_ID (0x03) +#define ZCL_MEDIA_START_OVER_RESPONSE_COMMAND_ID (0x03) +#define ZCL_MEDIA_PREVIOUS_COMMAND_ID (0x04) +#define ZCL_MEDIA_PREVIOUS_RESPONSE_COMMAND_ID (0x04) +#define ZCL_MEDIA_NEXT_COMMAND_ID (0x05) +#define ZCL_MEDIA_NEXT_RESPONSE_COMMAND_ID (0x05) +#define ZCL_MEDIA_REWIND_COMMAND_ID (0x06) +#define ZCL_MEDIA_REWIND_RESPONSE_COMMAND_ID (0x06) +#define ZCL_MEDIA_FAST_FORWARD_COMMAND_ID (0x07) +#define ZCL_MEDIA_FAST_FORWARD_RESPONSE_COMMAND_ID (0x07) +#define ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_BACKWARD_RESPONSE_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_SEEK_COMMAND_ID (0x0A) +#define ZCL_MEDIA_SKIP_SEEK_RESPONSE_COMMAND_ID (0x0A) // Commands for cluster: Media Input #define ZCL_SELECT_INPUT_COMMAND_ID (0x00) diff --git a/examples/bridge-app/bridge-common/gen/enums.h b/examples/bridge-app/bridge-common/gen/enums.h index f006d55171bec8..c14422f16eb01d 100644 --- a/examples/bridge-app/bridge-common/gen/enums.h +++ b/examples/bridge-app/bridge-common/gen/enums.h @@ -462,6 +462,29 @@ typedef enum EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT3 = 15, } EmberAfCommodityType; +// Enum for ContentLaunchMetricType +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PIXELS = 0, + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PERCENTAGE = 1, +} EmberAfContentLaunchMetricType; + +// Enum for ContentLaunchParameterEnum +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_ACTOR = 0, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHANNEL = 1, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHARACTER = 2, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_EVENT = 3, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_FRANCHISE = 4, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_GENRE = 5, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_LEAGUE = 6, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_POPULARITY = 7, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORT = 8, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORTS_TEAM = 9, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_VIDEO = 10, +} EmberAfContentLaunchParameterEnum; + // Enum for ContentLaunchStatus typedef enum { @@ -470,21 +493,12 @@ typedef enum EMBER_ZCL_CONTENT_LAUNCH_STATUS_AUTH_FAILED = 2, } EmberAfContentLaunchStatus; -// Enum for ContentLaunchType +// Enum for ContentLaunchStreamingType typedef enum { - EMBER_ZCL_CONTENT_LAUNCH_TYPE_ACTOR = 0, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHANNEL = 1, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHARACTER = 2, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_EVENT = 3, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_FRANCHISE = 4, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_GENRE = 5, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_LEAGUE = 6, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_POPULARITY = 7, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORT = 8, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORTS_TEAM = 9, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_VIDEO = 10, -} EmberAfContentLaunchType; + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_DASH = 0, + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_HLS = 1, +} EmberAfContentLaunchStreamingType; // Enum for CppEventResponseCppAuth typedef enum @@ -1617,6 +1631,97 @@ typedef enum EMBER_ZCL_KEY_INDEX_CERTIFICATION = 15, } EmberAfKeyIndex; +// Enum for KeypadInputCecKeyCode +typedef enum +{ + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT = 0, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_UP = 1, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOWN = 2, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT = 3, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT = 4, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_UP = 5, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_DOWN = 6, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_UP = 7, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_DOWN = 8, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ROOT_MENU = 9, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SETUP_MENU = 10, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CONTENTS_MENU = 11, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAVORITE_MENU = 12, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EXIT = 13, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_TOP_MENU = 16, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_CONTEXT_SENSITIVE_MENU = 17, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER_ENTRY_MODE = 29, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER11 = 30, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER12 = 31, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER0_OR_NUMBER10 = 32, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS1 = 33, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS2 = 34, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS3 = 35, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS4 = 36, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS5 = 37, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS6 = 38, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS7 = 39, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS8 = 40, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS9 = 41, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOT = 42, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ENTER = 43, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CLEAR = 44, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NEXT_FAVORITE = 47, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_UP = 48, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_DOWN = 49, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PREVIOUS_CHANNEL = 50, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SOUND_SELECT = 51, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INPUT_SELECT = 52, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DISPLAY_INFORMATION = 53, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_HELP = 54, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_UP = 55, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_DOWN = 56, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER = 64, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_UP = 65, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_DOWN = 66, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE = 67, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY = 68, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP = 69, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE = 70, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD = 71, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_REWIND = 72, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAST_FORWARD = 73, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EJECT = 74, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FORWARD = 75, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_BACKWARD = 76, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_RECORD = 77, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD = 78, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESERVED = 79, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ANGLE = 80, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SUB_PICTURE = 81, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VIDEO_ON_DEMAND = 82, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ELECTRONIC_PROGRAM_GUIDE = 83, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TIMER_PROGRAMMING = 84, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INITIAL_CONFIGURATION = 85, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_BROADCAST_TYPE = 86, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_SOUND_PRESENTATION = 87, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY_FUNCTION = 96, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_PLAY_FUNCTION = 97, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD_FUNCTION = 98, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD_FUNCTION = 99, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_FUNCTION = 100, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE_FUNCTION = 101, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESTORE_VOLUME_FUNCTION = 102, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TUNE_FUNCTION = 103, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_MEDIA_FUNCTION = 104, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AV_INPUT_FUNCTION = 105, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AUDIO_INPUT_FUNCTION = 106, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_TOGGLE_FUNCTION = 107, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_OFF_FUNCTION = 108, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_ON_FUNCTION = 109, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F1_BLUE = 113, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F2_RED = 114, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F3_GREEN = 115, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F4_YELLOW = 116, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F5 = 117, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DATA = 118, +} EmberAfKeypadInputCecKeyCode; + // Enum for KeypadInputStatus typedef enum { @@ -1698,6 +1803,26 @@ typedef enum EMBER_ZCL_MEDIA_INPUT_TYPE_OTHER = 11, } EmberAfMediaInputType; +// Enum for MediaPlaybackState +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PLAYING = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PAUSED = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_NOT_PLAYING = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_BUFFERING = 3, +} EmberAfMediaPlaybackState; + +// Enum for MediaPlaybackStatus +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SUCCESS = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_INVALID_STATE_FOR_COMMAND = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ALLOWED = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ACTIVE = 3, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SPEED_OUT_OF_RANGE = 4, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SEEK_OUT_OF_RANGE = 5, +} EmberAfMediaPlaybackStatus; + // Enum for MessagingControlConfirmation typedef enum { diff --git a/examples/chip-tool/chip-tool.zap b/examples/chip-tool/chip-tool.zap index decc2bc70f5cc8..226434a2a82c4a 100644 --- a/examples/chip-tool/chip-tool.zap +++ b/examples/chip-tool/chip-tool.zap @@ -4262,20 +4262,888 @@ } ] }, + { + "name": "Wake on LAN", + "code": 1283, + "mfgCode": null, + "define": "WAKE_ON_LAN_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Wake on LAN", + "code": 1283, + "mfgCode": null, + "define": "WAKE_ON_LAN_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [], + "attributes": [ + { + "name": "wake on lan mac address", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "TV Channel", + "code": 1284, + "mfgCode": null, + "define": "TV_CHANNEL_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "ChangeChannel", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ChangeChannelByNumber", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "SkipChannel", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "TV Channel", + "code": 1284, + "mfgCode": null, + "define": "TV_CHANNEL_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "ChangeChannelResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "tv channel list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "tv channel lineup", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "current tv channel", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Target Navigator", + "code": 1285, + "mfgCode": null, + "define": "TARGET_NAVIGATOR_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "NavigateTarget", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Target Navigator", + "code": 1285, + "mfgCode": null, + "define": "TARGET_NAVIGATOR_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "NavigateTargetResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "target navigator list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Playback", + "code": 1286, + "mfgCode": null, + "define": "MEDIA_PLAYBACK_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "MediaPlay", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaPause", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaStop", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaStartOver", + "code": 3, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaPrevious", + "code": 4, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaNext", + "code": 5, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaRewind", + "code": 6, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaFastForward", + "code": 7, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaSkipForward", + "code": 8, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaSkipBackward", + "code": 9, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaSkipSeek", + "code": 10, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Playback", + "code": 1286, + "mfgCode": null, + "define": "MEDIA_PLAYBACK_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "MediaPlayResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaPauseResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaStopResponse", + "code": 2, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaStartOverResponse", + "code": 3, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaPreviousResponse", + "code": 4, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaNextResponse", + "code": 5, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaRewindResponse", + "code": 6, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaFastForwardResponse", + "code": 7, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaSkipForwardResponse", + "code": 8, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaSkipBackwardResponse", + "code": 9, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaSkipSeekResponse", + "code": 10, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Input", + "code": 1287, + "mfgCode": null, + "define": "MEDIA_INPUT_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "SelectInput", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ShowInputStatus", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "HideInputStatus", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "RenameInput", + "code": 3, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Input", + "code": 1287, + "mfgCode": null, + "define": "MEDIA_INPUT_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [], + "attributes": [ + { + "name": "media input list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Low Power", + "code": 1288, + "mfgCode": null, + "define": "LOW_POWER_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "Sleep", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, { "name": "Low Power", "code": 1288, "mfgCode": null, - "define": "LOW_POWER_CLUSTER", + "define": "LOW_POWER_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Keypad Input", + "code": 1289, + "mfgCode": null, + "define": "KEYPAD_INPUT_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "SendKey", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Keypad Input", + "code": 1289, + "mfgCode": null, + "define": "KEYPAD_INPUT_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "SendKeyResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Content Launch", + "code": 1290, + "mfgCode": null, + "define": "CONTENT_LAUNCH_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "LaunchContent", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "LaunchURL", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Content Launch", + "code": 1290, + "mfgCode": null, + "define": "CONTENT_LAUNCH_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "LaunchContentResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "LaunchURLResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "accepts header list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "supported streaming types", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Audio Output", + "code": 1291, + "mfgCode": null, + "define": "AUDIO_OUTPUT_CLUSTER", "side": "client", "enabled": 1, "commands": [ { - "name": "Sleep", + "name": "SelectOutput", "code": 0, "mfgCode": null, "source": "client", - "incoming": 1, + "incoming": 0, + "outgoing": 1 + }, + { + "name": "RenameOutput", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, "outgoing": 1 } ], @@ -4298,14 +5166,114 @@ ] }, { - "name": "Low Power", - "code": 1288, + "name": "Audio Output", + "code": 1291, "mfgCode": null, - "define": "LOW_POWER_CLUSTER", + "define": "AUDIO_OUTPUT_CLUSTER", "side": "server", "enabled": 0, "commands": [], "attributes": [ + { + "name": "audio output list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Application Launcher", + "code": 1292, + "mfgCode": null, + "define": "APPLICATION_LAUNCHER_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "LaunchApp", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Application Launcher", + "code": 1292, + "mfgCode": null, + "define": "APPLICATION_LAUNCHER_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "LaunchAppResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "application launcher list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, { "name": "cluster revision", "code": 65533, @@ -4480,6 +5448,84 @@ } ] }, + { + "name": "Account Login", + "code": 1294, + "mfgCode": null, + "define": "ACCOUNT_LOGIN_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "GetSetupPIN", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "Login", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Account Login", + "code": 1294, + "mfgCode": null, + "define": "ACCOUNT_LOGIN_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "GetSetupPINResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, { "name": "Binding", "code": 61440, diff --git a/examples/chip-tool/commands/clusters/Commands.h b/examples/chip-tool/commands/clusters/Commands.h index da27e2a21c7920..f330eb0333fdfe 100644 --- a/examples/chip-tool/commands/clusters/Commands.h +++ b/examples/chip-tool/commands/clusters/Commands.h @@ -103,6 +103,38 @@ static void OnStringAttributeResponse(void * context, const chip::ByteSpan value command->SetCommandExitStatus(true); } +static void OnAccountLoginClusterGetSetupPINResponse(void * context, uint8_t * setupPIN) +{ + ChipLogProgress(chipTool, "AccountLoginClusterGetSetupPINResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + +static void OnApplicationLauncherClusterLaunchAppResponse(void * context, uint8_t * data) +{ + ChipLogProgress(chipTool, "ApplicationLauncherClusterLaunchAppResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + +static void OnContentLaunchClusterLaunchContentResponse(void * context, uint8_t * data, uint8_t contentLaunchStatus) +{ + ChipLogProgress(chipTool, "ContentLaunchClusterLaunchContentResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + +static void OnContentLaunchClusterLaunchURLResponse(void * context, uint8_t * data, uint8_t contentLaunchStatus) +{ + ChipLogProgress(chipTool, "ContentLaunchClusterLaunchURLResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + static void OnDoorLockClusterClearAllPinsResponse(void * context) { ChipLogProgress(chipTool, "DoorLockClusterClearAllPinsResponse"); @@ -356,6 +388,102 @@ static void OnIdentifyClusterIdentifyQueryResponse(void * context, uint16_t time command->SetCommandExitStatus(true); } +static void OnKeypadInputClusterSendKeyResponse(void * context) +{ + ChipLogProgress(chipTool, "KeypadInputClusterSendKeyResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + +static void OnMediaPlaybackClusterMediaFastForwardResponse(void * context, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(chipTool, "MediaPlaybackClusterMediaFastForwardResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + +static void OnMediaPlaybackClusterMediaNextResponse(void * context, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(chipTool, "MediaPlaybackClusterMediaNextResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + +static void OnMediaPlaybackClusterMediaPauseResponse(void * context, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(chipTool, "MediaPlaybackClusterMediaPauseResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + +static void OnMediaPlaybackClusterMediaPlayResponse(void * context, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(chipTool, "MediaPlaybackClusterMediaPlayResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + +static void OnMediaPlaybackClusterMediaPreviousResponse(void * context, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(chipTool, "MediaPlaybackClusterMediaPreviousResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + +static void OnMediaPlaybackClusterMediaRewindResponse(void * context, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(chipTool, "MediaPlaybackClusterMediaRewindResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + +static void OnMediaPlaybackClusterMediaSkipBackwardResponse(void * context, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(chipTool, "MediaPlaybackClusterMediaSkipBackwardResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + +static void OnMediaPlaybackClusterMediaSkipForwardResponse(void * context, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(chipTool, "MediaPlaybackClusterMediaSkipForwardResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + +static void OnMediaPlaybackClusterMediaSkipSeekResponse(void * context, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(chipTool, "MediaPlaybackClusterMediaSkipSeekResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + +static void OnMediaPlaybackClusterMediaStartOverResponse(void * context, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(chipTool, "MediaPlaybackClusterMediaStartOverResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + +static void OnMediaPlaybackClusterMediaStopResponse(void * context, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(chipTool, "MediaPlaybackClusterMediaStopResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + static void OnNetworkCommissioningClusterAddThreadNetworkResponse(void * context, uint8_t errorCode, uint8_t * debugText) { ChipLogProgress(chipTool, "NetworkCommissioningClusterAddThreadNetworkResponse"); @@ -482,6 +610,24 @@ static void OnScenesClusterViewSceneResponse(void * context, uint16_t groupId, u command->SetCommandExitStatus(true); } +static void OnTvChannelClusterChangeChannelResponse(void * context, + /* TYPE WARNING: array array defaults to */ uint8_t * ChannelMatch, + uint8_t ErrorType) +{ + ChipLogProgress(chipTool, "TvChannelClusterChangeChannelResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + +static void OnTargetNavigatorClusterNavigateTargetResponse(void * context, uint8_t * data) +{ + ChipLogProgress(chipTool, "TargetNavigatorClusterNavigateTargetResponse"); + + ModelCommand * command = reinterpret_cast(context); + command->SetCommandExitStatus(true); +} + static void OnDescriptorDeviceListListAttributeResponse(void * context, uint16_t count, _DeviceType * entries) { ChipLogProgress(chipTool, "OnDescriptorDeviceListListAttributeResponse: %lu entries", count); @@ -590,50 +736,219 @@ static void OnOperationalCredentialsFabricsListListAttributeResponse(void * cont /*----------------------------------------------------------------------------*\ | Cluster Name | ID | |---------------------------------------------------------------------+--------| +| AccountLogin | 0x050E | | ApplicationBasic | 0x050D | +| ApplicationLauncher | 0x050C | +| AudioOutput | 0x050B | | BarrierControl | 0x0103 | | Basic | 0x0028 | | Binding | 0xF000 | | ColorControl | 0x0300 | +| ContentLaunch | 0x050A | | Descriptor | 0x001D | | DoorLock | 0x0101 | | GeneralCommissioning | 0x0030 | | GroupKeyManagement | 0xF004 | | Groups | 0x0004 | | Identify | 0x0003 | +| KeypadInput | 0x0509 | | LevelControl | 0x0008 | | LowPower | 0x0508 | +| MediaInput | 0x0507 | +| MediaPlayback | 0x0506 | | NetworkCommissioning | 0x0031 | | OnOff | 0x0006 | | OperationalCredentials | 0x003E | | PumpConfigurationAndControl | 0x0200 | | Scenes | 0x0005 | | Switch | 0x003B | +| TvChannel | 0x0504 | +| TargetNavigator | 0x0505 | | TemperatureMeasurement | 0x0402 | | Thermostat | 0x0201 | +| WakeOnLan | 0x0503 | \*----------------------------------------------------------------------------*/ +constexpr chip::ClusterId kAccountLoginClusterId = 0x050E; constexpr chip::ClusterId kApplicationBasicClusterId = 0x050D; +constexpr chip::ClusterId kApplicationLauncherClusterId = 0x050C; +constexpr chip::ClusterId kAudioOutputClusterId = 0x050B; constexpr chip::ClusterId kBarrierControlClusterId = 0x0103; constexpr chip::ClusterId kBasicClusterId = 0x0028; constexpr chip::ClusterId kBindingClusterId = 0xF000; constexpr chip::ClusterId kColorControlClusterId = 0x0300; +constexpr chip::ClusterId kContentLaunchClusterId = 0x050A; constexpr chip::ClusterId kDescriptorClusterId = 0x001D; constexpr chip::ClusterId kDoorLockClusterId = 0x0101; constexpr chip::ClusterId kGeneralCommissioningClusterId = 0x0030; constexpr chip::ClusterId kGroupKeyManagementClusterId = 0xF004; constexpr chip::ClusterId kGroupsClusterId = 0x0004; constexpr chip::ClusterId kIdentifyClusterId = 0x0003; +constexpr chip::ClusterId kKeypadInputClusterId = 0x0509; constexpr chip::ClusterId kLevelControlClusterId = 0x0008; constexpr chip::ClusterId kLowPowerClusterId = 0x0508; +constexpr chip::ClusterId kMediaInputClusterId = 0x0507; +constexpr chip::ClusterId kMediaPlaybackClusterId = 0x0506; constexpr chip::ClusterId kNetworkCommissioningClusterId = 0x0031; constexpr chip::ClusterId kOnOffClusterId = 0x0006; constexpr chip::ClusterId kOperationalCredentialsClusterId = 0x003E; constexpr chip::ClusterId kPumpConfigurationAndControlClusterId = 0x0200; constexpr chip::ClusterId kScenesClusterId = 0x0005; constexpr chip::ClusterId kSwitchClusterId = 0x003B; +constexpr chip::ClusterId kTvChannelClusterId = 0x0504; +constexpr chip::ClusterId kTargetNavigatorClusterId = 0x0505; constexpr chip::ClusterId kTemperatureMeasurementClusterId = 0x0402; constexpr chip::ClusterId kThermostatClusterId = 0x0201; +constexpr chip::ClusterId kWakeOnLanClusterId = 0x0503; + +/*----------------------------------------------------------------------------*\ +| Cluster AccountLogin | 0x050E | +|------------------------------------------------------------------------------| +| Commands: | | +| * GetSetupPIN | 0x00 | +| * Login | 0x01 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/* + * Command GetSetupPIN + */ +class AccountLoginGetSetupPIN : public ModelCommand +{ +public: + AccountLoginGetSetupPIN() : ModelCommand("get-setup-pin") + { + AddArgument("tempAccountIdentifier", &mTempAccountIdentifier); + ModelCommand::AddArguments(); + } + ~AccountLoginGetSetupPIN() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x050E) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::AccountLoginCluster cluster; + cluster.Associate(device, endpointId); + return cluster.GetSetupPIN(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mTempAccountIdentifier), strlen(mTempAccountIdentifier))); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnAccountLoginClusterGetSetupPINResponse, + this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + char * mTempAccountIdentifier; +}; + +/* + * Command Login + */ +class AccountLoginLogin : public ModelCommand +{ +public: + AccountLoginLogin() : ModelCommand("login") + { + AddArgument("tempAccountIdentifier", &mTempAccountIdentifier); + AddArgument("setupPIN", &mSetupPIN); + ModelCommand::AddArguments(); + } + ~AccountLoginLogin() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x050E) command (0x01) on endpoint %" PRIu16, endpointId); + + chip::Controller::AccountLoginCluster cluster; + cluster.Associate(device, endpointId); + return cluster.Login(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mTempAccountIdentifier), strlen(mTempAccountIdentifier)), + chip::ByteSpan(chip::Uint8::from_char(mSetupPIN), strlen(mSetupPIN))); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + char * mTempAccountIdentifier; + char * mSetupPIN; +}; + +/* + * Discover Attributes + */ +class DiscoverAccountLoginAttributes : public ModelCommand +{ +public: + DiscoverAccountLoginAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + + ~DiscoverAccountLoginAttributes() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + + chip::Controller::AccountLoginCluster cluster; + cluster.Associate(device, endpointId); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute ClusterRevision + */ +class ReadAccountLoginClusterRevision : public ModelCommand +{ +public: + ReadAccountLoginClusterRevision() : ModelCommand("read") + { + AddArgument("attr-name", "cluster-revision"); + ModelCommand::AddArguments(); + } + + ~ReadAccountLoginClusterRevision() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x050E) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::AccountLoginCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; /*----------------------------------------------------------------------------*\ | Cluster ApplicationBasic | 0x050D | @@ -954,32 +1269,30 @@ class ReadApplicationBasicClusterRevision : public ModelCommand }; /*----------------------------------------------------------------------------*\ -| Cluster BarrierControl | 0x0103 | +| Cluster ApplicationLauncher | 0x050C | |------------------------------------------------------------------------------| | Commands: | | -| * BarrierControlGoToPercent | 0x00 | -| * BarrierControlStop | 0x01 | +| * LaunchApp | 0x00 | |------------------------------------------------------------------------------| | Attributes: | | -| * BarrierMovingState | 0x0001 | -| * BarrierSafetyStatus | 0x0002 | -| * BarrierCapabilities | 0x0003 | -| * BarrierPosition | 0x000A | +| * ApplicationLauncherList | 0x0000 | | * ClusterRevision | 0xFFFD | \*----------------------------------------------------------------------------*/ /* - * Command BarrierControlGoToPercent + * Command LaunchApp */ -class BarrierControlBarrierControlGoToPercent : public ModelCommand +class ApplicationLauncherLaunchApp : public ModelCommand { public: - BarrierControlBarrierControlGoToPercent() : ModelCommand("barrier-control-go-to-percent") + ApplicationLauncherLaunchApp() : ModelCommand("launch-app") { - AddArgument("percentOpen", 0, UINT8_MAX, &mPercentOpen); + AddArgument("data", &mData); + AddArgument("catalogVendorId", 0, UINT16_MAX, &mCatalogVendorId); + AddArgument("applicationId", &mApplicationId); ModelCommand::AddArguments(); } - ~BarrierControlBarrierControlGoToPercent() + ~ApplicationLauncherLaunchApp() { delete onSuccessCallback; delete onFailureCallback; @@ -987,29 +1300,35 @@ class BarrierControlBarrierControlGoToPercent : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x050C) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::BarrierControlCluster cluster; + chip::Controller::ApplicationLauncherCluster cluster; cluster.Associate(device, endpointId); - return cluster.BarrierControlGoToPercent(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mPercentOpen); + return cluster.LaunchApp(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mData), strlen(mData)), mCatalogVendorId, + chip::ByteSpan(chip::Uint8::from_char(mApplicationId), strlen(mApplicationId))); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnApplicationLauncherClusterLaunchAppResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mPercentOpen; + char * mData; + uint16_t mCatalogVendorId; + char * mApplicationId; }; /* - * Command BarrierControlStop + * Discover Attributes */ -class BarrierControlBarrierControlStop : public ModelCommand +class DiscoverApplicationLauncherAttributes : public ModelCommand { public: - BarrierControlBarrierControlStop() : ModelCommand("barrier-control-stop") { ModelCommand::AddArguments(); } - ~BarrierControlBarrierControlStop() + DiscoverApplicationLauncherAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + + ~DiscoverApplicationLauncherAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -1017,11 +1336,11 @@ class BarrierControlBarrierControlStop : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::BarrierControlCluster cluster; + chip::Controller::ApplicationLauncherCluster cluster; cluster.Associate(device, endpointId); - return cluster.BarrierControlStop(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -1032,14 +1351,18 @@ class BarrierControlBarrierControlStop : public ModelCommand }; /* - * Discover Attributes + * Attribute ApplicationLauncherList */ -class DiscoverBarrierControlAttributes : public ModelCommand +class ReadApplicationLauncherApplicationLauncherList : public ModelCommand { public: - DiscoverBarrierControlAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + ReadApplicationLauncherApplicationLauncherList() : ModelCommand("read") + { + AddArgument("attr-name", "application-launcher-list"); + ModelCommand::AddArguments(); + } - ~DiscoverBarrierControlAttributes() + ~ReadApplicationLauncherApplicationLauncherList() { delete onSuccessCallback; delete onFailureCallback; @@ -1047,33 +1370,33 @@ class DiscoverBarrierControlAttributes : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x050C) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::BarrierControlCluster cluster; + chip::Controller::ApplicationLauncherCluster cluster; cluster.Associate(device, endpointId); - return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeApplicationLauncherList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute BarrierMovingState + * Attribute ClusterRevision */ -class ReadBarrierControlBarrierMovingState : public ModelCommand +class ReadApplicationLauncherClusterRevision : public ModelCommand { public: - ReadBarrierControlBarrierMovingState() : ModelCommand("read") + ReadApplicationLauncherClusterRevision() : ModelCommand("read") { - AddArgument("attr-name", "barrier-moving-state"); + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ReadBarrierControlBarrierMovingState() + ~ReadApplicationLauncherClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -1081,33 +1404,45 @@ class ReadBarrierControlBarrierMovingState : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x050C) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::BarrierControlCluster cluster; + chip::Controller::ApplicationLauncherCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeBarrierMovingState(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; +/*----------------------------------------------------------------------------*\ +| Cluster AudioOutput | 0x050B | +|------------------------------------------------------------------------------| +| Commands: | | +| * RenameOutput | 0x01 | +| * SelectOutput | 0x00 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * AudioOutputList | 0x0000 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + /* - * Attribute BarrierSafetyStatus + * Command RenameOutput */ -class ReadBarrierControlBarrierSafetyStatus : public ModelCommand +class AudioOutputRenameOutput : public ModelCommand { public: - ReadBarrierControlBarrierSafetyStatus() : ModelCommand("read") + AudioOutputRenameOutput() : ModelCommand("rename-output") { - AddArgument("attr-name", "barrier-safety-status"); + AddArgument("index", 0, UINT8_MAX, &mIndex); + AddArgument("name", &mName); ModelCommand::AddArguments(); } - - ~ReadBarrierControlBarrierSafetyStatus() + ~AudioOutputRenameOutput() { delete onSuccessCallback; delete onFailureCallback; @@ -1115,33 +1450,66 @@ class ReadBarrierControlBarrierSafetyStatus : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x050B) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::BarrierControlCluster cluster; + chip::Controller::AudioOutputCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeBarrierSafetyStatus(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.RenameOutput(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mIndex, + chip::ByteSpan(chip::Uint8::from_char(mName), strlen(mName))); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mIndex; + char * mName; }; /* - * Attribute BarrierCapabilities + * Command SelectOutput */ -class ReadBarrierControlBarrierCapabilities : public ModelCommand +class AudioOutputSelectOutput : public ModelCommand { public: - ReadBarrierControlBarrierCapabilities() : ModelCommand("read") + AudioOutputSelectOutput() : ModelCommand("select-output") { - AddArgument("attr-name", "barrier-capabilities"); + AddArgument("index", 0, UINT8_MAX, &mIndex); ModelCommand::AddArguments(); } + ~AudioOutputSelectOutput() + { + delete onSuccessCallback; + delete onFailureCallback; + } - ~ReadBarrierControlBarrierCapabilities() + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x050B) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::AudioOutputCluster cluster; + cluster.Associate(device, endpointId); + return cluster.SelectOutput(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mIndex); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mIndex; +}; + +/* + * Discover Attributes + */ +class DiscoverAudioOutputAttributes : public ModelCommand +{ +public: + DiscoverAudioOutputAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + + ~DiscoverAudioOutputAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -1149,33 +1517,33 @@ class ReadBarrierControlBarrierCapabilities : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::BarrierControlCluster cluster; + chip::Controller::AudioOutputCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeBarrierCapabilities(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute BarrierPosition + * Attribute AudioOutputList */ -class ReadBarrierControlBarrierPosition : public ModelCommand +class ReadAudioOutputAudioOutputList : public ModelCommand { public: - ReadBarrierControlBarrierPosition() : ModelCommand("read") + ReadAudioOutputAudioOutputList() : ModelCommand("read") { - AddArgument("attr-name", "barrier-position"); + AddArgument("attr-name", "audio-output-list"); ModelCommand::AddArguments(); } - ~ReadBarrierControlBarrierPosition() + ~ReadAudioOutputAudioOutputList() { delete onSuccessCallback; delete onFailureCallback; @@ -1183,16 +1551,16 @@ class ReadBarrierControlBarrierPosition : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x050B) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::BarrierControlCluster cluster; + chip::Controller::AudioOutputCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeBarrierPosition(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeAudioOutputList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; @@ -1200,16 +1568,16 @@ class ReadBarrierControlBarrierPosition : public ModelCommand /* * Attribute ClusterRevision */ -class ReadBarrierControlClusterRevision : public ModelCommand +class ReadAudioOutputClusterRevision : public ModelCommand { public: - ReadBarrierControlClusterRevision() : ModelCommand("read") + ReadAudioOutputClusterRevision() : ModelCommand("read") { AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ReadBarrierControlClusterRevision() + ~ReadAudioOutputClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -1217,9 +1585,9 @@ class ReadBarrierControlClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x050B) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::BarrierControlCluster cluster; + chip::Controller::AudioOutputCluster cluster; cluster.Associate(device, endpointId); return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } @@ -1232,40 +1600,32 @@ class ReadBarrierControlClusterRevision : public ModelCommand }; /*----------------------------------------------------------------------------*\ -| Cluster Basic | 0x0028 | +| Cluster BarrierControl | 0x0103 | |------------------------------------------------------------------------------| | Commands: | | -| * MfgSpecificPing | 0x00 | +| * BarrierControlGoToPercent | 0x00 | +| * BarrierControlStop | 0x01 | |------------------------------------------------------------------------------| | Attributes: | | -| * InteractionModelVersion | 0x0000 | -| * VendorName | 0x0001 | -| * VendorID | 0x0002 | -| * ProductName | 0x0003 | -| * ProductID | 0x0004 | -| * UserLabel | 0x0005 | -| * Location | 0x0006 | -| * HardwareVersion | 0x0007 | -| * HardwareVersionString | 0x0008 | -| * SoftwareVersion | 0x0009 | -| * SoftwareVersionString | 0x000A | -| * ManufacturingDate | 0x000B | -| * PartNumber | 0x000C | -| * ProductURL | 0x000D | -| * ProductLabel | 0x000E | -| * SerialNumber | 0x000F | -| * LocalConfigDisabled | 0x0010 | +| * BarrierMovingState | 0x0001 | +| * BarrierSafetyStatus | 0x0002 | +| * BarrierCapabilities | 0x0003 | +| * BarrierPosition | 0x000A | | * ClusterRevision | 0xFFFD | \*----------------------------------------------------------------------------*/ /* - * Command MfgSpecificPing + * Command BarrierControlGoToPercent */ -class BasicMfgSpecificPing : public ModelCommand +class BarrierControlBarrierControlGoToPercent : public ModelCommand { public: - BasicMfgSpecificPing() : ModelCommand("mfg-specific-ping") { ModelCommand::AddArguments(); } - ~BasicMfgSpecificPing() + BarrierControlBarrierControlGoToPercent() : ModelCommand("barrier-control-go-to-percent") + { + AddArgument("percentOpen", 0, UINT8_MAX, &mPercentOpen); + ModelCommand::AddArguments(); + } + ~BarrierControlBarrierControlGoToPercent() { delete onSuccessCallback; delete onFailureCallback; @@ -1273,11 +1633,11 @@ class BasicMfgSpecificPing : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::BasicCluster cluster; + chip::Controller::BarrierControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.MfgSpecificPing(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.BarrierControlGoToPercent(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mPercentOpen); } private: @@ -1285,17 +1645,17 @@ class BasicMfgSpecificPing : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mPercentOpen; }; /* - * Discover Attributes + * Command BarrierControlStop */ -class DiscoverBasicAttributes : public ModelCommand +class BarrierControlBarrierControlStop : public ModelCommand { public: - DiscoverBasicAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - - ~DiscoverBasicAttributes() + BarrierControlBarrierControlStop() : ModelCommand("barrier-control-stop") { ModelCommand::AddArguments(); } + ~BarrierControlBarrierControlStop() { delete onSuccessCallback; delete onFailureCallback; @@ -1303,11 +1663,11 @@ class DiscoverBasicAttributes : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::BasicCluster cluster; + chip::Controller::BarrierControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.BarrierControlStop(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -1318,18 +1678,14 @@ class DiscoverBasicAttributes : public ModelCommand }; /* - * Attribute InteractionModelVersion + * Discover Attributes */ -class ReadBasicInteractionModelVersion : public ModelCommand +class DiscoverBarrierControlAttributes : public ModelCommand { public: - ReadBasicInteractionModelVersion() : ModelCommand("read") - { - AddArgument("attr-name", "interaction-model-version"); - ModelCommand::AddArguments(); - } + DiscoverBarrierControlAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - ~ReadBasicInteractionModelVersion() + ~DiscoverBarrierControlAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -1337,33 +1693,33 @@ class ReadBasicInteractionModelVersion : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::BasicCluster cluster; + chip::Controller::BarrierControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeInteractionModelVersion(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute VendorName + * Attribute BarrierMovingState */ -class ReadBasicVendorName : public ModelCommand +class ReadBarrierControlBarrierMovingState : public ModelCommand { public: - ReadBasicVendorName() : ModelCommand("read") + ReadBarrierControlBarrierMovingState() : ModelCommand("read") { - AddArgument("attr-name", "vendor-name"); + AddArgument("attr-name", "barrier-moving-state"); ModelCommand::AddArguments(); } - ~ReadBasicVendorName() + ~ReadBarrierControlBarrierMovingState() { delete onSuccessCallback; delete onFailureCallback; @@ -1371,33 +1727,33 @@ class ReadBasicVendorName : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::BasicCluster cluster; + chip::Controller::BarrierControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeVendorName(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeBarrierMovingState(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnStringAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute VendorID + * Attribute BarrierSafetyStatus */ -class ReadBasicVendorID : public ModelCommand +class ReadBarrierControlBarrierSafetyStatus : public ModelCommand { public: - ReadBasicVendorID() : ModelCommand("read") + ReadBarrierControlBarrierSafetyStatus() : ModelCommand("read") { - AddArgument("attr-name", "vendor-id"); + AddArgument("attr-name", "barrier-safety-status"); ModelCommand::AddArguments(); } - ~ReadBasicVendorID() + ~ReadBarrierControlBarrierSafetyStatus() { delete onSuccessCallback; delete onFailureCallback; @@ -1405,11 +1761,11 @@ class ReadBasicVendorID : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::BasicCluster cluster; + chip::Controller::BarrierControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeVendorID(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeBarrierSafetyStatus(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -1420,18 +1776,18 @@ class ReadBasicVendorID : public ModelCommand }; /* - * Attribute ProductName + * Attribute BarrierCapabilities */ -class ReadBasicProductName : public ModelCommand +class ReadBarrierControlBarrierCapabilities : public ModelCommand { public: - ReadBasicProductName() : ModelCommand("read") + ReadBarrierControlBarrierCapabilities() : ModelCommand("read") { - AddArgument("attr-name", "product-name"); + AddArgument("attr-name", "barrier-capabilities"); ModelCommand::AddArguments(); } - ~ReadBasicProductName() + ~ReadBarrierControlBarrierCapabilities() { delete onSuccessCallback; delete onFailureCallback; @@ -1439,33 +1795,33 @@ class ReadBasicProductName : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::BasicCluster cluster; + chip::Controller::BarrierControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeProductName(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeBarrierCapabilities(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnStringAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute ProductID + * Attribute BarrierPosition */ -class ReadBasicProductID : public ModelCommand +class ReadBarrierControlBarrierPosition : public ModelCommand { public: - ReadBasicProductID() : ModelCommand("read") + ReadBarrierControlBarrierPosition() : ModelCommand("read") { - AddArgument("attr-name", "product-id"); + AddArgument("attr-name", "barrier-position"); ModelCommand::AddArguments(); } - ~ReadBasicProductID() + ~ReadBarrierControlBarrierPosition() { delete onSuccessCallback; delete onFailureCallback; @@ -1473,33 +1829,33 @@ class ReadBasicProductID : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::BasicCluster cluster; + chip::Controller::BarrierControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeProductID(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeBarrierPosition(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute UserLabel + * Attribute ClusterRevision */ -class ReadBasicUserLabel : public ModelCommand +class ReadBarrierControlClusterRevision : public ModelCommand { public: - ReadBasicUserLabel() : ModelCommand("read") + ReadBarrierControlClusterRevision() : ModelCommand("read") { - AddArgument("attr-name", "user-label"); + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ReadBasicUserLabel() + ~ReadBarrierControlClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -1507,31 +1863,55 @@ class ReadBasicUserLabel : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0103) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::BasicCluster cluster; + chip::Controller::BarrierControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeUserLabel(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnStringAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class WriteBasicUserLabel : public ModelCommand +/*----------------------------------------------------------------------------*\ +| Cluster Basic | 0x0028 | +|------------------------------------------------------------------------------| +| Commands: | | +| * MfgSpecificPing | 0x00 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * InteractionModelVersion | 0x0000 | +| * VendorName | 0x0001 | +| * VendorID | 0x0002 | +| * ProductName | 0x0003 | +| * ProductID | 0x0004 | +| * UserLabel | 0x0005 | +| * Location | 0x0006 | +| * HardwareVersion | 0x0007 | +| * HardwareVersionString | 0x0008 | +| * SoftwareVersion | 0x0009 | +| * SoftwareVersionString | 0x000A | +| * ManufacturingDate | 0x000B | +| * PartNumber | 0x000C | +| * ProductURL | 0x000D | +| * ProductLabel | 0x000E | +| * SerialNumber | 0x000F | +| * LocalConfigDisabled | 0x0010 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/* + * Command MfgSpecificPing + */ +class BasicMfgSpecificPing : public ModelCommand { public: - WriteBasicUserLabel() : ModelCommand("write") - { - AddArgument("attr-name", "user-label"); - AddArgument("attr-value", &mValue); - ModelCommand::AddArguments(); - } - - ~WriteBasicUserLabel() + BasicMfgSpecificPing() : ModelCommand("mfg-specific-ping") { ModelCommand::AddArguments(); } + ~BasicMfgSpecificPing() { delete onSuccessCallback; delete onFailureCallback; @@ -1539,12 +1919,11 @@ class WriteBasicUserLabel : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeUserLabel(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), - chip::ByteSpan(chip::Uint8::from_char(mValue), strlen(mValue))); + return cluster.MfgSpecificPing(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -1552,22 +1931,17 @@ class WriteBasicUserLabel : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - char * mValue; }; /* - * Attribute Location + * Discover Attributes */ -class ReadBasicLocation : public ModelCommand +class DiscoverBasicAttributes : public ModelCommand { public: - ReadBasicLocation() : ModelCommand("read") - { - AddArgument("attr-name", "location"); - ModelCommand::AddArguments(); - } + DiscoverBasicAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - ~ReadBasicLocation() + ~DiscoverBasicAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -1575,31 +1949,33 @@ class ReadBasicLocation : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeLocation(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnStringAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class WriteBasicLocation : public ModelCommand +/* + * Attribute InteractionModelVersion + */ +class ReadBasicInteractionModelVersion : public ModelCommand { public: - WriteBasicLocation() : ModelCommand("write") + ReadBasicInteractionModelVersion() : ModelCommand("read") { - AddArgument("attr-name", "location"); - AddArgument("attr-value", &mValue); + AddArgument("attr-name", "interaction-model-version"); ModelCommand::AddArguments(); } - ~WriteBasicLocation() + ~ReadBasicInteractionModelVersion() { delete onSuccessCallback; delete onFailureCallback; @@ -1607,35 +1983,33 @@ class WriteBasicLocation : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeLocation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), - chip::ByteSpan(chip::Uint8::from_char(mValue), strlen(mValue))); + return cluster.ReadAttributeInteractionModelVersion(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - char * mValue; }; /* - * Attribute HardwareVersion + * Attribute VendorName */ -class ReadBasicHardwareVersion : public ModelCommand +class ReadBasicVendorName : public ModelCommand { public: - ReadBasicHardwareVersion() : ModelCommand("read") + ReadBasicVendorName() : ModelCommand("read") { - AddArgument("attr-name", "hardware-version"); + AddArgument("attr-name", "vendor-name"); ModelCommand::AddArguments(); } - ~ReadBasicHardwareVersion() + ~ReadBasicVendorName() { delete onSuccessCallback; delete onFailureCallback; @@ -1647,29 +2021,29 @@ class ReadBasicHardwareVersion : public ModelCommand chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeHardwareVersion(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeVendorName(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute HardwareVersionString + * Attribute VendorID */ -class ReadBasicHardwareVersionString : public ModelCommand +class ReadBasicVendorID : public ModelCommand { public: - ReadBasicHardwareVersionString() : ModelCommand("read") + ReadBasicVendorID() : ModelCommand("read") { - AddArgument("attr-name", "hardware-version-string"); + AddArgument("attr-name", "vendor-id"); ModelCommand::AddArguments(); } - ~ReadBasicHardwareVersionString() + ~ReadBasicVendorID() { delete onSuccessCallback; delete onFailureCallback; @@ -1681,29 +2055,29 @@ class ReadBasicHardwareVersionString : public ModelCommand chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeHardwareVersionString(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeVendorID(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnStringAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute SoftwareVersion + * Attribute ProductName */ -class ReadBasicSoftwareVersion : public ModelCommand +class ReadBasicProductName : public ModelCommand { public: - ReadBasicSoftwareVersion() : ModelCommand("read") + ReadBasicProductName() : ModelCommand("read") { - AddArgument("attr-name", "software-version"); + AddArgument("attr-name", "product-name"); ModelCommand::AddArguments(); } - ~ReadBasicSoftwareVersion() + ~ReadBasicProductName() { delete onSuccessCallback; delete onFailureCallback; @@ -1715,29 +2089,29 @@ class ReadBasicSoftwareVersion : public ModelCommand chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeSoftwareVersion(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeProductName(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt32uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute SoftwareVersionString + * Attribute ProductID */ -class ReadBasicSoftwareVersionString : public ModelCommand +class ReadBasicProductID : public ModelCommand { public: - ReadBasicSoftwareVersionString() : ModelCommand("read") + ReadBasicProductID() : ModelCommand("read") { - AddArgument("attr-name", "software-version-string"); + AddArgument("attr-name", "product-id"); ModelCommand::AddArguments(); } - ~ReadBasicSoftwareVersionString() + ~ReadBasicProductID() { delete onSuccessCallback; delete onFailureCallback; @@ -1749,29 +2123,29 @@ class ReadBasicSoftwareVersionString : public ModelCommand chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeSoftwareVersionString(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeProductID(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnStringAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute ManufacturingDate + * Attribute UserLabel */ -class ReadBasicManufacturingDate : public ModelCommand +class ReadBasicUserLabel : public ModelCommand { public: - ReadBasicManufacturingDate() : ModelCommand("read") + ReadBasicUserLabel() : ModelCommand("read") { - AddArgument("attr-name", "manufacturing-date"); + AddArgument("attr-name", "user-label"); ModelCommand::AddArguments(); } - ~ReadBasicManufacturingDate() + ~ReadBasicUserLabel() { delete onSuccessCallback; delete onFailureCallback; @@ -1783,7 +2157,7 @@ class ReadBasicManufacturingDate : public ModelCommand chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeManufacturingDate(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeUserLabel(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -1793,19 +2167,17 @@ class ReadBasicManufacturingDate : public ModelCommand new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -/* - * Attribute PartNumber - */ -class ReadBasicPartNumber : public ModelCommand +class WriteBasicUserLabel : public ModelCommand { public: - ReadBasicPartNumber() : ModelCommand("read") + WriteBasicUserLabel() : ModelCommand("write") { - AddArgument("attr-name", "part-number"); + AddArgument("attr-name", "user-label"); + AddArgument("attr-value", &mValue); ModelCommand::AddArguments(); } - ~ReadBasicPartNumber() + ~WriteBasicUserLabel() { delete onSuccessCallback; delete onFailureCallback; @@ -1813,33 +2185,35 @@ class ReadBasicPartNumber : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x01) on endpoint %" PRIu16, endpointId); chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePartNumber(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.WriteAttributeUserLabel(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mValue), strlen(mValue))); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnStringAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + char * mValue; }; /* - * Attribute ProductURL + * Attribute Location */ -class ReadBasicProductURL : public ModelCommand +class ReadBasicLocation : public ModelCommand { public: - ReadBasicProductURL() : ModelCommand("read") + ReadBasicLocation() : ModelCommand("read") { - AddArgument("attr-name", "product-url"); + AddArgument("attr-name", "location"); ModelCommand::AddArguments(); } - ~ReadBasicProductURL() + ~ReadBasicLocation() { delete onSuccessCallback; delete onFailureCallback; @@ -1851,7 +2225,7 @@ class ReadBasicProductURL : public ModelCommand chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeProductURL(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeLocation(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -1861,19 +2235,17 @@ class ReadBasicProductURL : public ModelCommand new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -/* - * Attribute ProductLabel - */ -class ReadBasicProductLabel : public ModelCommand +class WriteBasicLocation : public ModelCommand { public: - ReadBasicProductLabel() : ModelCommand("read") + WriteBasicLocation() : ModelCommand("write") { - AddArgument("attr-name", "product-label"); + AddArgument("attr-name", "location"); + AddArgument("attr-value", &mValue); ModelCommand::AddArguments(); } - ~ReadBasicProductLabel() + ~WriteBasicLocation() { delete onSuccessCallback; delete onFailureCallback; @@ -1881,33 +2253,35 @@ class ReadBasicProductLabel : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x01) on endpoint %" PRIu16, endpointId); chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeProductLabel(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.WriteAttributeLocation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mValue), strlen(mValue))); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnStringAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + char * mValue; }; /* - * Attribute SerialNumber + * Attribute HardwareVersion */ -class ReadBasicSerialNumber : public ModelCommand +class ReadBasicHardwareVersion : public ModelCommand { public: - ReadBasicSerialNumber() : ModelCommand("read") + ReadBasicHardwareVersion() : ModelCommand("read") { - AddArgument("attr-name", "serial-number"); + AddArgument("attr-name", "hardware-version"); ModelCommand::AddArguments(); } - ~ReadBasicSerialNumber() + ~ReadBasicHardwareVersion() { delete onSuccessCallback; delete onFailureCallback; @@ -1919,29 +2293,29 @@ class ReadBasicSerialNumber : public ModelCommand chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeSerialNumber(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeHardwareVersion(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnStringAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute LocalConfigDisabled + * Attribute HardwareVersionString */ -class ReadBasicLocalConfigDisabled : public ModelCommand +class ReadBasicHardwareVersionString : public ModelCommand { public: - ReadBasicLocalConfigDisabled() : ModelCommand("read") + ReadBasicHardwareVersionString() : ModelCommand("read") { - AddArgument("attr-name", "local-config-disabled"); + AddArgument("attr-name", "hardware-version-string"); ModelCommand::AddArguments(); } - ~ReadBasicLocalConfigDisabled() + ~ReadBasicHardwareVersionString() { delete onSuccessCallback; delete onFailureCallback; @@ -1953,27 +2327,29 @@ class ReadBasicLocalConfigDisabled : public ModelCommand chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeLocalConfigDisabled(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeHardwareVersionString(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnBooleanAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class WriteBasicLocalConfigDisabled : public ModelCommand +/* + * Attribute SoftwareVersion + */ +class ReadBasicSoftwareVersion : public ModelCommand { public: - WriteBasicLocalConfigDisabled() : ModelCommand("write") + ReadBasicSoftwareVersion() : ModelCommand("read") { - AddArgument("attr-name", "local-config-disabled"); - AddArgument("attr-value", 0, UINT8_MAX, &mValue); + AddArgument("attr-name", "software-version"); ModelCommand::AddArguments(); } - ~WriteBasicLocalConfigDisabled() + ~ReadBasicSoftwareVersion() { delete onSuccessCallback; delete onFailureCallback; @@ -1981,34 +2357,33 @@ class WriteBasicLocalConfigDisabled : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeLocalConfigDisabled(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.ReadAttributeSoftwareVersion(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt32uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mValue; }; /* - * Attribute ClusterRevision + * Attribute SoftwareVersionString */ -class ReadBasicClusterRevision : public ModelCommand +class ReadBasicSoftwareVersionString : public ModelCommand { public: - ReadBasicClusterRevision() : ModelCommand("read") + ReadBasicSoftwareVersionString() : ModelCommand("read") { - AddArgument("attr-name", "cluster-revision"); + AddArgument("attr-name", "software-version-string"); ModelCommand::AddArguments(); } - ~ReadBasicClusterRevision() + ~ReadBasicSoftwareVersionString() { delete onSuccessCallback; delete onFailureCallback; @@ -2020,42 +2395,29 @@ class ReadBasicClusterRevision : public ModelCommand chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeSoftwareVersionString(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -/*----------------------------------------------------------------------------*\ -| Cluster Binding | 0xF000 | -|------------------------------------------------------------------------------| -| Commands: | | -| * Bind | 0x00 | -| * Unbind | 0x01 | -|------------------------------------------------------------------------------| -| Attributes: | | -| * ClusterRevision | 0xFFFD | -\*----------------------------------------------------------------------------*/ - /* - * Command Bind + * Attribute ManufacturingDate */ -class BindingBind : public ModelCommand +class ReadBasicManufacturingDate : public ModelCommand { public: - BindingBind() : ModelCommand("bind") + ReadBasicManufacturingDate() : ModelCommand("read") { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("groupId", 0, UINT16_MAX, &mGroupId); - AddArgument("endpointId", 0, UINT8_MAX, &mEndpointId); - AddArgument("clusterId", 0, UINT16_MAX, &mClusterId); + AddArgument("attr-name", "manufacturing-date"); ModelCommand::AddArguments(); } - ~BindingBind() + + ~ReadBasicManufacturingDate() { delete onSuccessCallback; delete onFailureCallback; @@ -2063,39 +2425,33 @@ class BindingBind : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0xF000) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::BindingCluster cluster; + chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.Bind(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mNodeId, mGroupId, mEndpointId, mClusterId); + return cluster.ReadAttributeManufacturingDate(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - chip::NodeId mNodeId; - chip::GroupId mGroupId; - chip::EndpointId mEndpointId; - chip::ClusterId mClusterId; }; /* - * Command Unbind + * Attribute PartNumber */ -class BindingUnbind : public ModelCommand +class ReadBasicPartNumber : public ModelCommand { public: - BindingUnbind() : ModelCommand("unbind") + ReadBasicPartNumber() : ModelCommand("read") { - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("groupId", 0, UINT16_MAX, &mGroupId); - AddArgument("endpointId", 0, UINT8_MAX, &mEndpointId); - AddArgument("clusterId", 0, UINT16_MAX, &mClusterId); + AddArgument("attr-name", "part-number"); ModelCommand::AddArguments(); } - ~BindingUnbind() + + ~ReadBasicPartNumber() { delete onSuccessCallback; delete onFailureCallback; @@ -2103,33 +2459,33 @@ class BindingUnbind : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0xF000) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::BindingCluster cluster; + chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.Unbind(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mNodeId, mGroupId, mEndpointId, mClusterId); + return cluster.ReadAttributePartNumber(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - chip::NodeId mNodeId; - chip::GroupId mGroupId; - chip::EndpointId mEndpointId; - chip::ClusterId mClusterId; }; /* - * Discover Attributes + * Attribute ProductURL */ -class DiscoverBindingAttributes : public ModelCommand +class ReadBasicProductURL : public ModelCommand { public: - DiscoverBindingAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + ReadBasicProductURL() : ModelCommand("read") + { + AddArgument("attr-name", "product-url"); + ModelCommand::AddArguments(); + } - ~DiscoverBindingAttributes() + ~ReadBasicProductURL() { delete onSuccessCallback; delete onFailureCallback; @@ -2137,33 +2493,33 @@ class DiscoverBindingAttributes : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::BindingCluster cluster; + chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeProductURL(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute ClusterRevision + * Attribute ProductLabel */ -class ReadBindingClusterRevision : public ModelCommand +class ReadBasicProductLabel : public ModelCommand { public: - ReadBindingClusterRevision() : ModelCommand("read") + ReadBasicProductLabel() : ModelCommand("read") { - AddArgument("attr-name", "cluster-revision"); + AddArgument("attr-name", "product-label"); ModelCommand::AddArguments(); } - ~ReadBindingClusterRevision() + ~ReadBasicProductLabel() { delete onSuccessCallback; delete onFailureCallback; @@ -2171,108 +2527,33 @@ class ReadBindingClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0xF000) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::BindingCluster cluster; + chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeProductLabel(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -/*----------------------------------------------------------------------------*\ -| Cluster ColorControl | 0x0300 | -|------------------------------------------------------------------------------| -| Commands: | | -| * MoveColor | 0x08 | -| * MoveColorTemperature | 0x4B | -| * MoveHue | 0x01 | -| * MoveSaturation | 0x04 | -| * MoveToColor | 0x07 | -| * MoveToColorTemperature | 0x0A | -| * MoveToHue | 0x00 | -| * MoveToHueAndSaturation | 0x06 | -| * MoveToSaturation | 0x03 | -| * StepColor | 0x09 | -| * StepColorTemperature | 0x4C | -| * StepHue | 0x02 | -| * StepSaturation | 0x05 | -| * StopMoveStep | 0x47 | -|------------------------------------------------------------------------------| -| Attributes: | | -| * CurrentHue | 0x0000 | -| * CurrentSaturation | 0x0001 | -| * RemainingTime | 0x0002 | -| * CurrentX | 0x0003 | -| * CurrentY | 0x0004 | -| * DriftCompensation | 0x0005 | -| * CompensationText | 0x0006 | -| * ColorTemperature | 0x0007 | -| * ColorMode | 0x0008 | -| * ColorControlOptions | 0x000F | -| * NumberOfPrimaries | 0x0010 | -| * Primary1X | 0x0011 | -| * Primary1Y | 0x0012 | -| * Primary1Intensity | 0x0013 | -| * Primary2X | 0x0015 | -| * Primary2Y | 0x0016 | -| * Primary2Intensity | 0x0017 | -| * Primary3X | 0x0019 | -| * Primary3Y | 0x001A | -| * Primary3Intensity | 0x001B | -| * Primary4X | 0x0020 | -| * Primary4Y | 0x0021 | -| * Primary4Intensity | 0x0022 | -| * Primary5X | 0x0024 | -| * Primary5Y | 0x0025 | -| * Primary5Intensity | 0x0026 | -| * Primary6X | 0x0028 | -| * Primary6Y | 0x0029 | -| * Primary6Intensity | 0x002A | -| * WhitePointX | 0x0030 | -| * WhitePointY | 0x0031 | -| * ColorPointRX | 0x0032 | -| * ColorPointRY | 0x0033 | -| * ColorPointRIntensity | 0x0034 | -| * ColorPointGX | 0x0036 | -| * ColorPointGY | 0x0037 | -| * ColorPointGIntensity | 0x0038 | -| * ColorPointBX | 0x003A | -| * ColorPointBY | 0x003B | -| * ColorPointBIntensity | 0x003C | -| * EnhancedCurrentHue | 0x4000 | -| * EnhancedColorMode | 0x4001 | -| * ColorLoopActive | 0x4002 | -| * ColorLoopDirection | 0x4003 | -| * ColorLoopTime | 0x4004 | -| * ColorCapabilities | 0x400A | -| * ColorTempPhysicalMin | 0x400B | -| * ColorTempPhysicalMax | 0x400C | -| * CoupleColorTempToLevelMinMireds | 0x400D | -| * StartUpColorTemperatureMireds | 0x4010 | -| * ClusterRevision | 0xFFFD | -\*----------------------------------------------------------------------------*/ - /* - * Command MoveColor + * Attribute SerialNumber */ -class ColorControlMoveColor : public ModelCommand +class ReadBasicSerialNumber : public ModelCommand { public: - ColorControlMoveColor() : ModelCommand("move-color") + ReadBasicSerialNumber() : ModelCommand("read") { - AddArgument("rateX", INT16_MIN, INT16_MAX, &mRateX); - AddArgument("rateY", INT16_MIN, INT16_MAX, &mRateY); - AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); - AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + AddArgument("attr-name", "serial-number"); ModelCommand::AddArguments(); } - ~ColorControlMoveColor() + + ~ReadBasicSerialNumber() { delete onSuccessCallback; delete onFailureCallback; @@ -2280,42 +2561,33 @@ class ColorControlMoveColor : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x08) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.MoveColor(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mRateX, mRateY, mOptionsMask, - mOptionsOverride); + return cluster.ReadAttributeSerialNumber(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - int16_t mRateX; - int16_t mRateY; - uint8_t mOptionsMask; - uint8_t mOptionsOverride; }; /* - * Command MoveColorTemperature + * Attribute LocalConfigDisabled */ -class ColorControlMoveColorTemperature : public ModelCommand +class ReadBasicLocalConfigDisabled : public ModelCommand { public: - ColorControlMoveColorTemperature() : ModelCommand("move-color-temperature") + ReadBasicLocalConfigDisabled() : ModelCommand("read") { - AddArgument("moveMode", 0, UINT8_MAX, &mMoveMode); - AddArgument("rate", 0, UINT16_MAX, &mRate); - AddArgument("colorTemperatureMinimum", 0, UINT16_MAX, &mColorTemperatureMinimum); - AddArgument("colorTemperatureMaximum", 0, UINT16_MAX, &mColorTemperatureMaximum); - AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); - AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + AddArgument("attr-name", "local-config-disabled"); ModelCommand::AddArguments(); } - ~ColorControlMoveColorTemperature() + + ~ReadBasicLocalConfigDisabled() { delete onSuccessCallback; delete onFailureCallback; @@ -2323,12 +2595,43 @@ class ColorControlMoveColorTemperature : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x4B) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.MoveColorTemperature(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMoveMode, mRate, - mColorTemperatureMinimum, mColorTemperatureMaximum, mOptionsMask, mOptionsOverride); + return cluster.ReadAttributeLocalConfigDisabled(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnBooleanAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +class WriteBasicLocalConfigDisabled : public ModelCommand +{ +public: + WriteBasicLocalConfigDisabled() : ModelCommand("write") + { + AddArgument("attr-name", "local-config-disabled"); + AddArgument("attr-value", 0, UINT8_MAX, &mValue); + ModelCommand::AddArguments(); + } + + ~WriteBasicLocalConfigDisabled() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x01) on endpoint %" PRIu16, endpointId); + + chip::Controller::BasicCluster cluster; + cluster.Associate(device, endpointId); + return cluster.WriteAttributeLocalConfigDisabled(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); } private: @@ -2336,29 +2639,22 @@ class ColorControlMoveColorTemperature : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mMoveMode; - uint16_t mRate; - uint16_t mColorTemperatureMinimum; - uint16_t mColorTemperatureMaximum; - uint8_t mOptionsMask; - uint8_t mOptionsOverride; + uint8_t mValue; }; /* - * Command MoveHue + * Attribute ClusterRevision */ -class ColorControlMoveHue : public ModelCommand +class ReadBasicClusterRevision : public ModelCommand { public: - ColorControlMoveHue() : ModelCommand("move-hue") + ReadBasicClusterRevision() : ModelCommand("read") { - AddArgument("moveMode", 0, UINT8_MAX, &mMoveMode); - AddArgument("rate", 0, UINT8_MAX, &mRate); - AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); - AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ColorControlMoveHue() + + ~ReadBasicClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -2366,40 +2662,46 @@ class ColorControlMoveHue : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0028) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::BasicCluster cluster; cluster.Associate(device, endpointId); - return cluster.MoveHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMoveMode, mRate, mOptionsMask, - mOptionsOverride); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mMoveMode; - uint8_t mRate; - uint8_t mOptionsMask; - uint8_t mOptionsOverride; }; +/*----------------------------------------------------------------------------*\ +| Cluster Binding | 0xF000 | +|------------------------------------------------------------------------------| +| Commands: | | +| * Bind | 0x00 | +| * Unbind | 0x01 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + /* - * Command MoveSaturation + * Command Bind */ -class ColorControlMoveSaturation : public ModelCommand +class BindingBind : public ModelCommand { public: - ColorControlMoveSaturation() : ModelCommand("move-saturation") + BindingBind() : ModelCommand("bind") { - AddArgument("moveMode", 0, UINT8_MAX, &mMoveMode); - AddArgument("rate", 0, UINT8_MAX, &mRate); - AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); - AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("groupId", 0, UINT16_MAX, &mGroupId); + AddArgument("endpointId", 0, UINT8_MAX, &mEndpointId); + AddArgument("clusterId", 0, UINT16_MAX, &mClusterId); ModelCommand::AddArguments(); } - ~ColorControlMoveSaturation() + ~BindingBind() { delete onSuccessCallback; delete onFailureCallback; @@ -2407,12 +2709,11 @@ class ColorControlMoveSaturation : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x04) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0xF000) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::BindingCluster cluster; cluster.Associate(device, endpointId); - return cluster.MoveSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMoveMode, mRate, mOptionsMask, - mOptionsOverride); + return cluster.Bind(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mNodeId, mGroupId, mEndpointId, mClusterId); } private: @@ -2420,28 +2721,27 @@ class ColorControlMoveSaturation : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mMoveMode; - uint8_t mRate; - uint8_t mOptionsMask; - uint8_t mOptionsOverride; + chip::NodeId mNodeId; + chip::GroupId mGroupId; + chip::EndpointId mEndpointId; + chip::ClusterId mClusterId; }; /* - * Command MoveToColor + * Command Unbind */ -class ColorControlMoveToColor : public ModelCommand +class BindingUnbind : public ModelCommand { public: - ColorControlMoveToColor() : ModelCommand("move-to-color") + BindingUnbind() : ModelCommand("unbind") { - AddArgument("colorX", 0, UINT16_MAX, &mColorX); - AddArgument("colorY", 0, UINT16_MAX, &mColorY); - AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); - AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); - AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("groupId", 0, UINT16_MAX, &mGroupId); + AddArgument("endpointId", 0, UINT8_MAX, &mEndpointId); + AddArgument("clusterId", 0, UINT16_MAX, &mClusterId); ModelCommand::AddArguments(); } - ~ColorControlMoveToColor() + ~BindingUnbind() { delete onSuccessCallback; delete onFailureCallback; @@ -2449,12 +2749,11 @@ class ColorControlMoveToColor : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x07) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0xF000) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::BindingCluster cluster; cluster.Associate(device, endpointId); - return cluster.MoveToColor(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mColorX, mColorY, mTransitionTime, - mOptionsMask, mOptionsOverride); + return cluster.Unbind(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mNodeId, mGroupId, mEndpointId, mClusterId); } private: @@ -2462,28 +2761,55 @@ class ColorControlMoveToColor : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mColorX; - uint16_t mColorY; - uint16_t mTransitionTime; - uint8_t mOptionsMask; - uint8_t mOptionsOverride; + chip::NodeId mNodeId; + chip::GroupId mGroupId; + chip::EndpointId mEndpointId; + chip::ClusterId mClusterId; }; /* - * Command MoveToColorTemperature + * Discover Attributes */ -class ColorControlMoveToColorTemperature : public ModelCommand +class DiscoverBindingAttributes : public ModelCommand { public: - ColorControlMoveToColorTemperature() : ModelCommand("move-to-color-temperature") + DiscoverBindingAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + + ~DiscoverBindingAttributes() { - AddArgument("colorTemperature", 0, UINT16_MAX, &mColorTemperature); - AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); - AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); - AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + + chip::Controller::BindingCluster cluster; + cluster.Associate(device, endpointId); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute ClusterRevision + */ +class ReadBindingClusterRevision : public ModelCommand +{ +public: + ReadBindingClusterRevision() : ModelCommand("read") + { + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ColorControlMoveToColorTemperature() + + ~ReadBindingClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -2491,41 +2817,1681 @@ class ColorControlMoveToColorTemperature : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x0A) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0xF000) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::BindingCluster cluster; cluster.Associate(device, endpointId); - return cluster.MoveToColorTemperature(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mColorTemperature, - mTransitionTime, mOptionsMask, mOptionsOverride); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/*----------------------------------------------------------------------------*\ +| Cluster ColorControl | 0x0300 | +|------------------------------------------------------------------------------| +| Commands: | | +| * MoveColor | 0x08 | +| * MoveColorTemperature | 0x4B | +| * MoveHue | 0x01 | +| * MoveSaturation | 0x04 | +| * MoveToColor | 0x07 | +| * MoveToColorTemperature | 0x0A | +| * MoveToHue | 0x00 | +| * MoveToHueAndSaturation | 0x06 | +| * MoveToSaturation | 0x03 | +| * StepColor | 0x09 | +| * StepColorTemperature | 0x4C | +| * StepHue | 0x02 | +| * StepSaturation | 0x05 | +| * StopMoveStep | 0x47 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * CurrentHue | 0x0000 | +| * CurrentSaturation | 0x0001 | +| * RemainingTime | 0x0002 | +| * CurrentX | 0x0003 | +| * CurrentY | 0x0004 | +| * DriftCompensation | 0x0005 | +| * CompensationText | 0x0006 | +| * ColorTemperature | 0x0007 | +| * ColorMode | 0x0008 | +| * ColorControlOptions | 0x000F | +| * NumberOfPrimaries | 0x0010 | +| * Primary1X | 0x0011 | +| * Primary1Y | 0x0012 | +| * Primary1Intensity | 0x0013 | +| * Primary2X | 0x0015 | +| * Primary2Y | 0x0016 | +| * Primary2Intensity | 0x0017 | +| * Primary3X | 0x0019 | +| * Primary3Y | 0x001A | +| * Primary3Intensity | 0x001B | +| * Primary4X | 0x0020 | +| * Primary4Y | 0x0021 | +| * Primary4Intensity | 0x0022 | +| * Primary5X | 0x0024 | +| * Primary5Y | 0x0025 | +| * Primary5Intensity | 0x0026 | +| * Primary6X | 0x0028 | +| * Primary6Y | 0x0029 | +| * Primary6Intensity | 0x002A | +| * WhitePointX | 0x0030 | +| * WhitePointY | 0x0031 | +| * ColorPointRX | 0x0032 | +| * ColorPointRY | 0x0033 | +| * ColorPointRIntensity | 0x0034 | +| * ColorPointGX | 0x0036 | +| * ColorPointGY | 0x0037 | +| * ColorPointGIntensity | 0x0038 | +| * ColorPointBX | 0x003A | +| * ColorPointBY | 0x003B | +| * ColorPointBIntensity | 0x003C | +| * EnhancedCurrentHue | 0x4000 | +| * EnhancedColorMode | 0x4001 | +| * ColorLoopActive | 0x4002 | +| * ColorLoopDirection | 0x4003 | +| * ColorLoopTime | 0x4004 | +| * ColorCapabilities | 0x400A | +| * ColorTempPhysicalMin | 0x400B | +| * ColorTempPhysicalMax | 0x400C | +| * CoupleColorTempToLevelMinMireds | 0x400D | +| * StartUpColorTemperatureMireds | 0x4010 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/* + * Command MoveColor + */ +class ColorControlMoveColor : public ModelCommand +{ +public: + ColorControlMoveColor() : ModelCommand("move-color") + { + AddArgument("rateX", INT16_MIN, INT16_MAX, &mRateX); + AddArgument("rateY", INT16_MIN, INT16_MAX, &mRateY); + AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); + AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + ModelCommand::AddArguments(); + } + ~ColorControlMoveColor() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x08) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.MoveColor(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mRateX, mRateY, mOptionsMask, + mOptionsOverride); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + int16_t mRateX; + int16_t mRateY; + uint8_t mOptionsMask; + uint8_t mOptionsOverride; +}; + +/* + * Command MoveColorTemperature + */ +class ColorControlMoveColorTemperature : public ModelCommand +{ +public: + ColorControlMoveColorTemperature() : ModelCommand("move-color-temperature") + { + AddArgument("moveMode", 0, UINT8_MAX, &mMoveMode); + AddArgument("rate", 0, UINT16_MAX, &mRate); + AddArgument("colorTemperatureMinimum", 0, UINT16_MAX, &mColorTemperatureMinimum); + AddArgument("colorTemperatureMaximum", 0, UINT16_MAX, &mColorTemperatureMaximum); + AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); + AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + ModelCommand::AddArguments(); + } + ~ColorControlMoveColorTemperature() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x4B) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.MoveColorTemperature(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMoveMode, mRate, + mColorTemperatureMinimum, mColorTemperatureMaximum, mOptionsMask, mOptionsOverride); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mMoveMode; + uint16_t mRate; + uint16_t mColorTemperatureMinimum; + uint16_t mColorTemperatureMaximum; + uint8_t mOptionsMask; + uint8_t mOptionsOverride; +}; + +/* + * Command MoveHue + */ +class ColorControlMoveHue : public ModelCommand +{ +public: + ColorControlMoveHue() : ModelCommand("move-hue") + { + AddArgument("moveMode", 0, UINT8_MAX, &mMoveMode); + AddArgument("rate", 0, UINT8_MAX, &mRate); + AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); + AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + ModelCommand::AddArguments(); + } + ~ColorControlMoveHue() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.MoveHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMoveMode, mRate, mOptionsMask, + mOptionsOverride); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mMoveMode; + uint8_t mRate; + uint8_t mOptionsMask; + uint8_t mOptionsOverride; +}; + +/* + * Command MoveSaturation + */ +class ColorControlMoveSaturation : public ModelCommand +{ +public: + ColorControlMoveSaturation() : ModelCommand("move-saturation") + { + AddArgument("moveMode", 0, UINT8_MAX, &mMoveMode); + AddArgument("rate", 0, UINT8_MAX, &mRate); + AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); + AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + ModelCommand::AddArguments(); + } + ~ColorControlMoveSaturation() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x04) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.MoveSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMoveMode, mRate, mOptionsMask, + mOptionsOverride); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mMoveMode; + uint8_t mRate; + uint8_t mOptionsMask; + uint8_t mOptionsOverride; +}; + +/* + * Command MoveToColor + */ +class ColorControlMoveToColor : public ModelCommand +{ +public: + ColorControlMoveToColor() : ModelCommand("move-to-color") + { + AddArgument("colorX", 0, UINT16_MAX, &mColorX); + AddArgument("colorY", 0, UINT16_MAX, &mColorY); + AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); + AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); + AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + ModelCommand::AddArguments(); + } + ~ColorControlMoveToColor() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x07) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.MoveToColor(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mColorX, mColorY, mTransitionTime, + mOptionsMask, mOptionsOverride); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mColorX; + uint16_t mColorY; + uint16_t mTransitionTime; + uint8_t mOptionsMask; + uint8_t mOptionsOverride; +}; + +/* + * Command MoveToColorTemperature + */ +class ColorControlMoveToColorTemperature : public ModelCommand +{ +public: + ColorControlMoveToColorTemperature() : ModelCommand("move-to-color-temperature") + { + AddArgument("colorTemperature", 0, UINT16_MAX, &mColorTemperature); + AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); + AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); + AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + ModelCommand::AddArguments(); + } + ~ColorControlMoveToColorTemperature() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x0A) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.MoveToColorTemperature(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mColorTemperature, + mTransitionTime, mOptionsMask, mOptionsOverride); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mColorTemperature; + uint16_t mTransitionTime; + uint8_t mOptionsMask; + uint8_t mOptionsOverride; +}; + +/* + * Command MoveToHue + */ +class ColorControlMoveToHue : public ModelCommand +{ +public: + ColorControlMoveToHue() : ModelCommand("move-to-hue") + { + AddArgument("hue", 0, UINT8_MAX, &mHue); + AddArgument("direction", 0, UINT8_MAX, &mDirection); + AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); + AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); + AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + ModelCommand::AddArguments(); + } + ~ColorControlMoveToHue() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.MoveToHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mHue, mDirection, mTransitionTime, + mOptionsMask, mOptionsOverride); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mHue; + uint8_t mDirection; + uint16_t mTransitionTime; + uint8_t mOptionsMask; + uint8_t mOptionsOverride; +}; + +/* + * Command MoveToHueAndSaturation + */ +class ColorControlMoveToHueAndSaturation : public ModelCommand +{ +public: + ColorControlMoveToHueAndSaturation() : ModelCommand("move-to-hue-and-saturation") + { + AddArgument("hue", 0, UINT8_MAX, &mHue); + AddArgument("saturation", 0, UINT8_MAX, &mSaturation); + AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); + AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); + AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + ModelCommand::AddArguments(); + } + ~ColorControlMoveToHueAndSaturation() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.MoveToHueAndSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mHue, mSaturation, + mTransitionTime, mOptionsMask, mOptionsOverride); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mHue; + uint8_t mSaturation; + uint16_t mTransitionTime; + uint8_t mOptionsMask; + uint8_t mOptionsOverride; +}; + +/* + * Command MoveToSaturation + */ +class ColorControlMoveToSaturation : public ModelCommand +{ +public: + ColorControlMoveToSaturation() : ModelCommand("move-to-saturation") + { + AddArgument("saturation", 0, UINT8_MAX, &mSaturation); + AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); + AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); + AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + ModelCommand::AddArguments(); + } + ~ColorControlMoveToSaturation() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x03) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.MoveToSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mSaturation, mTransitionTime, + mOptionsMask, mOptionsOverride); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mSaturation; + uint16_t mTransitionTime; + uint8_t mOptionsMask; + uint8_t mOptionsOverride; +}; + +/* + * Command StepColor + */ +class ColorControlStepColor : public ModelCommand +{ +public: + ColorControlStepColor() : ModelCommand("step-color") + { + AddArgument("stepX", INT16_MIN, INT16_MAX, &mStepX); + AddArgument("stepY", INT16_MIN, INT16_MAX, &mStepY); + AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); + AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); + AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + ModelCommand::AddArguments(); + } + ~ColorControlStepColor() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x09) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.StepColor(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepX, mStepY, mTransitionTime, + mOptionsMask, mOptionsOverride); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + int16_t mStepX; + int16_t mStepY; + uint16_t mTransitionTime; + uint8_t mOptionsMask; + uint8_t mOptionsOverride; +}; + +/* + * Command StepColorTemperature + */ +class ColorControlStepColorTemperature : public ModelCommand +{ +public: + ColorControlStepColorTemperature() : ModelCommand("step-color-temperature") + { + AddArgument("stepMode", 0, UINT8_MAX, &mStepMode); + AddArgument("stepSize", 0, UINT16_MAX, &mStepSize); + AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); + AddArgument("colorTemperatureMinimum", 0, UINT16_MAX, &mColorTemperatureMinimum); + AddArgument("colorTemperatureMaximum", 0, UINT16_MAX, &mColorTemperatureMaximum); + AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); + AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + ModelCommand::AddArguments(); + } + ~ColorControlStepColorTemperature() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x4C) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.StepColorTemperature(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepMode, mStepSize, + mTransitionTime, mColorTemperatureMinimum, mColorTemperatureMaximum, mOptionsMask, + mOptionsOverride); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mStepMode; + uint16_t mStepSize; + uint16_t mTransitionTime; + uint16_t mColorTemperatureMinimum; + uint16_t mColorTemperatureMaximum; + uint8_t mOptionsMask; + uint8_t mOptionsOverride; +}; + +/* + * Command StepHue + */ +class ColorControlStepHue : public ModelCommand +{ +public: + ColorControlStepHue() : ModelCommand("step-hue") + { + AddArgument("stepMode", 0, UINT8_MAX, &mStepMode); + AddArgument("stepSize", 0, UINT8_MAX, &mStepSize); + AddArgument("transitionTime", 0, UINT8_MAX, &mTransitionTime); + AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); + AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + ModelCommand::AddArguments(); + } + ~ColorControlStepHue() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x02) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.StepHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepMode, mStepSize, mTransitionTime, + mOptionsMask, mOptionsOverride); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mStepMode; + uint8_t mStepSize; + uint8_t mTransitionTime; + uint8_t mOptionsMask; + uint8_t mOptionsOverride; +}; + +/* + * Command StepSaturation + */ +class ColorControlStepSaturation : public ModelCommand +{ +public: + ColorControlStepSaturation() : ModelCommand("step-saturation") + { + AddArgument("stepMode", 0, UINT8_MAX, &mStepMode); + AddArgument("stepSize", 0, UINT8_MAX, &mStepSize); + AddArgument("transitionTime", 0, UINT8_MAX, &mTransitionTime); + AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); + AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + ModelCommand::AddArguments(); + } + ~ColorControlStepSaturation() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x05) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.StepSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepMode, mStepSize, + mTransitionTime, mOptionsMask, mOptionsOverride); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mStepMode; + uint8_t mStepSize; + uint8_t mTransitionTime; + uint8_t mOptionsMask; + uint8_t mOptionsOverride; +}; + +/* + * Command StopMoveStep + */ +class ColorControlStopMoveStep : public ModelCommand +{ +public: + ColorControlStopMoveStep() : ModelCommand("stop-move-step") + { + AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); + AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + ModelCommand::AddArguments(); + } + ~ColorControlStopMoveStep() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x47) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.StopMoveStep(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mOptionsMask, mOptionsOverride); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mOptionsMask; + uint8_t mOptionsOverride; +}; + +/* + * Discover Attributes + */ +class DiscoverColorControlAttributes : public ModelCommand +{ +public: + DiscoverColorControlAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + + ~DiscoverColorControlAttributes() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute CurrentHue + */ +class ReadColorControlCurrentHue : public ModelCommand +{ +public: + ReadColorControlCurrentHue() : ModelCommand("read") + { + AddArgument("attr-name", "current-hue"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlCurrentHue() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributeCurrentHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +class ReportColorControlCurrentHue : public ModelCommand +{ +public: + ReportColorControlCurrentHue() : ModelCommand("report") + { + AddArgument("attr-name", "current-hue"); + AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); + AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); + AddArgument("change", 0, UINT8_MAX, &mChange); + ModelCommand::AddArguments(); + } + + ~ReportColorControlCurrentHue() + { + delete onSuccessCallback; + delete onFailureCallback; + delete onReportCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + + CHIP_ERROR err = cluster.ReportAttributeCurrentHue(onReportCallback->Cancel()); + if (err != CHIP_NO_ERROR) + { + return err; + } + + return cluster.ConfigureAttributeCurrentHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, + mMaxInterval, mChange); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + chip::Callback::Callback * onReportCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); + uint16_t mMinInterval; + uint16_t mMaxInterval; + uint8_t mChange; +}; + +/* + * Attribute CurrentSaturation + */ +class ReadColorControlCurrentSaturation : public ModelCommand +{ +public: + ReadColorControlCurrentSaturation() : ModelCommand("read") + { + AddArgument("attr-name", "current-saturation"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlCurrentSaturation() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributeCurrentSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +class ReportColorControlCurrentSaturation : public ModelCommand +{ +public: + ReportColorControlCurrentSaturation() : ModelCommand("report") + { + AddArgument("attr-name", "current-saturation"); + AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); + AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); + AddArgument("change", 0, UINT8_MAX, &mChange); + ModelCommand::AddArguments(); + } + + ~ReportColorControlCurrentSaturation() + { + delete onSuccessCallback; + delete onFailureCallback; + delete onReportCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + + CHIP_ERROR err = cluster.ReportAttributeCurrentSaturation(onReportCallback->Cancel()); + if (err != CHIP_NO_ERROR) + { + return err; + } + + return cluster.ConfigureAttributeCurrentSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, + mMaxInterval, mChange); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + chip::Callback::Callback * onReportCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); + uint16_t mMinInterval; + uint16_t mMaxInterval; + uint8_t mChange; +}; + +/* + * Attribute RemainingTime + */ +class ReadColorControlRemainingTime : public ModelCommand +{ +public: + ReadColorControlRemainingTime() : ModelCommand("read") + { + AddArgument("attr-name", "remaining-time"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlRemainingTime() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributeRemainingTime(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute CurrentX + */ +class ReadColorControlCurrentX : public ModelCommand +{ +public: + ReadColorControlCurrentX() : ModelCommand("read") + { + AddArgument("attr-name", "current-x"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlCurrentX() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributeCurrentX(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +class ReportColorControlCurrentX : public ModelCommand +{ +public: + ReportColorControlCurrentX() : ModelCommand("report") + { + AddArgument("attr-name", "current-x"); + AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); + AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); + AddArgument("change", 0, UINT16_MAX, &mChange); + ModelCommand::AddArguments(); + } + + ~ReportColorControlCurrentX() + { + delete onSuccessCallback; + delete onFailureCallback; + delete onReportCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + + CHIP_ERROR err = cluster.ReportAttributeCurrentX(onReportCallback->Cancel()); + if (err != CHIP_NO_ERROR) + { + return err; + } + + return cluster.ConfigureAttributeCurrentX(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, + mMaxInterval, mChange); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + chip::Callback::Callback * onReportCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + uint16_t mMinInterval; + uint16_t mMaxInterval; + uint16_t mChange; +}; + +/* + * Attribute CurrentY + */ +class ReadColorControlCurrentY : public ModelCommand +{ +public: + ReadColorControlCurrentY() : ModelCommand("read") + { + AddArgument("attr-name", "current-y"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlCurrentY() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributeCurrentY(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +class ReportColorControlCurrentY : public ModelCommand +{ +public: + ReportColorControlCurrentY() : ModelCommand("report") + { + AddArgument("attr-name", "current-y"); + AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); + AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); + AddArgument("change", 0, UINT16_MAX, &mChange); + ModelCommand::AddArguments(); + } + + ~ReportColorControlCurrentY() + { + delete onSuccessCallback; + delete onFailureCallback; + delete onReportCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + + CHIP_ERROR err = cluster.ReportAttributeCurrentY(onReportCallback->Cancel()); + if (err != CHIP_NO_ERROR) + { + return err; + } + + return cluster.ConfigureAttributeCurrentY(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, + mMaxInterval, mChange); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + chip::Callback::Callback * onReportCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + uint16_t mMinInterval; + uint16_t mMaxInterval; + uint16_t mChange; +}; + +/* + * Attribute DriftCompensation + */ +class ReadColorControlDriftCompensation : public ModelCommand +{ +public: + ReadColorControlDriftCompensation() : ModelCommand("read") + { + AddArgument("attr-name", "drift-compensation"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlDriftCompensation() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributeDriftCompensation(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute CompensationText + */ +class ReadColorControlCompensationText : public ModelCommand +{ +public: + ReadColorControlCompensationText() : ModelCommand("read") + { + AddArgument("attr-name", "compensation-text"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlCompensationText() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributeCompensationText(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute ColorTemperature + */ +class ReadColorControlColorTemperature : public ModelCommand +{ +public: + ReadColorControlColorTemperature() : ModelCommand("read") + { + AddArgument("attr-name", "color-temperature"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlColorTemperature() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributeColorTemperature(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +class ReportColorControlColorTemperature : public ModelCommand +{ +public: + ReportColorControlColorTemperature() : ModelCommand("report") + { + AddArgument("attr-name", "color-temperature"); + AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); + AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); + AddArgument("change", 0, UINT16_MAX, &mChange); + ModelCommand::AddArguments(); + } + + ~ReportColorControlColorTemperature() + { + delete onSuccessCallback; + delete onFailureCallback; + delete onReportCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + + CHIP_ERROR err = cluster.ReportAttributeColorTemperature(onReportCallback->Cancel()); + if (err != CHIP_NO_ERROR) + { + return err; + } + + return cluster.ConfigureAttributeColorTemperature(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, + mMaxInterval, mChange); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + chip::Callback::Callback * onReportCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + uint16_t mMinInterval; + uint16_t mMaxInterval; + uint16_t mChange; +}; + +/* + * Attribute ColorMode + */ +class ReadColorControlColorMode : public ModelCommand +{ +public: + ReadColorControlColorMode() : ModelCommand("read") + { + AddArgument("attr-name", "color-mode"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlColorMode() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributeColorMode(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute ColorControlOptions + */ +class ReadColorControlColorControlOptions : public ModelCommand +{ +public: + ReadColorControlColorControlOptions() : ModelCommand("read") + { + AddArgument("attr-name", "color-control-options"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlColorControlOptions() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributeColorControlOptions(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +class WriteColorControlColorControlOptions : public ModelCommand +{ +public: + WriteColorControlColorControlOptions() : ModelCommand("write") + { + AddArgument("attr-name", "color-control-options"); + AddArgument("attr-value", 0, UINT8_MAX, &mValue); + ModelCommand::AddArguments(); + } + + ~WriteColorControlColorControlOptions() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.WriteAttributeColorControlOptions(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mValue; +}; + +/* + * Attribute NumberOfPrimaries + */ +class ReadColorControlNumberOfPrimaries : public ModelCommand +{ +public: + ReadColorControlNumberOfPrimaries() : ModelCommand("read") + { + AddArgument("attr-name", "number-of-primaries"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlNumberOfPrimaries() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributeNumberOfPrimaries(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute Primary1X + */ +class ReadColorControlPrimary1X : public ModelCommand +{ +public: + ReadColorControlPrimary1X() : ModelCommand("read") + { + AddArgument("attr-name", "primary1x"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlPrimary1X() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributePrimary1X(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute Primary1Y + */ +class ReadColorControlPrimary1Y : public ModelCommand +{ +public: + ReadColorControlPrimary1Y() : ModelCommand("read") + { + AddArgument("attr-name", "primary1y"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlPrimary1Y() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributePrimary1Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute Primary1Intensity + */ +class ReadColorControlPrimary1Intensity : public ModelCommand +{ +public: + ReadColorControlPrimary1Intensity() : ModelCommand("read") + { + AddArgument("attr-name", "primary1intensity"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlPrimary1Intensity() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributePrimary1Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute Primary2X + */ +class ReadColorControlPrimary2X : public ModelCommand +{ +public: + ReadColorControlPrimary2X() : ModelCommand("read") + { + AddArgument("attr-name", "primary2x"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlPrimary2X() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributePrimary2X(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute Primary2Y + */ +class ReadColorControlPrimary2Y : public ModelCommand +{ +public: + ReadColorControlPrimary2Y() : ModelCommand("read") + { + AddArgument("attr-name", "primary2y"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlPrimary2Y() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributePrimary2Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute Primary2Intensity + */ +class ReadColorControlPrimary2Intensity : public ModelCommand +{ +public: + ReadColorControlPrimary2Intensity() : ModelCommand("read") + { + AddArgument("attr-name", "primary2intensity"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlPrimary2Intensity() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributePrimary2Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute Primary3X + */ +class ReadColorControlPrimary3X : public ModelCommand +{ +public: + ReadColorControlPrimary3X() : ModelCommand("read") + { + AddArgument("attr-name", "primary3x"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlPrimary3X() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributePrimary3X(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute Primary3Y + */ +class ReadColorControlPrimary3Y : public ModelCommand +{ +public: + ReadColorControlPrimary3Y() : ModelCommand("read") + { + AddArgument("attr-name", "primary3y"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlPrimary3Y() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributePrimary3Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute Primary3Intensity + */ +class ReadColorControlPrimary3Intensity : public ModelCommand +{ +public: + ReadColorControlPrimary3Intensity() : ModelCommand("read") + { + AddArgument("attr-name", "primary3intensity"); + ModelCommand::AddArguments(); + } + + ~ReadColorControlPrimary3Intensity() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::ColorControlCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributePrimary3Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mColorTemperature; - uint16_t mTransitionTime; - uint8_t mOptionsMask; - uint8_t mOptionsOverride; }; /* - * Command MoveToHue + * Attribute Primary4X */ -class ColorControlMoveToHue : public ModelCommand +class ReadColorControlPrimary4X : public ModelCommand { public: - ColorControlMoveToHue() : ModelCommand("move-to-hue") + ReadColorControlPrimary4X() : ModelCommand("read") { - AddArgument("hue", 0, UINT8_MAX, &mHue); - AddArgument("direction", 0, UINT8_MAX, &mDirection); - AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); - AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); - AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + AddArgument("attr-name", "primary4x"); ModelCommand::AddArguments(); } - ~ColorControlMoveToHue() + + ~ReadColorControlPrimary4X() { delete onSuccessCallback; delete onFailureCallback; @@ -2537,38 +4503,29 @@ class ColorControlMoveToHue : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.MoveToHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mHue, mDirection, mTransitionTime, - mOptionsMask, mOptionsOverride); + return cluster.ReadAttributePrimary4X(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mHue; - uint8_t mDirection; - uint16_t mTransitionTime; - uint8_t mOptionsMask; - uint8_t mOptionsOverride; }; /* - * Command MoveToHueAndSaturation + * Attribute Primary4Y */ -class ColorControlMoveToHueAndSaturation : public ModelCommand +class ReadColorControlPrimary4Y : public ModelCommand { public: - ColorControlMoveToHueAndSaturation() : ModelCommand("move-to-hue-and-saturation") + ReadColorControlPrimary4Y() : ModelCommand("read") { - AddArgument("hue", 0, UINT8_MAX, &mHue); - AddArgument("saturation", 0, UINT8_MAX, &mSaturation); - AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); - AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); - AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + AddArgument("attr-name", "primary4y"); ModelCommand::AddArguments(); } - ~ColorControlMoveToHueAndSaturation() + + ~ReadColorControlPrimary4Y() { delete onSuccessCallback; delete onFailureCallback; @@ -2576,41 +4533,33 @@ class ColorControlMoveToHueAndSaturation : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.MoveToHueAndSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mHue, mSaturation, - mTransitionTime, mOptionsMask, mOptionsOverride); + return cluster.ReadAttributePrimary4Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mHue; - uint8_t mSaturation; - uint16_t mTransitionTime; - uint8_t mOptionsMask; - uint8_t mOptionsOverride; }; /* - * Command MoveToSaturation + * Attribute Primary4Intensity */ -class ColorControlMoveToSaturation : public ModelCommand +class ReadColorControlPrimary4Intensity : public ModelCommand { public: - ColorControlMoveToSaturation() : ModelCommand("move-to-saturation") + ReadColorControlPrimary4Intensity() : ModelCommand("read") { - AddArgument("saturation", 0, UINT8_MAX, &mSaturation); - AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); - AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); - AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + AddArgument("attr-name", "primary4intensity"); ModelCommand::AddArguments(); } - ~ColorControlMoveToSaturation() + + ~ReadColorControlPrimary4Intensity() { delete onSuccessCallback; delete onFailureCallback; @@ -2618,41 +4567,33 @@ class ColorControlMoveToSaturation : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x03) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.MoveToSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mSaturation, mTransitionTime, - mOptionsMask, mOptionsOverride); + return cluster.ReadAttributePrimary4Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mSaturation; - uint16_t mTransitionTime; - uint8_t mOptionsMask; - uint8_t mOptionsOverride; }; /* - * Command StepColor + * Attribute Primary5X */ -class ColorControlStepColor : public ModelCommand +class ReadColorControlPrimary5X : public ModelCommand { public: - ColorControlStepColor() : ModelCommand("step-color") + ReadColorControlPrimary5X() : ModelCommand("read") { - AddArgument("stepX", INT16_MIN, INT16_MAX, &mStepX); - AddArgument("stepY", INT16_MIN, INT16_MAX, &mStepY); - AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); - AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); - AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + AddArgument("attr-name", "primary5x"); ModelCommand::AddArguments(); } - ~ColorControlStepColor() + + ~ReadColorControlPrimary5X() { delete onSuccessCallback; delete onFailureCallback; @@ -2660,44 +4601,33 @@ class ColorControlStepColor : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x09) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.StepColor(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepX, mStepY, mTransitionTime, - mOptionsMask, mOptionsOverride); + return cluster.ReadAttributePrimary5X(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - int16_t mStepX; - int16_t mStepY; - uint16_t mTransitionTime; - uint8_t mOptionsMask; - uint8_t mOptionsOverride; }; /* - * Command StepColorTemperature + * Attribute Primary5Y */ -class ColorControlStepColorTemperature : public ModelCommand +class ReadColorControlPrimary5Y : public ModelCommand { public: - ColorControlStepColorTemperature() : ModelCommand("step-color-temperature") + ReadColorControlPrimary5Y() : ModelCommand("read") { - AddArgument("stepMode", 0, UINT8_MAX, &mStepMode); - AddArgument("stepSize", 0, UINT16_MAX, &mStepSize); - AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); - AddArgument("colorTemperatureMinimum", 0, UINT16_MAX, &mColorTemperatureMinimum); - AddArgument("colorTemperatureMaximum", 0, UINT16_MAX, &mColorTemperatureMaximum); - AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); - AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + AddArgument("attr-name", "primary5y"); ModelCommand::AddArguments(); } - ~ColorControlStepColorTemperature() + + ~ReadColorControlPrimary5Y() { delete onSuccessCallback; delete onFailureCallback; @@ -2705,45 +4635,33 @@ class ColorControlStepColorTemperature : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x4C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.StepColorTemperature(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepMode, mStepSize, - mTransitionTime, mColorTemperatureMinimum, mColorTemperatureMaximum, mOptionsMask, - mOptionsOverride); + return cluster.ReadAttributePrimary5Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mStepMode; - uint16_t mStepSize; - uint16_t mTransitionTime; - uint16_t mColorTemperatureMinimum; - uint16_t mColorTemperatureMaximum; - uint8_t mOptionsMask; - uint8_t mOptionsOverride; }; /* - * Command StepHue + * Attribute Primary5Intensity */ -class ColorControlStepHue : public ModelCommand +class ReadColorControlPrimary5Intensity : public ModelCommand { public: - ColorControlStepHue() : ModelCommand("step-hue") + ReadColorControlPrimary5Intensity() : ModelCommand("read") { - AddArgument("stepMode", 0, UINT8_MAX, &mStepMode); - AddArgument("stepSize", 0, UINT8_MAX, &mStepSize); - AddArgument("transitionTime", 0, UINT8_MAX, &mTransitionTime); - AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); - AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + AddArgument("attr-name", "primary5intensity"); ModelCommand::AddArguments(); } - ~ColorControlStepHue() + + ~ReadColorControlPrimary5Intensity() { delete onSuccessCallback; delete onFailureCallback; @@ -2751,42 +4669,33 @@ class ColorControlStepHue : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x02) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.StepHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepMode, mStepSize, mTransitionTime, - mOptionsMask, mOptionsOverride); + return cluster.ReadAttributePrimary5Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mStepMode; - uint8_t mStepSize; - uint8_t mTransitionTime; - uint8_t mOptionsMask; - uint8_t mOptionsOverride; }; /* - * Command StepSaturation + * Attribute Primary6X */ -class ColorControlStepSaturation : public ModelCommand +class ReadColorControlPrimary6X : public ModelCommand { public: - ColorControlStepSaturation() : ModelCommand("step-saturation") + ReadColorControlPrimary6X() : ModelCommand("read") { - AddArgument("stepMode", 0, UINT8_MAX, &mStepMode); - AddArgument("stepSize", 0, UINT8_MAX, &mStepSize); - AddArgument("transitionTime", 0, UINT8_MAX, &mTransitionTime); - AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); - AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + AddArgument("attr-name", "primary6x"); ModelCommand::AddArguments(); } - ~ColorControlStepSaturation() + + ~ReadColorControlPrimary6X() { delete onSuccessCallback; delete onFailureCallback; @@ -2794,39 +4703,33 @@ class ColorControlStepSaturation : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x05) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.StepSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepMode, mStepSize, - mTransitionTime, mOptionsMask, mOptionsOverride); + return cluster.ReadAttributePrimary6X(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mStepMode; - uint8_t mStepSize; - uint8_t mTransitionTime; - uint8_t mOptionsMask; - uint8_t mOptionsOverride; }; /* - * Command StopMoveStep + * Attribute Primary6Y */ -class ColorControlStopMoveStep : public ModelCommand +class ReadColorControlPrimary6Y : public ModelCommand { public: - ColorControlStopMoveStep() : ModelCommand("stop-move-step") + ReadColorControlPrimary6Y() : ModelCommand("read") { - AddArgument("optionsMask", 0, UINT8_MAX, &mOptionsMask); - AddArgument("optionsOverride", 0, UINT8_MAX, &mOptionsOverride); + AddArgument("attr-name", "primary6y"); ModelCommand::AddArguments(); } - ~ColorControlStopMoveStep() + + ~ReadColorControlPrimary6Y() { delete onSuccessCallback; delete onFailureCallback; @@ -2834,31 +4737,33 @@ class ColorControlStopMoveStep : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x47) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.StopMoveStep(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mOptionsMask, mOptionsOverride); + return cluster.ReadAttributePrimary6Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mOptionsMask; - uint8_t mOptionsOverride; }; /* - * Discover Attributes + * Attribute Primary6Intensity */ -class DiscoverColorControlAttributes : public ModelCommand +class ReadColorControlPrimary6Intensity : public ModelCommand { public: - DiscoverColorControlAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + ReadColorControlPrimary6Intensity() : ModelCommand("read") + { + AddArgument("attr-name", "primary6intensity"); + ModelCommand::AddArguments(); + } - ~DiscoverColorControlAttributes() + ~ReadColorControlPrimary6Intensity() { delete onSuccessCallback; delete onFailureCallback; @@ -2866,33 +4771,33 @@ class DiscoverColorControlAttributes : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributePrimary6Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute CurrentHue + * Attribute WhitePointX */ -class ReadColorControlCurrentHue : public ModelCommand +class ReadColorControlWhitePointX : public ModelCommand { public: - ReadColorControlCurrentHue() : ModelCommand("read") + ReadColorControlWhitePointX() : ModelCommand("read") { - AddArgument("attr-name", "current-hue"); + AddArgument("attr-name", "white-point-x"); ModelCommand::AddArguments(); } - ~ReadColorControlCurrentHue() + ~ReadColorControlWhitePointX() { delete onSuccessCallback; delete onFailureCallback; @@ -2904,50 +4809,39 @@ class ReadColorControlCurrentHue : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeCurrentHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeWhitePointX(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class ReportColorControlCurrentHue : public ModelCommand +class WriteColorControlWhitePointX : public ModelCommand { public: - ReportColorControlCurrentHue() : ModelCommand("report") + WriteColorControlWhitePointX() : ModelCommand("write") { - AddArgument("attr-name", "current-hue"); - AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); - AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); - AddArgument("change", 0, UINT8_MAX, &mChange); + AddArgument("attr-name", "white-point-x"); + AddArgument("attr-value", 0, UINT16_MAX, &mValue); ModelCommand::AddArguments(); } - ~ReportColorControlCurrentHue() + ~WriteColorControlWhitePointX() { delete onSuccessCallback; delete onFailureCallback; - delete onReportCallback; } CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - - CHIP_ERROR err = cluster.ReportAttributeCurrentHue(onReportCallback->Cancel()); - if (err != CHIP_NO_ERROR) - { - return err; - } - - return cluster.ConfigureAttributeCurrentHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, - mMaxInterval, mChange); + return cluster.WriteAttributeWhitePointX(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); } private: @@ -2955,26 +4849,22 @@ class ReportColorControlCurrentHue : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - chip::Callback::Callback * onReportCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); - uint16_t mMinInterval; - uint16_t mMaxInterval; - uint8_t mChange; + uint16_t mValue; }; /* - * Attribute CurrentSaturation + * Attribute WhitePointY */ -class ReadColorControlCurrentSaturation : public ModelCommand +class ReadColorControlWhitePointY : public ModelCommand { public: - ReadColorControlCurrentSaturation() : ModelCommand("read") + ReadColorControlWhitePointY() : ModelCommand("read") { - AddArgument("attr-name", "current-saturation"); + AddArgument("attr-name", "white-point-y"); ModelCommand::AddArguments(); } - ~ReadColorControlCurrentSaturation() + ~ReadColorControlWhitePointY() { delete onSuccessCallback; delete onFailureCallback; @@ -2986,50 +4876,39 @@ class ReadColorControlCurrentSaturation : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeCurrentSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeWhitePointY(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class ReportColorControlCurrentSaturation : public ModelCommand +class WriteColorControlWhitePointY : public ModelCommand { public: - ReportColorControlCurrentSaturation() : ModelCommand("report") + WriteColorControlWhitePointY() : ModelCommand("write") { - AddArgument("attr-name", "current-saturation"); - AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); - AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); - AddArgument("change", 0, UINT8_MAX, &mChange); + AddArgument("attr-name", "white-point-y"); + AddArgument("attr-value", 0, UINT16_MAX, &mValue); ModelCommand::AddArguments(); } - ~ReportColorControlCurrentSaturation() + ~WriteColorControlWhitePointY() { delete onSuccessCallback; delete onFailureCallback; - delete onReportCallback; } CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - - CHIP_ERROR err = cluster.ReportAttributeCurrentSaturation(onReportCallback->Cancel()); - if (err != CHIP_NO_ERROR) - { - return err; - } - - return cluster.ConfigureAttributeCurrentSaturation(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, - mMaxInterval, mChange); + return cluster.WriteAttributeWhitePointY(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); } private: @@ -3037,26 +4916,22 @@ class ReportColorControlCurrentSaturation : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - chip::Callback::Callback * onReportCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); - uint16_t mMinInterval; - uint16_t mMaxInterval; - uint8_t mChange; + uint16_t mValue; }; /* - * Attribute RemainingTime + * Attribute ColorPointRX */ -class ReadColorControlRemainingTime : public ModelCommand +class ReadColorControlColorPointRX : public ModelCommand { public: - ReadColorControlRemainingTime() : ModelCommand("read") + ReadColorControlColorPointRX() : ModelCommand("read") { - AddArgument("attr-name", "remaining-time"); + AddArgument("attr-name", "color-point-rx"); ModelCommand::AddArguments(); } - ~ReadColorControlRemainingTime() + ~ReadColorControlColorPointRX() { delete onSuccessCallback; delete onFailureCallback; @@ -3068,7 +4943,7 @@ class ReadColorControlRemainingTime : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeRemainingTime(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeColorPointRX(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -3078,19 +4953,17 @@ class ReadColorControlRemainingTime : public ModelCommand new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -/* - * Attribute CurrentX - */ -class ReadColorControlCurrentX : public ModelCommand +class WriteColorControlColorPointRX : public ModelCommand { public: - ReadColorControlCurrentX() : ModelCommand("read") + WriteColorControlColorPointRX() : ModelCommand("write") { - AddArgument("attr-name", "current-x"); + AddArgument("attr-name", "color-point-rx"); + AddArgument("attr-value", 0, UINT16_MAX, &mValue); ModelCommand::AddArguments(); } - ~ReadColorControlCurrentX() + ~WriteColorControlColorPointRX() { delete onSuccessCallback; delete onFailureCallback; @@ -3098,81 +4971,66 @@ class ReadColorControlCurrentX : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeCurrentX(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.WriteAttributeColorPointRX(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mValue; }; -class ReportColorControlCurrentX : public ModelCommand +/* + * Attribute ColorPointRY + */ +class ReadColorControlColorPointRY : public ModelCommand { public: - ReportColorControlCurrentX() : ModelCommand("report") + ReadColorControlColorPointRY() : ModelCommand("read") { - AddArgument("attr-name", "current-x"); - AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); - AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); - AddArgument("change", 0, UINT16_MAX, &mChange); + AddArgument("attr-name", "color-point-ry"); ModelCommand::AddArguments(); } - ~ReportColorControlCurrentX() + ~ReadColorControlColorPointRY() { delete onSuccessCallback; delete onFailureCallback; - delete onReportCallback; } CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - - CHIP_ERROR err = cluster.ReportAttributeCurrentX(onReportCallback->Cancel()); - if (err != CHIP_NO_ERROR) - { - return err; - } - - return cluster.ConfigureAttributeCurrentX(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, - mMaxInterval, mChange); + return cluster.ReadAttributeColorPointRY(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - chip::Callback::Callback * onReportCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); - uint16_t mMinInterval; - uint16_t mMaxInterval; - uint16_t mChange; }; -/* - * Attribute CurrentY - */ -class ReadColorControlCurrentY : public ModelCommand +class WriteColorControlColorPointRY : public ModelCommand { public: - ReadColorControlCurrentY() : ModelCommand("read") + WriteColorControlColorPointRY() : ModelCommand("write") { - AddArgument("attr-name", "current-y"); + AddArgument("attr-name", "color-point-ry"); + AddArgument("attr-value", 0, UINT16_MAX, &mValue); ModelCommand::AddArguments(); } - ~ReadColorControlCurrentY() + ~WriteColorControlColorPointRY() { delete onSuccessCallback; delete onFailureCallback; @@ -3180,81 +5038,66 @@ class ReadColorControlCurrentY : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeCurrentY(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.WriteAttributeColorPointRY(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mValue; }; -class ReportColorControlCurrentY : public ModelCommand +/* + * Attribute ColorPointRIntensity + */ +class ReadColorControlColorPointRIntensity : public ModelCommand { public: - ReportColorControlCurrentY() : ModelCommand("report") + ReadColorControlColorPointRIntensity() : ModelCommand("read") { - AddArgument("attr-name", "current-y"); - AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); - AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); - AddArgument("change", 0, UINT16_MAX, &mChange); + AddArgument("attr-name", "color-point-rintensity"); ModelCommand::AddArguments(); } - ~ReportColorControlCurrentY() + ~ReadColorControlColorPointRIntensity() { delete onSuccessCallback; delete onFailureCallback; - delete onReportCallback; } CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - - CHIP_ERROR err = cluster.ReportAttributeCurrentY(onReportCallback->Cancel()); - if (err != CHIP_NO_ERROR) - { - return err; - } - - return cluster.ConfigureAttributeCurrentY(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, - mMaxInterval, mChange); + return cluster.ReadAttributeColorPointRIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - chip::Callback::Callback * onReportCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); - uint16_t mMinInterval; - uint16_t mMaxInterval; - uint16_t mChange; }; -/* - * Attribute DriftCompensation - */ -class ReadColorControlDriftCompensation : public ModelCommand +class WriteColorControlColorPointRIntensity : public ModelCommand { public: - ReadColorControlDriftCompensation() : ModelCommand("read") + WriteColorControlColorPointRIntensity() : ModelCommand("write") { - AddArgument("attr-name", "drift-compensation"); + AddArgument("attr-name", "color-point-rintensity"); + AddArgument("attr-value", 0, UINT8_MAX, &mValue); ModelCommand::AddArguments(); } - ~ReadColorControlDriftCompensation() + ~WriteColorControlColorPointRIntensity() { delete onSuccessCallback; delete onFailureCallback; @@ -3262,33 +5105,34 @@ class ReadColorControlDriftCompensation : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeDriftCompensation(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.WriteAttributeColorPointRIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mValue; }; /* - * Attribute CompensationText + * Attribute ColorPointGX */ -class ReadColorControlCompensationText : public ModelCommand +class ReadColorControlColorPointGX : public ModelCommand { public: - ReadColorControlCompensationText() : ModelCommand("read") + ReadColorControlColorPointGX() : ModelCommand("read") { - AddArgument("attr-name", "compensation-text"); + AddArgument("attr-name", "color-point-gx"); ModelCommand::AddArguments(); } - ~ReadColorControlCompensationText() + ~ReadColorControlColorPointGX() { delete onSuccessCallback; delete onFailureCallback; @@ -3300,29 +5144,27 @@ class ReadColorControlCompensationText : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeCompensationText(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeColorPointGX(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnStringAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; - -/* - * Attribute ColorTemperature - */ -class ReadColorControlColorTemperature : public ModelCommand + +class WriteColorControlColorPointGX : public ModelCommand { public: - ReadColorControlColorTemperature() : ModelCommand("read") + WriteColorControlColorPointGX() : ModelCommand("write") { - AddArgument("attr-name", "color-temperature"); + AddArgument("attr-name", "color-point-gx"); + AddArgument("attr-value", 0, UINT16_MAX, &mValue); ModelCommand::AddArguments(); } - ~ReadColorControlColorTemperature() + ~WriteColorControlColorPointGX() { delete onSuccessCallback; delete onFailureCallback; @@ -3330,81 +5172,66 @@ class ReadColorControlColorTemperature : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorTemperature(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.WriteAttributeColorPointGX(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mValue; }; -class ReportColorControlColorTemperature : public ModelCommand +/* + * Attribute ColorPointGY + */ +class ReadColorControlColorPointGY : public ModelCommand { public: - ReportColorControlColorTemperature() : ModelCommand("report") + ReadColorControlColorPointGY() : ModelCommand("read") { - AddArgument("attr-name", "color-temperature"); - AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); - AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); - AddArgument("change", 0, UINT16_MAX, &mChange); + AddArgument("attr-name", "color-point-gy"); ModelCommand::AddArguments(); } - ~ReportColorControlColorTemperature() + ~ReadColorControlColorPointGY() { delete onSuccessCallback; delete onFailureCallback; - delete onReportCallback; } CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x06) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - - CHIP_ERROR err = cluster.ReportAttributeColorTemperature(onReportCallback->Cancel()); - if (err != CHIP_NO_ERROR) - { - return err; - } - - return cluster.ConfigureAttributeColorTemperature(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, - mMaxInterval, mChange); + return cluster.ReadAttributeColorPointGY(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - chip::Callback::Callback * onReportCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); - uint16_t mMinInterval; - uint16_t mMaxInterval; - uint16_t mChange; }; -/* - * Attribute ColorMode - */ -class ReadColorControlColorMode : public ModelCommand +class WriteColorControlColorPointGY : public ModelCommand { public: - ReadColorControlColorMode() : ModelCommand("read") + WriteColorControlColorPointGY() : ModelCommand("write") { - AddArgument("attr-name", "color-mode"); + AddArgument("attr-name", "color-point-gy"); + AddArgument("attr-value", 0, UINT16_MAX, &mValue); ModelCommand::AddArguments(); } - ~ReadColorControlColorMode() + ~WriteColorControlColorPointGY() { delete onSuccessCallback; delete onFailureCallback; @@ -3412,33 +5239,34 @@ class ReadColorControlColorMode : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorMode(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.WriteAttributeColorPointGY(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mValue; }; /* - * Attribute ColorControlOptions + * Attribute ColorPointGIntensity */ -class ReadColorControlColorControlOptions : public ModelCommand +class ReadColorControlColorPointGIntensity : public ModelCommand { public: - ReadColorControlColorControlOptions() : ModelCommand("read") + ReadColorControlColorPointGIntensity() : ModelCommand("read") { - AddArgument("attr-name", "color-control-options"); + AddArgument("attr-name", "color-point-gintensity"); ModelCommand::AddArguments(); } - ~ReadColorControlColorControlOptions() + ~ReadColorControlColorPointGIntensity() { delete onSuccessCallback; delete onFailureCallback; @@ -3450,7 +5278,7 @@ class ReadColorControlColorControlOptions : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorControlOptions(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeColorPointGIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -3460,17 +5288,17 @@ class ReadColorControlColorControlOptions : public ModelCommand new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class WriteColorControlColorControlOptions : public ModelCommand +class WriteColorControlColorPointGIntensity : public ModelCommand { public: - WriteColorControlColorControlOptions() : ModelCommand("write") + WriteColorControlColorPointGIntensity() : ModelCommand("write") { - AddArgument("attr-name", "color-control-options"); + AddArgument("attr-name", "color-point-gintensity"); AddArgument("attr-value", 0, UINT8_MAX, &mValue); ModelCommand::AddArguments(); } - ~WriteColorControlColorControlOptions() + ~WriteColorControlColorPointGIntensity() { delete onSuccessCallback; delete onFailureCallback; @@ -3482,7 +5310,7 @@ class WriteColorControlColorControlOptions : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeColorControlOptions(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.WriteAttributeColorPointGIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); } private: @@ -3494,18 +5322,18 @@ class WriteColorControlColorControlOptions : public ModelCommand }; /* - * Attribute NumberOfPrimaries + * Attribute ColorPointBX */ -class ReadColorControlNumberOfPrimaries : public ModelCommand +class ReadColorControlColorPointBX : public ModelCommand { public: - ReadColorControlNumberOfPrimaries() : ModelCommand("read") + ReadColorControlColorPointBX() : ModelCommand("read") { - AddArgument("attr-name", "number-of-primaries"); + AddArgument("attr-name", "color-point-bx"); ModelCommand::AddArguments(); } - ~ReadColorControlNumberOfPrimaries() + ~ReadColorControlColorPointBX() { delete onSuccessCallback; delete onFailureCallback; @@ -3517,29 +5345,27 @@ class ReadColorControlNumberOfPrimaries : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeNumberOfPrimaries(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeColorPointBX(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -/* - * Attribute Primary1X - */ -class ReadColorControlPrimary1X : public ModelCommand +class WriteColorControlColorPointBX : public ModelCommand { public: - ReadColorControlPrimary1X() : ModelCommand("read") + WriteColorControlColorPointBX() : ModelCommand("write") { - AddArgument("attr-name", "primary1x"); + AddArgument("attr-name", "color-point-bx"); + AddArgument("attr-value", 0, UINT16_MAX, &mValue); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary1X() + ~WriteColorControlColorPointBX() { delete onSuccessCallback; delete onFailureCallback; @@ -3547,33 +5373,34 @@ class ReadColorControlPrimary1X : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary1X(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.WriteAttributeColorPointBX(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mValue; }; /* - * Attribute Primary1Y + * Attribute ColorPointBY */ -class ReadColorControlPrimary1Y : public ModelCommand +class ReadColorControlColorPointBY : public ModelCommand { public: - ReadColorControlPrimary1Y() : ModelCommand("read") + ReadColorControlColorPointBY() : ModelCommand("read") { - AddArgument("attr-name", "primary1y"); + AddArgument("attr-name", "color-point-by"); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary1Y() + ~ReadColorControlColorPointBY() { delete onSuccessCallback; delete onFailureCallback; @@ -3585,7 +5412,7 @@ class ReadColorControlPrimary1Y : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary1Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeColorPointBY(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -3595,19 +5422,17 @@ class ReadColorControlPrimary1Y : public ModelCommand new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -/* - * Attribute Primary1Intensity - */ -class ReadColorControlPrimary1Intensity : public ModelCommand +class WriteColorControlColorPointBY : public ModelCommand { public: - ReadColorControlPrimary1Intensity() : ModelCommand("read") + WriteColorControlColorPointBY() : ModelCommand("write") { - AddArgument("attr-name", "primary1intensity"); + AddArgument("attr-name", "color-point-by"); + AddArgument("attr-value", 0, UINT16_MAX, &mValue); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary1Intensity() + ~WriteColorControlColorPointBY() { delete onSuccessCallback; delete onFailureCallback; @@ -3615,33 +5440,34 @@ class ReadColorControlPrimary1Intensity : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary1Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.WriteAttributeColorPointBY(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mValue; }; /* - * Attribute Primary2X + * Attribute ColorPointBIntensity */ -class ReadColorControlPrimary2X : public ModelCommand +class ReadColorControlColorPointBIntensity : public ModelCommand { public: - ReadColorControlPrimary2X() : ModelCommand("read") + ReadColorControlColorPointBIntensity() : ModelCommand("read") { - AddArgument("attr-name", "primary2x"); + AddArgument("attr-name", "color-point-bintensity"); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary2X() + ~ReadColorControlColorPointBIntensity() { delete onSuccessCallback; delete onFailureCallback; @@ -3653,29 +5479,27 @@ class ReadColorControlPrimary2X : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary2X(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeColorPointBIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -/* - * Attribute Primary2Y - */ -class ReadColorControlPrimary2Y : public ModelCommand +class WriteColorControlColorPointBIntensity : public ModelCommand { public: - ReadColorControlPrimary2Y() : ModelCommand("read") + WriteColorControlColorPointBIntensity() : ModelCommand("write") { - AddArgument("attr-name", "primary2y"); + AddArgument("attr-name", "color-point-bintensity"); + AddArgument("attr-value", 0, UINT8_MAX, &mValue); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary2Y() + ~WriteColorControlColorPointBIntensity() { delete onSuccessCallback; delete onFailureCallback; @@ -3683,33 +5507,34 @@ class ReadColorControlPrimary2Y : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary2Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.WriteAttributeColorPointBIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mValue; }; /* - * Attribute Primary2Intensity + * Attribute EnhancedCurrentHue */ -class ReadColorControlPrimary2Intensity : public ModelCommand +class ReadColorControlEnhancedCurrentHue : public ModelCommand { public: - ReadColorControlPrimary2Intensity() : ModelCommand("read") + ReadColorControlEnhancedCurrentHue() : ModelCommand("read") { - AddArgument("attr-name", "primary2intensity"); + AddArgument("attr-name", "enhanced-current-hue"); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary2Intensity() + ~ReadColorControlEnhancedCurrentHue() { delete onSuccessCallback; delete onFailureCallback; @@ -3721,29 +5546,29 @@ class ReadColorControlPrimary2Intensity : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary2Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeEnhancedCurrentHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute Primary3X + * Attribute EnhancedColorMode */ -class ReadColorControlPrimary3X : public ModelCommand +class ReadColorControlEnhancedColorMode : public ModelCommand { public: - ReadColorControlPrimary3X() : ModelCommand("read") + ReadColorControlEnhancedColorMode() : ModelCommand("read") { - AddArgument("attr-name", "primary3x"); + AddArgument("attr-name", "enhanced-color-mode"); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary3X() + ~ReadColorControlEnhancedColorMode() { delete onSuccessCallback; delete onFailureCallback; @@ -3755,29 +5580,29 @@ class ReadColorControlPrimary3X : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary3X(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeEnhancedColorMode(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute Primary3Y + * Attribute ColorLoopActive */ -class ReadColorControlPrimary3Y : public ModelCommand +class ReadColorControlColorLoopActive : public ModelCommand { public: - ReadColorControlPrimary3Y() : ModelCommand("read") + ReadColorControlColorLoopActive() : ModelCommand("read") { - AddArgument("attr-name", "primary3y"); + AddArgument("attr-name", "color-loop-active"); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary3Y() + ~ReadColorControlColorLoopActive() { delete onSuccessCallback; delete onFailureCallback; @@ -3789,29 +5614,29 @@ class ReadColorControlPrimary3Y : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary3Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeColorLoopActive(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute Primary3Intensity + * Attribute ColorLoopDirection */ -class ReadColorControlPrimary3Intensity : public ModelCommand +class ReadColorControlColorLoopDirection : public ModelCommand { public: - ReadColorControlPrimary3Intensity() : ModelCommand("read") + ReadColorControlColorLoopDirection() : ModelCommand("read") { - AddArgument("attr-name", "primary3intensity"); + AddArgument("attr-name", "color-loop-direction"); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary3Intensity() + ~ReadColorControlColorLoopDirection() { delete onSuccessCallback; delete onFailureCallback; @@ -3823,7 +5648,7 @@ class ReadColorControlPrimary3Intensity : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary3Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeColorLoopDirection(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -3834,18 +5659,18 @@ class ReadColorControlPrimary3Intensity : public ModelCommand }; /* - * Attribute Primary4X + * Attribute ColorLoopTime */ -class ReadColorControlPrimary4X : public ModelCommand +class ReadColorControlColorLoopTime : public ModelCommand { public: - ReadColorControlPrimary4X() : ModelCommand("read") + ReadColorControlColorLoopTime() : ModelCommand("read") { - AddArgument("attr-name", "primary4x"); + AddArgument("attr-name", "color-loop-time"); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary4X() + ~ReadColorControlColorLoopTime() { delete onSuccessCallback; delete onFailureCallback; @@ -3857,7 +5682,7 @@ class ReadColorControlPrimary4X : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary4X(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeColorLoopTime(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -3868,18 +5693,18 @@ class ReadColorControlPrimary4X : public ModelCommand }; /* - * Attribute Primary4Y + * Attribute ColorCapabilities */ -class ReadColorControlPrimary4Y : public ModelCommand +class ReadColorControlColorCapabilities : public ModelCommand { public: - ReadColorControlPrimary4Y() : ModelCommand("read") + ReadColorControlColorCapabilities() : ModelCommand("read") { - AddArgument("attr-name", "primary4y"); + AddArgument("attr-name", "color-capabilities"); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary4Y() + ~ReadColorControlColorCapabilities() { delete onSuccessCallback; delete onFailureCallback; @@ -3891,7 +5716,7 @@ class ReadColorControlPrimary4Y : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary4Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeColorCapabilities(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -3902,18 +5727,18 @@ class ReadColorControlPrimary4Y : public ModelCommand }; /* - * Attribute Primary4Intensity + * Attribute ColorTempPhysicalMin */ -class ReadColorControlPrimary4Intensity : public ModelCommand +class ReadColorControlColorTempPhysicalMin : public ModelCommand { public: - ReadColorControlPrimary4Intensity() : ModelCommand("read") + ReadColorControlColorTempPhysicalMin() : ModelCommand("read") { - AddArgument("attr-name", "primary4intensity"); + AddArgument("attr-name", "color-temp-physical-min"); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary4Intensity() + ~ReadColorControlColorTempPhysicalMin() { delete onSuccessCallback; delete onFailureCallback; @@ -3925,29 +5750,29 @@ class ReadColorControlPrimary4Intensity : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary4Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeColorTempPhysicalMin(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute Primary5X + * Attribute ColorTempPhysicalMax */ -class ReadColorControlPrimary5X : public ModelCommand +class ReadColorControlColorTempPhysicalMax : public ModelCommand { public: - ReadColorControlPrimary5X() : ModelCommand("read") + ReadColorControlColorTempPhysicalMax() : ModelCommand("read") { - AddArgument("attr-name", "primary5x"); + AddArgument("attr-name", "color-temp-physical-max"); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary5X() + ~ReadColorControlColorTempPhysicalMax() { delete onSuccessCallback; delete onFailureCallback; @@ -3959,7 +5784,7 @@ class ReadColorControlPrimary5X : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary5X(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeColorTempPhysicalMax(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -3970,18 +5795,18 @@ class ReadColorControlPrimary5X : public ModelCommand }; /* - * Attribute Primary5Y + * Attribute CoupleColorTempToLevelMinMireds */ -class ReadColorControlPrimary5Y : public ModelCommand +class ReadColorControlCoupleColorTempToLevelMinMireds : public ModelCommand { public: - ReadColorControlPrimary5Y() : ModelCommand("read") + ReadColorControlCoupleColorTempToLevelMinMireds() : ModelCommand("read") { - AddArgument("attr-name", "primary5y"); + AddArgument("attr-name", "couple-color-temp-to-level-min-mireds"); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary5Y() + ~ReadColorControlCoupleColorTempToLevelMinMireds() { delete onSuccessCallback; delete onFailureCallback; @@ -3993,7 +5818,7 @@ class ReadColorControlPrimary5Y : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary5Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeCoupleColorTempToLevelMinMireds(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -4004,18 +5829,18 @@ class ReadColorControlPrimary5Y : public ModelCommand }; /* - * Attribute Primary5Intensity + * Attribute StartUpColorTemperatureMireds */ -class ReadColorControlPrimary5Intensity : public ModelCommand +class ReadColorControlStartUpColorTemperatureMireds : public ModelCommand { public: - ReadColorControlPrimary5Intensity() : ModelCommand("read") + ReadColorControlStartUpColorTemperatureMireds() : ModelCommand("read") { - AddArgument("attr-name", "primary5intensity"); + AddArgument("attr-name", "start-up-color-temperature-mireds"); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary5Intensity() + ~ReadColorControlStartUpColorTemperatureMireds() { delete onSuccessCallback; delete onFailureCallback; @@ -4027,29 +5852,27 @@ class ReadColorControlPrimary5Intensity : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary5Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeStartUpColorTemperatureMireds(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -/* - * Attribute Primary6X - */ -class ReadColorControlPrimary6X : public ModelCommand +class WriteColorControlStartUpColorTemperatureMireds : public ModelCommand { public: - ReadColorControlPrimary6X() : ModelCommand("read") + WriteColorControlStartUpColorTemperatureMireds() : ModelCommand("write") { - AddArgument("attr-name", "primary6x"); + AddArgument("attr-name", "start-up-color-temperature-mireds"); + AddArgument("attr-value", 0, UINT16_MAX, &mValue); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary6X() + ~WriteColorControlStartUpColorTemperatureMireds() { delete onSuccessCallback; delete onFailureCallback; @@ -4057,33 +5880,35 @@ class ReadColorControlPrimary6X : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary6X(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.WriteAttributeStartUpColorTemperatureMireds(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + mValue); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mValue; }; /* - * Attribute Primary6Y + * Attribute ClusterRevision */ -class ReadColorControlPrimary6Y : public ModelCommand +class ReadColorControlClusterRevision : public ModelCommand { public: - ReadColorControlPrimary6Y() : ModelCommand("read") + ReadColorControlClusterRevision() : ModelCommand("read") { - AddArgument("attr-name", "primary6y"); + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ReadColorControlPrimary6Y() + ~ReadColorControlClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -4095,7 +5920,7 @@ class ReadColorControlPrimary6Y : public ModelCommand chip::Controller::ColorControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary6Y(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -4105,19 +5930,32 @@ class ReadColorControlPrimary6Y : public ModelCommand new chip::Callback::Callback(OnDefaultFailureResponse, this); }; +/*----------------------------------------------------------------------------*\ +| Cluster ContentLaunch | 0x050A | +|------------------------------------------------------------------------------| +| Commands: | | +| * LaunchContent | 0x00 | +| * LaunchURL | 0x01 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * AcceptsHeaderList | 0x0000 | +| * SupportedStreamingTypes | 0x0001 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + /* - * Attribute Primary6Intensity + * Command LaunchContent */ -class ReadColorControlPrimary6Intensity : public ModelCommand +class ContentLaunchLaunchContent : public ModelCommand { public: - ReadColorControlPrimary6Intensity() : ModelCommand("read") + ContentLaunchLaunchContent() : ModelCommand("launch-content") { - AddArgument("attr-name", "primary6intensity"); + AddArgument("autoPlay", 0, UINT8_MAX, &mAutoPlay); + AddArgument("data", &mData); ModelCommand::AddArguments(); } - - ~ReadColorControlPrimary6Intensity() + ~ContentLaunchLaunchContent() { delete onSuccessCallback; delete onFailureCallback; @@ -4125,33 +5963,37 @@ class ReadColorControlPrimary6Intensity : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x050A) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::ContentLaunchCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePrimary6Intensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.LaunchContent(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mAutoPlay, + chip::ByteSpan(chip::Uint8::from_char(mData), strlen(mData))); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnContentLaunchClusterLaunchContentResponse, + this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mAutoPlay; + char * mData; }; /* - * Attribute WhitePointX + * Command LaunchURL */ -class ReadColorControlWhitePointX : public ModelCommand +class ContentLaunchLaunchURL : public ModelCommand { public: - ReadColorControlWhitePointX() : ModelCommand("read") + ContentLaunchLaunchURL() : ModelCommand("launch-url") { - AddArgument("attr-name", "white-point-x"); + AddArgument("contentURL", &mContentURL); + AddArgument("displayString", &mDisplayString); ModelCommand::AddArguments(); } - - ~ReadColorControlWhitePointX() + ~ContentLaunchLaunchURL() { delete onSuccessCallback; delete onFailureCallback; @@ -4159,31 +6001,33 @@ class ReadColorControlWhitePointX : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x050A) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::ContentLaunchCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeWhitePointX(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.LaunchURL(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mContentURL), strlen(mContentURL)), + chip::ByteSpan(chip::Uint8::from_char(mDisplayString), strlen(mDisplayString))); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnContentLaunchClusterLaunchURLResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + char * mContentURL; + char * mDisplayString; }; -class WriteColorControlWhitePointX : public ModelCommand +/* + * Discover Attributes + */ +class DiscoverContentLaunchAttributes : public ModelCommand { public: - WriteColorControlWhitePointX() : ModelCommand("write") - { - AddArgument("attr-name", "white-point-x"); - AddArgument("attr-value", 0, UINT16_MAX, &mValue); - ModelCommand::AddArguments(); - } + DiscoverContentLaunchAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - ~WriteColorControlWhitePointX() + ~DiscoverContentLaunchAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -4191,11 +6035,11 @@ class WriteColorControlWhitePointX : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::ContentLaunchCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeWhitePointX(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -4203,22 +6047,21 @@ class WriteColorControlWhitePointX : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mValue; }; /* - * Attribute WhitePointY + * Attribute AcceptsHeaderList */ -class ReadColorControlWhitePointY : public ModelCommand +class ReadContentLaunchAcceptsHeaderList : public ModelCommand { public: - ReadColorControlWhitePointY() : ModelCommand("read") + ReadContentLaunchAcceptsHeaderList() : ModelCommand("read") { - AddArgument("attr-name", "white-point-y"); + AddArgument("attr-name", "accepts-header-list"); ModelCommand::AddArguments(); } - ~ReadColorControlWhitePointY() + ~ReadContentLaunchAcceptsHeaderList() { delete onSuccessCallback; delete onFailureCallback; @@ -4226,31 +6069,33 @@ class ReadColorControlWhitePointY : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x050A) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::ContentLaunchCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeWhitePointY(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeAcceptsHeaderList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class WriteColorControlWhitePointY : public ModelCommand +/* + * Attribute SupportedStreamingTypes + */ +class ReadContentLaunchSupportedStreamingTypes : public ModelCommand { public: - WriteColorControlWhitePointY() : ModelCommand("write") + ReadContentLaunchSupportedStreamingTypes() : ModelCommand("read") { - AddArgument("attr-name", "white-point-y"); - AddArgument("attr-value", 0, UINT16_MAX, &mValue); + AddArgument("attr-name", "supported-streaming-types"); ModelCommand::AddArguments(); } - ~WriteColorControlWhitePointY() + ~ReadContentLaunchSupportedStreamingTypes() { delete onSuccessCallback; delete onFailureCallback; @@ -4258,34 +6103,33 @@ class WriteColorControlWhitePointY : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x050A) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::ContentLaunchCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeWhitePointY(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.ReadAttributeSupportedStreamingTypes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mValue; }; /* - * Attribute ColorPointRX + * Attribute ClusterRevision */ -class ReadColorControlColorPointRX : public ModelCommand +class ReadContentLaunchClusterRevision : public ModelCommand { public: - ReadColorControlColorPointRX() : ModelCommand("read") + ReadContentLaunchClusterRevision() : ModelCommand("read") { - AddArgument("attr-name", "color-point-rx"); + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ReadColorControlColorPointRX() + ~ReadContentLaunchClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -4293,11 +6137,11 @@ class ReadColorControlColorPointRX : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x050A) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::ContentLaunchCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorPointRX(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -4307,17 +6151,28 @@ class ReadColorControlColorPointRX : public ModelCommand new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class WriteColorControlColorPointRX : public ModelCommand +/*----------------------------------------------------------------------------*\ +| Cluster Descriptor | 0x001D | +|------------------------------------------------------------------------------| +| Commands: | | +|------------------------------------------------------------------------------| +| Attributes: | | +| * DeviceList | 0x0000 | +| * ServerList | 0x0001 | +| * ClientList | 0x0002 | +| * PartsList | 0x0003 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/* + * Discover Attributes + */ +class DiscoverDescriptorAttributes : public ModelCommand { public: - WriteColorControlColorPointRX() : ModelCommand("write") - { - AddArgument("attr-name", "color-point-rx"); - AddArgument("attr-value", 0, UINT16_MAX, &mValue); - ModelCommand::AddArguments(); - } + DiscoverDescriptorAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - ~WriteColorControlColorPointRX() + ~DiscoverDescriptorAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -4325,11 +6180,11 @@ class WriteColorControlColorPointRX : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DescriptorCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeColorPointRX(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -4337,22 +6192,21 @@ class WriteColorControlColorPointRX : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mValue; }; /* - * Attribute ColorPointRY + * Attribute DeviceList */ -class ReadColorControlColorPointRY : public ModelCommand +class ReadDescriptorDeviceList : public ModelCommand { public: - ReadColorControlColorPointRY() : ModelCommand("read") + ReadDescriptorDeviceList() : ModelCommand("read") { - AddArgument("attr-name", "color-point-ry"); + AddArgument("attr-name", "device-list"); ModelCommand::AddArguments(); } - ~ReadColorControlColorPointRY() + ~ReadDescriptorDeviceList() { delete onSuccessCallback; delete onFailureCallback; @@ -4360,31 +6214,33 @@ class ReadColorControlColorPointRY : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x001D) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DescriptorCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorPointRY(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeDeviceList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDescriptorDeviceListListAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class WriteColorControlColorPointRY : public ModelCommand +/* + * Attribute ServerList + */ +class ReadDescriptorServerList : public ModelCommand { public: - WriteColorControlColorPointRY() : ModelCommand("write") + ReadDescriptorServerList() : ModelCommand("read") { - AddArgument("attr-name", "color-point-ry"); - AddArgument("attr-value", 0, UINT16_MAX, &mValue); + AddArgument("attr-name", "server-list"); ModelCommand::AddArguments(); } - ~WriteColorControlColorPointRY() + ~ReadDescriptorServerList() { delete onSuccessCallback; delete onFailureCallback; @@ -4392,34 +6248,33 @@ class WriteColorControlColorPointRY : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x001D) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DescriptorCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeColorPointRY(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.ReadAttributeServerList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDescriptorServerListListAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mValue; }; /* - * Attribute ColorPointRIntensity + * Attribute ClientList */ -class ReadColorControlColorPointRIntensity : public ModelCommand +class ReadDescriptorClientList : public ModelCommand { public: - ReadColorControlColorPointRIntensity() : ModelCommand("read") + ReadDescriptorClientList() : ModelCommand("read") { - AddArgument("attr-name", "color-point-rintensity"); + AddArgument("attr-name", "client-list"); ModelCommand::AddArguments(); } - ~ReadColorControlColorPointRIntensity() + ~ReadDescriptorClientList() { delete onSuccessCallback; delete onFailureCallback; @@ -4427,31 +6282,33 @@ class ReadColorControlColorPointRIntensity : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x001D) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DescriptorCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorPointRIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeClientList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDescriptorClientListListAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class WriteColorControlColorPointRIntensity : public ModelCommand +/* + * Attribute PartsList + */ +class ReadDescriptorPartsList : public ModelCommand { public: - WriteColorControlColorPointRIntensity() : ModelCommand("write") + ReadDescriptorPartsList() : ModelCommand("read") { - AddArgument("attr-name", "color-point-rintensity"); - AddArgument("attr-value", 0, UINT8_MAX, &mValue); + AddArgument("attr-name", "parts-list"); ModelCommand::AddArguments(); } - ~WriteColorControlColorPointRIntensity() + ~ReadDescriptorPartsList() { delete onSuccessCallback; delete onFailureCallback; @@ -4459,34 +6316,33 @@ class WriteColorControlColorPointRIntensity : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x001D) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DescriptorCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeColorPointRIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.ReadAttributePartsList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDescriptorPartsListListAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mValue; }; /* - * Attribute ColorPointGX + * Attribute ClusterRevision */ -class ReadColorControlColorPointGX : public ModelCommand +class ReadDescriptorClusterRevision : public ModelCommand { public: - ReadColorControlColorPointGX() : ModelCommand("read") + ReadDescriptorClusterRevision() : ModelCommand("read") { - AddArgument("attr-name", "color-point-gx"); + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ReadColorControlColorPointGX() + ~ReadDescriptorClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -4494,11 +6350,11 @@ class ReadColorControlColorPointGX : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x001D) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DescriptorCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorPointGX(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -4508,17 +6364,49 @@ class ReadColorControlColorPointGX : public ModelCommand new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class WriteColorControlColorPointGX : public ModelCommand +/*----------------------------------------------------------------------------*\ +| Cluster DoorLock | 0x0101 | +|------------------------------------------------------------------------------| +| Commands: | | +| * ClearAllPins | 0x08 | +| * ClearAllRfids | 0x19 | +| * ClearHolidaySchedule | 0x13 | +| * ClearPin | 0x07 | +| * ClearRfid | 0x18 | +| * ClearWeekdaySchedule | 0x0D | +| * ClearYeardaySchedule | 0x10 | +| * GetHolidaySchedule | 0x12 | +| * GetLogRecord | 0x04 | +| * GetPin | 0x06 | +| * GetRfid | 0x17 | +| * GetUserType | 0x15 | +| * GetWeekdaySchedule | 0x0C | +| * GetYeardaySchedule | 0x0F | +| * LockDoor | 0x00 | +| * SetHolidaySchedule | 0x11 | +| * SetPin | 0x05 | +| * SetRfid | 0x16 | +| * SetUserType | 0x14 | +| * SetWeekdaySchedule | 0x0B | +| * SetYeardaySchedule | 0x0E | +| * UnlockDoor | 0x01 | +| * UnlockWithTimeout | 0x03 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * LockState | 0x0000 | +| * LockType | 0x0001 | +| * ActuatorEnabled | 0x0002 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/* + * Command ClearAllPins + */ +class DoorLockClearAllPins : public ModelCommand { public: - WriteColorControlColorPointGX() : ModelCommand("write") - { - AddArgument("attr-name", "color-point-gx"); - AddArgument("attr-value", 0, UINT16_MAX, &mValue); - ModelCommand::AddArguments(); - } - - ~WriteColorControlColorPointGX() + DoorLockClearAllPins() : ModelCommand("clear-all-pins") { ModelCommand::AddArguments(); } + ~DoorLockClearAllPins() { delete onSuccessCallback; delete onFailureCallback; @@ -4526,34 +6414,28 @@ class WriteColorControlColorPointGX : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x08) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeColorPointGX(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.ClearAllPins(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterClearAllPinsResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mValue; }; /* - * Attribute ColorPointGY + * Command ClearAllRfids */ -class ReadColorControlColorPointGY : public ModelCommand +class DoorLockClearAllRfids : public ModelCommand { public: - ReadColorControlColorPointGY() : ModelCommand("read") - { - AddArgument("attr-name", "color-point-gy"); - ModelCommand::AddArguments(); - } - - ~ReadColorControlColorPointGY() + DoorLockClearAllRfids() : ModelCommand("clear-all-rfids") { ModelCommand::AddArguments(); } + ~DoorLockClearAllRfids() { delete onSuccessCallback; delete onFailureCallback; @@ -4561,31 +6443,32 @@ class ReadColorControlColorPointGY : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x19) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorPointGY(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ClearAllRfids(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterClearAllRfidsResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class WriteColorControlColorPointGY : public ModelCommand +/* + * Command ClearHolidaySchedule + */ +class DoorLockClearHolidaySchedule : public ModelCommand { public: - WriteColorControlColorPointGY() : ModelCommand("write") + DoorLockClearHolidaySchedule() : ModelCommand("clear-holiday-schedule") { - AddArgument("attr-name", "color-point-gy"); - AddArgument("attr-value", 0, UINT16_MAX, &mValue); + AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); ModelCommand::AddArguments(); } - - ~WriteColorControlColorPointGY() + ~DoorLockClearHolidaySchedule() { delete onSuccessCallback; delete onFailureCallback; @@ -4593,34 +6476,34 @@ class WriteColorControlColorPointGY : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x13) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeColorPointGY(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.ClearHolidaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnDoorLockClusterClearHolidayScheduleResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mValue; + uint8_t mScheduleId; }; /* - * Attribute ColorPointGIntensity + * Command ClearPin */ -class ReadColorControlColorPointGIntensity : public ModelCommand +class DoorLockClearPin : public ModelCommand { public: - ReadColorControlColorPointGIntensity() : ModelCommand("read") + DoorLockClearPin() : ModelCommand("clear-pin") { - AddArgument("attr-name", "color-point-gintensity"); + AddArgument("userId", 0, UINT16_MAX, &mUserId); ModelCommand::AddArguments(); } - - ~ReadColorControlColorPointGIntensity() + ~DoorLockClearPin() { delete onSuccessCallback; delete onFailureCallback; @@ -4628,31 +6511,33 @@ class ReadColorControlColorPointGIntensity : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x07) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorPointGIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ClearPin(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterClearPinResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mUserId; }; -class WriteColorControlColorPointGIntensity : public ModelCommand +/* + * Command ClearRfid + */ +class DoorLockClearRfid : public ModelCommand { public: - WriteColorControlColorPointGIntensity() : ModelCommand("write") + DoorLockClearRfid() : ModelCommand("clear-rfid") { - AddArgument("attr-name", "color-point-gintensity"); - AddArgument("attr-value", 0, UINT8_MAX, &mValue); + AddArgument("userId", 0, UINT16_MAX, &mUserId); ModelCommand::AddArguments(); } - - ~WriteColorControlColorPointGIntensity() + ~DoorLockClearRfid() { delete onSuccessCallback; delete onFailureCallback; @@ -4660,34 +6545,34 @@ class WriteColorControlColorPointGIntensity : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x18) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeColorPointGIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.ClearRfid(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterClearRfidResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mValue; + uint16_t mUserId; }; /* - * Attribute ColorPointBX + * Command ClearWeekdaySchedule */ -class ReadColorControlColorPointBX : public ModelCommand +class DoorLockClearWeekdaySchedule : public ModelCommand { public: - ReadColorControlColorPointBX() : ModelCommand("read") + DoorLockClearWeekdaySchedule() : ModelCommand("clear-weekday-schedule") { - AddArgument("attr-name", "color-point-bx"); + AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); + AddArgument("userId", 0, UINT16_MAX, &mUserId); ModelCommand::AddArguments(); } - - ~ReadColorControlColorPointBX() + ~DoorLockClearWeekdaySchedule() { delete onSuccessCallback; delete onFailureCallback; @@ -4695,31 +6580,36 @@ class ReadColorControlColorPointBX : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x0D) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorPointBX(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ClearWeekdaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnDoorLockClusterClearWeekdayScheduleResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mScheduleId; + uint16_t mUserId; }; -class WriteColorControlColorPointBX : public ModelCommand +/* + * Command ClearYeardaySchedule + */ +class DoorLockClearYeardaySchedule : public ModelCommand { public: - WriteColorControlColorPointBX() : ModelCommand("write") + DoorLockClearYeardaySchedule() : ModelCommand("clear-yearday-schedule") { - AddArgument("attr-name", "color-point-bx"); - AddArgument("attr-value", 0, UINT16_MAX, &mValue); + AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); + AddArgument("userId", 0, UINT16_MAX, &mUserId); ModelCommand::AddArguments(); } - - ~WriteColorControlColorPointBX() + ~DoorLockClearYeardaySchedule() { delete onSuccessCallback; delete onFailureCallback; @@ -4727,34 +6617,35 @@ class WriteColorControlColorPointBX : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x10) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeColorPointBX(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.ClearYeardaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnDoorLockClusterClearYeardayScheduleResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mValue; + uint8_t mScheduleId; + uint16_t mUserId; }; /* - * Attribute ColorPointBY + * Command GetHolidaySchedule */ -class ReadColorControlColorPointBY : public ModelCommand +class DoorLockGetHolidaySchedule : public ModelCommand { public: - ReadColorControlColorPointBY() : ModelCommand("read") + DoorLockGetHolidaySchedule() : ModelCommand("get-holiday-schedule") { - AddArgument("attr-name", "color-point-by"); + AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); ModelCommand::AddArguments(); } - - ~ReadColorControlColorPointBY() + ~DoorLockGetHolidaySchedule() { delete onSuccessCallback; delete onFailureCallback; @@ -4762,31 +6653,34 @@ class ReadColorControlColorPointBY : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x12) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorPointBY(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.GetHolidaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterGetHolidayScheduleResponse, + this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mScheduleId; }; -class WriteColorControlColorPointBY : public ModelCommand +/* + * Command GetLogRecord + */ +class DoorLockGetLogRecord : public ModelCommand { public: - WriteColorControlColorPointBY() : ModelCommand("write") + DoorLockGetLogRecord() : ModelCommand("get-log-record") { - AddArgument("attr-name", "color-point-by"); - AddArgument("attr-value", 0, UINT16_MAX, &mValue); + AddArgument("logIndex", 0, UINT16_MAX, &mLogIndex); ModelCommand::AddArguments(); } - - ~WriteColorControlColorPointBY() + ~DoorLockGetLogRecord() { delete onSuccessCallback; delete onFailureCallback; @@ -4794,34 +6688,33 @@ class WriteColorControlColorPointBY : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x04) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeColorPointBY(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.GetLogRecord(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mLogIndex); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterGetLogRecordResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mValue; + uint16_t mLogIndex; }; /* - * Attribute ColorPointBIntensity + * Command GetPin */ -class ReadColorControlColorPointBIntensity : public ModelCommand +class DoorLockGetPin : public ModelCommand { public: - ReadColorControlColorPointBIntensity() : ModelCommand("read") + DoorLockGetPin() : ModelCommand("get-pin") { - AddArgument("attr-name", "color-point-bintensity"); + AddArgument("userId", 0, UINT16_MAX, &mUserId); ModelCommand::AddArguments(); } - - ~ReadColorControlColorPointBIntensity() + ~DoorLockGetPin() { delete onSuccessCallback; delete onFailureCallback; @@ -4829,31 +6722,33 @@ class ReadColorControlColorPointBIntensity : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x06) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorPointBIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.GetPin(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterGetPinResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mUserId; }; -class WriteColorControlColorPointBIntensity : public ModelCommand +/* + * Command GetRfid + */ +class DoorLockGetRfid : public ModelCommand { public: - WriteColorControlColorPointBIntensity() : ModelCommand("write") + DoorLockGetRfid() : ModelCommand("get-rfid") { - AddArgument("attr-name", "color-point-bintensity"); - AddArgument("attr-value", 0, UINT8_MAX, &mValue); + AddArgument("userId", 0, UINT16_MAX, &mUserId); ModelCommand::AddArguments(); } - - ~WriteColorControlColorPointBIntensity() + ~DoorLockGetRfid() { delete onSuccessCallback; delete onFailureCallback; @@ -4861,34 +6756,33 @@ class WriteColorControlColorPointBIntensity : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x17) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeColorPointBIntensity(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.GetRfid(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterGetRfidResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mValue; + uint16_t mUserId; }; /* - * Attribute EnhancedCurrentHue + * Command GetUserType */ -class ReadColorControlEnhancedCurrentHue : public ModelCommand +class DoorLockGetUserType : public ModelCommand { public: - ReadColorControlEnhancedCurrentHue() : ModelCommand("read") + DoorLockGetUserType() : ModelCommand("get-user-type") { - AddArgument("attr-name", "enhanced-current-hue"); + AddArgument("userId", 0, UINT16_MAX, &mUserId); ModelCommand::AddArguments(); } - - ~ReadColorControlEnhancedCurrentHue() + ~DoorLockGetUserType() { delete onSuccessCallback; delete onFailureCallback; @@ -4896,33 +6790,34 @@ class ReadColorControlEnhancedCurrentHue : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x15) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeEnhancedCurrentHue(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.GetUserType(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterGetUserTypeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mUserId; }; /* - * Attribute EnhancedColorMode + * Command GetWeekdaySchedule */ -class ReadColorControlEnhancedColorMode : public ModelCommand +class DoorLockGetWeekdaySchedule : public ModelCommand { public: - ReadColorControlEnhancedColorMode() : ModelCommand("read") + DoorLockGetWeekdaySchedule() : ModelCommand("get-weekday-schedule") { - AddArgument("attr-name", "enhanced-color-mode"); + AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); + AddArgument("userId", 0, UINT16_MAX, &mUserId); ModelCommand::AddArguments(); } - - ~ReadColorControlEnhancedColorMode() + ~DoorLockGetWeekdaySchedule() { delete onSuccessCallback; delete onFailureCallback; @@ -4930,33 +6825,36 @@ class ReadColorControlEnhancedColorMode : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeEnhancedColorMode(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.GetWeekdaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterGetWeekdayScheduleResponse, + this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mScheduleId; + uint16_t mUserId; }; /* - * Attribute ColorLoopActive + * Command GetYeardaySchedule */ -class ReadColorControlColorLoopActive : public ModelCommand +class DoorLockGetYeardaySchedule : public ModelCommand { public: - ReadColorControlColorLoopActive() : ModelCommand("read") + DoorLockGetYeardaySchedule() : ModelCommand("get-yearday-schedule") { - AddArgument("attr-name", "color-loop-active"); + AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); + AddArgument("userId", 0, UINT16_MAX, &mUserId); ModelCommand::AddArguments(); } - - ~ReadColorControlColorLoopActive() + ~DoorLockGetYeardaySchedule() { delete onSuccessCallback; delete onFailureCallback; @@ -4964,33 +6862,35 @@ class ReadColorControlColorLoopActive : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x0F) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorLoopActive(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.GetYeardaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterGetYeardayScheduleResponse, + this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mScheduleId; + uint16_t mUserId; }; /* - * Attribute ColorLoopDirection + * Command LockDoor */ -class ReadColorControlColorLoopDirection : public ModelCommand +class DoorLockLockDoor : public ModelCommand { public: - ReadColorControlColorLoopDirection() : ModelCommand("read") + DoorLockLockDoor() : ModelCommand("lock-door") { - AddArgument("attr-name", "color-loop-direction"); + AddArgument("pin", &mPin); ModelCommand::AddArguments(); } - - ~ReadColorControlColorLoopDirection() + ~DoorLockLockDoor() { delete onSuccessCallback; delete onFailureCallback; @@ -4998,33 +6898,37 @@ class ReadColorControlColorLoopDirection : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorLoopDirection(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.LockDoor(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mPin), strlen(mPin))); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterLockDoorResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + char * mPin; }; /* - * Attribute ColorLoopTime + * Command SetHolidaySchedule */ -class ReadColorControlColorLoopTime : public ModelCommand +class DoorLockSetHolidaySchedule : public ModelCommand { public: - ReadColorControlColorLoopTime() : ModelCommand("read") + DoorLockSetHolidaySchedule() : ModelCommand("set-holiday-schedule") { - AddArgument("attr-name", "color-loop-time"); + AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); + AddArgument("localStartTime", 0, UINT32_MAX, &mLocalStartTime); + AddArgument("localEndTime", 0, UINT32_MAX, &mLocalEndTime); + AddArgument("operatingModeDuringHoliday", 0, UINT8_MAX, &mOperatingModeDuringHoliday); ModelCommand::AddArguments(); } - - ~ReadColorControlColorLoopTime() + ~DoorLockSetHolidaySchedule() { delete onSuccessCallback; delete onFailureCallback; @@ -5032,33 +6936,41 @@ class ReadColorControlColorLoopTime : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x11) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorLoopTime(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.SetHolidaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mLocalStartTime, + mLocalEndTime, mOperatingModeDuringHoliday); } -private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterSetHolidayScheduleResponse, + this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mScheduleId; + uint32_t mLocalStartTime; + uint32_t mLocalEndTime; + uint8_t mOperatingModeDuringHoliday; }; /* - * Attribute ColorCapabilities + * Command SetPin */ -class ReadColorControlColorCapabilities : public ModelCommand +class DoorLockSetPin : public ModelCommand { public: - ReadColorControlColorCapabilities() : ModelCommand("read") + DoorLockSetPin() : ModelCommand("set-pin") { - AddArgument("attr-name", "color-capabilities"); + AddArgument("userId", 0, UINT16_MAX, &mUserId); + AddArgument("userStatus", 0, UINT8_MAX, &mUserStatus); + AddArgument("userType", 0, UINT8_MAX, &mUserType); + AddArgument("pin", &mPin); ModelCommand::AddArguments(); } - - ~ReadColorControlColorCapabilities() + ~DoorLockSetPin() { delete onSuccessCallback; delete onFailureCallback; @@ -5066,33 +6978,40 @@ class ReadColorControlColorCapabilities : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x05) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorCapabilities(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.SetPin(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId, mUserStatus, mUserType, + chip::ByteSpan(chip::Uint8::from_char(mPin), strlen(mPin))); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterSetPinResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mUserId; + uint8_t mUserStatus; + uint8_t mUserType; + char * mPin; }; /* - * Attribute ColorTempPhysicalMin + * Command SetRfid */ -class ReadColorControlColorTempPhysicalMin : public ModelCommand +class DoorLockSetRfid : public ModelCommand { public: - ReadColorControlColorTempPhysicalMin() : ModelCommand("read") + DoorLockSetRfid() : ModelCommand("set-rfid") { - AddArgument("attr-name", "color-temp-physical-min"); + AddArgument("userId", 0, UINT16_MAX, &mUserId); + AddArgument("userStatus", 0, UINT8_MAX, &mUserStatus); + AddArgument("userType", 0, UINT8_MAX, &mUserType); + AddArgument("id", &mId); ModelCommand::AddArguments(); } - - ~ReadColorControlColorTempPhysicalMin() + ~DoorLockSetRfid() { delete onSuccessCallback; delete onFailureCallback; @@ -5100,33 +7019,38 @@ class ReadColorControlColorTempPhysicalMin : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x16) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorTempPhysicalMin(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.SetRfid(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId, mUserStatus, mUserType, + chip::ByteSpan(chip::Uint8::from_char(mId), strlen(mId))); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterSetRfidResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mUserId; + uint8_t mUserStatus; + uint8_t mUserType; + char * mId; }; /* - * Attribute ColorTempPhysicalMax + * Command SetUserType */ -class ReadColorControlColorTempPhysicalMax : public ModelCommand +class DoorLockSetUserType : public ModelCommand { public: - ReadColorControlColorTempPhysicalMax() : ModelCommand("read") + DoorLockSetUserType() : ModelCommand("set-user-type") { - AddArgument("attr-name", "color-temp-physical-max"); + AddArgument("userId", 0, UINT16_MAX, &mUserId); + AddArgument("userType", 0, UINT8_MAX, &mUserType); ModelCommand::AddArguments(); } - - ~ReadColorControlColorTempPhysicalMax() + ~DoorLockSetUserType() { delete onSuccessCallback; delete onFailureCallback; @@ -5134,33 +7058,40 @@ class ReadColorControlColorTempPhysicalMax : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x14) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeColorTempPhysicalMax(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.SetUserType(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId, mUserType); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterSetUserTypeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mUserId; + uint8_t mUserType; }; /* - * Attribute CoupleColorTempToLevelMinMireds + * Command SetWeekdaySchedule */ -class ReadColorControlCoupleColorTempToLevelMinMireds : public ModelCommand +class DoorLockSetWeekdaySchedule : public ModelCommand { public: - ReadColorControlCoupleColorTempToLevelMinMireds() : ModelCommand("read") + DoorLockSetWeekdaySchedule() : ModelCommand("set-weekday-schedule") { - AddArgument("attr-name", "couple-color-temp-to-level-min-mireds"); + AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); + AddArgument("userId", 0, UINT16_MAX, &mUserId); + AddArgument("daysMask", 0, UINT8_MAX, &mDaysMask); + AddArgument("startHour", 0, UINT8_MAX, &mStartHour); + AddArgument("startMinute", 0, UINT8_MAX, &mStartMinute); + AddArgument("endHour", 0, UINT8_MAX, &mEndHour); + AddArgument("endMinute", 0, UINT8_MAX, &mEndMinute); ModelCommand::AddArguments(); } - - ~ReadColorControlCoupleColorTempToLevelMinMireds() + ~DoorLockSetWeekdaySchedule() { delete onSuccessCallback; delete onFailureCallback; @@ -5168,33 +7099,44 @@ class ReadColorControlCoupleColorTempToLevelMinMireds : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x0B) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeCoupleColorTempToLevelMinMireds(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.SetWeekdaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId, mDaysMask, + mStartHour, mStartMinute, mEndHour, mEndMinute); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterSetWeekdayScheduleResponse, + this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mScheduleId; + uint16_t mUserId; + uint8_t mDaysMask; + uint8_t mStartHour; + uint8_t mStartMinute; + uint8_t mEndHour; + uint8_t mEndMinute; }; /* - * Attribute StartUpColorTemperatureMireds + * Command SetYeardaySchedule */ -class ReadColorControlStartUpColorTemperatureMireds : public ModelCommand +class DoorLockSetYeardaySchedule : public ModelCommand { public: - ReadColorControlStartUpColorTemperatureMireds() : ModelCommand("read") + DoorLockSetYeardaySchedule() : ModelCommand("set-yearday-schedule") { - AddArgument("attr-name", "start-up-color-temperature-mireds"); + AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); + AddArgument("userId", 0, UINT16_MAX, &mUserId); + AddArgument("localStartTime", 0, UINT32_MAX, &mLocalStartTime); + AddArgument("localEndTime", 0, UINT32_MAX, &mLocalEndTime); ModelCommand::AddArguments(); } - - ~ReadColorControlStartUpColorTemperatureMireds() + ~DoorLockSetYeardaySchedule() { delete onSuccessCallback; delete onFailureCallback; @@ -5202,31 +7144,38 @@ class ReadColorControlStartUpColorTemperatureMireds : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x0E) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeStartUpColorTemperatureMireds(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.SetYeardaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId, + mLocalStartTime, mLocalEndTime); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterSetYeardayScheduleResponse, + this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mScheduleId; + uint16_t mUserId; + uint32_t mLocalStartTime; + uint32_t mLocalEndTime; }; -class WriteColorControlStartUpColorTemperatureMireds : public ModelCommand +/* + * Command UnlockDoor + */ +class DoorLockUnlockDoor : public ModelCommand { public: - WriteColorControlStartUpColorTemperatureMireds() : ModelCommand("write") + DoorLockUnlockDoor() : ModelCommand("unlock-door") { - AddArgument("attr-name", "start-up-color-temperature-mireds"); - AddArgument("attr-value", 0, UINT16_MAX, &mValue); + AddArgument("pin", &mPin); ModelCommand::AddArguments(); } - - ~WriteColorControlStartUpColorTemperatureMireds() + ~DoorLockUnlockDoor() { delete onSuccessCallback; delete onFailureCallback; @@ -5234,35 +7183,35 @@ class WriteColorControlStartUpColorTemperatureMireds : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeStartUpColorTemperatureMireds(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), - mValue); + return cluster.UnlockDoor(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mPin), strlen(mPin))); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterUnlockDoorResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mValue; + char * mPin; }; /* - * Attribute ClusterRevision + * Command UnlockWithTimeout */ -class ReadColorControlClusterRevision : public ModelCommand +class DoorLockUnlockWithTimeout : public ModelCommand { public: - ReadColorControlClusterRevision() : ModelCommand("read") + DoorLockUnlockWithTimeout() : ModelCommand("unlock-with-timeout") { - AddArgument("attr-name", "cluster-revision"); + AddArgument("timeoutInSeconds", 0, UINT16_MAX, &mTimeoutInSeconds); + AddArgument("pin", &mPin); ModelCommand::AddArguments(); } - - ~ReadColorControlClusterRevision() + ~DoorLockUnlockWithTimeout() { delete onSuccessCallback; delete onFailureCallback; @@ -5270,42 +7219,33 @@ class ReadColorControlClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0300) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x03) on endpoint %" PRIu16, endpointId); - chip::Controller::ColorControlCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.UnlockWithTimeout(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mTimeoutInSeconds, + chip::ByteSpan(chip::Uint8::from_char(mPin), strlen(mPin))); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDoorLockClusterUnlockWithTimeoutResponse, + this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mTimeoutInSeconds; + char * mPin; }; -/*----------------------------------------------------------------------------*\ -| Cluster Descriptor | 0x001D | -|------------------------------------------------------------------------------| -| Commands: | | -|------------------------------------------------------------------------------| -| Attributes: | | -| * DeviceList | 0x0000 | -| * ServerList | 0x0001 | -| * ClientList | 0x0002 | -| * PartsList | 0x0003 | -| * ClusterRevision | 0xFFFD | -\*----------------------------------------------------------------------------*/ - /* * Discover Attributes */ -class DiscoverDescriptorAttributes : public ModelCommand +class DiscoverDoorLockAttributes : public ModelCommand { public: - DiscoverDescriptorAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + DiscoverDoorLockAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - ~DiscoverDescriptorAttributes() + ~DiscoverDoorLockAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -5315,7 +7255,7 @@ class DiscoverDescriptorAttributes : public ModelCommand { ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::DescriptorCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } @@ -5328,18 +7268,18 @@ class DiscoverDescriptorAttributes : public ModelCommand }; /* - * Attribute DeviceList + * Attribute LockState */ -class ReadDescriptorDeviceList : public ModelCommand +class ReadDoorLockLockState : public ModelCommand { public: - ReadDescriptorDeviceList() : ModelCommand("read") + ReadDoorLockLockState() : ModelCommand("read") { - AddArgument("attr-name", "device-list"); + AddArgument("attr-name", "lock-state"); ModelCommand::AddArguments(); } - ~ReadDescriptorDeviceList() + ~ReadDoorLockLockState() { delete onSuccessCallback; delete onFailureCallback; @@ -5347,67 +7287,79 @@ class ReadDescriptorDeviceList : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x001D) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DescriptorCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeDeviceList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeLockState(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDescriptorDeviceListListAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); -}; - -/* - * Attribute ServerList - */ -class ReadDescriptorServerList : public ModelCommand +}; + +class ReportDoorLockLockState : public ModelCommand { public: - ReadDescriptorServerList() : ModelCommand("read") + ReportDoorLockLockState() : ModelCommand("report") { - AddArgument("attr-name", "server-list"); + AddArgument("attr-name", "lock-state"); + AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); + AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); ModelCommand::AddArguments(); } - ~ReadDescriptorServerList() + ~ReportDoorLockLockState() { delete onSuccessCallback; delete onFailureCallback; + delete onReportCallback; } CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x001D) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x06) on endpoint %" PRIu16, endpointId); - chip::Controller::DescriptorCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeServerList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + + CHIP_ERROR err = cluster.ReportAttributeLockState(onReportCallback->Cancel()); + if (err != CHIP_NO_ERROR) + { + return err; + } + + return cluster.ConfigureAttributeLockState(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, + mMaxInterval); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDescriptorServerListListAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + chip::Callback::Callback * onReportCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); + uint16_t mMinInterval; + uint16_t mMaxInterval; }; /* - * Attribute ClientList + * Attribute LockType */ -class ReadDescriptorClientList : public ModelCommand +class ReadDoorLockLockType : public ModelCommand { public: - ReadDescriptorClientList() : ModelCommand("read") + ReadDoorLockLockType() : ModelCommand("read") { - AddArgument("attr-name", "client-list"); + AddArgument("attr-name", "lock-type"); ModelCommand::AddArguments(); } - ~ReadDescriptorClientList() + ~ReadDoorLockLockType() { delete onSuccessCallback; delete onFailureCallback; @@ -5415,33 +7367,33 @@ class ReadDescriptorClientList : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x001D) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DescriptorCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeClientList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeLockType(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDescriptorClientListListAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute PartsList + * Attribute ActuatorEnabled */ -class ReadDescriptorPartsList : public ModelCommand +class ReadDoorLockActuatorEnabled : public ModelCommand { public: - ReadDescriptorPartsList() : ModelCommand("read") + ReadDoorLockActuatorEnabled() : ModelCommand("read") { - AddArgument("attr-name", "parts-list"); + AddArgument("attr-name", "actuator-enabled"); ModelCommand::AddArguments(); } - ~ReadDescriptorPartsList() + ~ReadDoorLockActuatorEnabled() { delete onSuccessCallback; delete onFailureCallback; @@ -5449,16 +7401,16 @@ class ReadDescriptorPartsList : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x001D) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DescriptorCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributePartsList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeActuatorEnabled(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDescriptorPartsListListAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnBooleanAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; @@ -5466,16 +7418,16 @@ class ReadDescriptorPartsList : public ModelCommand /* * Attribute ClusterRevision */ -class ReadDescriptorClusterRevision : public ModelCommand +class ReadDoorLockClusterRevision : public ModelCommand { public: - ReadDescriptorClusterRevision() : ModelCommand("read") + ReadDoorLockClusterRevision() : ModelCommand("read") { AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ReadDescriptorClusterRevision() + ~ReadDoorLockClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -5483,9 +7435,9 @@ class ReadDescriptorClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x001D) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DescriptorCluster cluster; + chip::Controller::DoorLockCluster cluster; cluster.Associate(device, endpointId); return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } @@ -5498,48 +7450,33 @@ class ReadDescriptorClusterRevision : public ModelCommand }; /*----------------------------------------------------------------------------*\ -| Cluster DoorLock | 0x0101 | +| Cluster GeneralCommissioning | 0x0030 | |------------------------------------------------------------------------------| | Commands: | | -| * ClearAllPins | 0x08 | -| * ClearAllRfids | 0x19 | -| * ClearHolidaySchedule | 0x13 | -| * ClearPin | 0x07 | -| * ClearRfid | 0x18 | -| * ClearWeekdaySchedule | 0x0D | -| * ClearYeardaySchedule | 0x10 | -| * GetHolidaySchedule | 0x12 | -| * GetLogRecord | 0x04 | -| * GetPin | 0x06 | -| * GetRfid | 0x17 | -| * GetUserType | 0x15 | -| * GetWeekdaySchedule | 0x0C | -| * GetYeardaySchedule | 0x0F | -| * LockDoor | 0x00 | -| * SetHolidaySchedule | 0x11 | -| * SetPin | 0x05 | -| * SetRfid | 0x16 | -| * SetUserType | 0x14 | -| * SetWeekdaySchedule | 0x0B | -| * SetYeardaySchedule | 0x0E | -| * UnlockDoor | 0x01 | -| * UnlockWithTimeout | 0x03 | +| * ArmFailSafe | 0x00 | +| * CommissioningComplete | 0x04 | +| * SetRegulatoryConfig | 0x02 | |------------------------------------------------------------------------------| | Attributes: | | -| * LockState | 0x0000 | -| * LockType | 0x0001 | -| * ActuatorEnabled | 0x0002 | +| * FabricId | 0x0000 | +| * Breadcrumb | 0x0001 | | * ClusterRevision | 0xFFFD | \*----------------------------------------------------------------------------*/ /* - * Command ClearAllPins + * Command ArmFailSafe */ -class DoorLockClearAllPins : public ModelCommand +class GeneralCommissioningArmFailSafe : public ModelCommand { public: - DoorLockClearAllPins() : ModelCommand("clear-all-pins") { ModelCommand::AddArguments(); } - ~DoorLockClearAllPins() + GeneralCommissioningArmFailSafe() : ModelCommand("arm-fail-safe") + { + AddArgument("expiryLengthSeconds", 0, UINT16_MAX, &mExpiryLengthSeconds); + AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); + AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); + ModelCommand::AddArguments(); + } + ~GeneralCommissioningArmFailSafe() { delete onSuccessCallback; delete onFailureCallback; @@ -5547,28 +7484,33 @@ class DoorLockClearAllPins : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x08) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0030) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GeneralCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.ClearAllPins(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ArmFailSafe(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mExpiryLengthSeconds, mBreadcrumb, + mTimeoutMs); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterClearAllPinsResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnGeneralCommissioningClusterArmFailSafeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mExpiryLengthSeconds; + uint64_t mBreadcrumb; + uint32_t mTimeoutMs; }; /* - * Command ClearAllRfids + * Command CommissioningComplete */ -class DoorLockClearAllRfids : public ModelCommand +class GeneralCommissioningCommissioningComplete : public ModelCommand { public: - DoorLockClearAllRfids() : ModelCommand("clear-all-rfids") { ModelCommand::AddArguments(); } - ~DoorLockClearAllRfids() + GeneralCommissioningCommissioningComplete() : ModelCommand("commissioning-complete") { ModelCommand::AddArguments(); } + ~GeneralCommissioningCommissioningComplete() { delete onSuccessCallback; delete onFailureCallback; @@ -5576,32 +7518,36 @@ class DoorLockClearAllRfids : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x19) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0030) command (0x04) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GeneralCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.ClearAllRfids(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.CommissioningComplete(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterClearAllRfidsResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnGeneralCommissioningClusterCommissioningCompleteResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Command ClearHolidaySchedule + * Command SetRegulatoryConfig */ -class DoorLockClearHolidaySchedule : public ModelCommand +class GeneralCommissioningSetRegulatoryConfig : public ModelCommand { public: - DoorLockClearHolidaySchedule() : ModelCommand("clear-holiday-schedule") + GeneralCommissioningSetRegulatoryConfig() : ModelCommand("set-regulatory-config") { - AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); + AddArgument("location", 0, UINT8_MAX, &mLocation); + AddArgument("countryCode", &mCountryCode); + AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); + AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); ModelCommand::AddArguments(); } - ~DoorLockClearHolidaySchedule() + ~GeneralCommissioningSetRegulatoryConfig() { delete onSuccessCallback; delete onFailureCallback; @@ -5609,34 +7555,36 @@ class DoorLockClearHolidaySchedule : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x13) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0030) command (0x02) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GeneralCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.ClearHolidaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId); + return cluster.SetRegulatoryConfig(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mLocation, + chip::ByteSpan(chip::Uint8::from_char(mCountryCode), strlen(mCountryCode)), mBreadcrumb, + mTimeoutMs); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnDoorLockClusterClearHolidayScheduleResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnGeneralCommissioningClusterSetRegulatoryConfigResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mScheduleId; + uint8_t mLocation; + char * mCountryCode; + uint64_t mBreadcrumb; + uint32_t mTimeoutMs; }; /* - * Command ClearPin + * Discover Attributes */ -class DoorLockClearPin : public ModelCommand +class DiscoverGeneralCommissioningAttributes : public ModelCommand { public: - DoorLockClearPin() : ModelCommand("clear-pin") - { - AddArgument("userId", 0, UINT16_MAX, &mUserId); - ModelCommand::AddArguments(); - } - ~DoorLockClearPin() + DiscoverGeneralCommissioningAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + + ~DiscoverGeneralCommissioningAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -5644,33 +7592,33 @@ class DoorLockClearPin : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x07) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GeneralCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.ClearPin(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterClearPinResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mUserId; }; /* - * Command ClearRfid + * Attribute FabricId */ -class DoorLockClearRfid : public ModelCommand +class ReadGeneralCommissioningFabricId : public ModelCommand { public: - DoorLockClearRfid() : ModelCommand("clear-rfid") + ReadGeneralCommissioningFabricId() : ModelCommand("read") { - AddArgument("userId", 0, UINT16_MAX, &mUserId); + AddArgument("attr-name", "fabric-id"); ModelCommand::AddArguments(); } - ~DoorLockClearRfid() + + ~ReadGeneralCommissioningFabricId() { delete onSuccessCallback; delete onFailureCallback; @@ -5678,34 +7626,33 @@ class DoorLockClearRfid : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x18) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0030) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GeneralCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.ClearRfid(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId); + return cluster.ReadAttributeFabricId(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterClearRfidResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mUserId; }; /* - * Command ClearWeekdaySchedule + * Attribute Breadcrumb */ -class DoorLockClearWeekdaySchedule : public ModelCommand +class ReadGeneralCommissioningBreadcrumb : public ModelCommand { public: - DoorLockClearWeekdaySchedule() : ModelCommand("clear-weekday-schedule") + ReadGeneralCommissioningBreadcrumb() : ModelCommand("read") { - AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); - AddArgument("userId", 0, UINT16_MAX, &mUserId); + AddArgument("attr-name", "breadcrumb"); ModelCommand::AddArguments(); } - ~DoorLockClearWeekdaySchedule() + + ~ReadGeneralCommissioningBreadcrumb() { delete onSuccessCallback; delete onFailureCallback; @@ -5713,36 +7660,31 @@ class DoorLockClearWeekdaySchedule : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x0D) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0030) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GeneralCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.ClearWeekdaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId); + return cluster.ReadAttributeBreadcrumb(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnDoorLockClusterClearWeekdayScheduleResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt64uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mScheduleId; - uint16_t mUserId; }; -/* - * Command ClearYeardaySchedule - */ -class DoorLockClearYeardaySchedule : public ModelCommand +class WriteGeneralCommissioningBreadcrumb : public ModelCommand { public: - DoorLockClearYeardaySchedule() : ModelCommand("clear-yearday-schedule") + WriteGeneralCommissioningBreadcrumb() : ModelCommand("write") { - AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); - AddArgument("userId", 0, UINT16_MAX, &mUserId); + AddArgument("attr-name", "breadcrumb"); + AddArgument("attr-value", 0, UINT64_MAX, &mValue); ModelCommand::AddArguments(); } - ~DoorLockClearYeardaySchedule() + + ~WriteGeneralCommissioningBreadcrumb() { delete onSuccessCallback; delete onFailureCallback; @@ -5750,35 +7692,34 @@ class DoorLockClearYeardaySchedule : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x10) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0030) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GeneralCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.ClearYeardaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId); + return cluster.WriteAttributeBreadcrumb(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnDoorLockClusterClearYeardayScheduleResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mScheduleId; - uint16_t mUserId; + uint64_t mValue; }; /* - * Command GetHolidaySchedule + * Attribute ClusterRevision */ -class DoorLockGetHolidaySchedule : public ModelCommand +class ReadGeneralCommissioningClusterRevision : public ModelCommand { public: - DoorLockGetHolidaySchedule() : ModelCommand("get-holiday-schedule") + ReadGeneralCommissioningClusterRevision() : ModelCommand("read") { - AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~DoorLockGetHolidaySchedule() + + ~ReadGeneralCommissioningClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -5786,34 +7727,40 @@ class DoorLockGetHolidaySchedule : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x12) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0030) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GeneralCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.GetHolidaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterGetHolidayScheduleResponse, - this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mScheduleId; }; +/*----------------------------------------------------------------------------*\ +| Cluster GroupKeyManagement | 0xF004 | +|------------------------------------------------------------------------------| +| Commands: | | +|------------------------------------------------------------------------------| +| Attributes: | | +| * Groups | 0x0000 | +| * GroupKeys | 0x0001 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + /* - * Command GetLogRecord + * Discover Attributes */ -class DoorLockGetLogRecord : public ModelCommand +class DiscoverGroupKeyManagementAttributes : public ModelCommand { public: - DoorLockGetLogRecord() : ModelCommand("get-log-record") - { - AddArgument("logIndex", 0, UINT16_MAX, &mLogIndex); - ModelCommand::AddArguments(); - } - ~DoorLockGetLogRecord() + DiscoverGroupKeyManagementAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + + ~DiscoverGroupKeyManagementAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -5821,33 +7768,33 @@ class DoorLockGetLogRecord : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x04) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GroupKeyManagementCluster cluster; cluster.Associate(device, endpointId); - return cluster.GetLogRecord(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mLogIndex); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterGetLogRecordResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mLogIndex; }; /* - * Command GetPin + * Attribute Groups */ -class DoorLockGetPin : public ModelCommand +class ReadGroupKeyManagementGroups : public ModelCommand { public: - DoorLockGetPin() : ModelCommand("get-pin") + ReadGroupKeyManagementGroups() : ModelCommand("read") { - AddArgument("userId", 0, UINT16_MAX, &mUserId); + AddArgument("attr-name", "groups"); ModelCommand::AddArguments(); } - ~DoorLockGetPin() + + ~ReadGroupKeyManagementGroups() { delete onSuccessCallback; delete onFailureCallback; @@ -5855,33 +7802,34 @@ class DoorLockGetPin : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x06) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0xF004) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GroupKeyManagementCluster cluster; cluster.Associate(device, endpointId); - return cluster.GetPin(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId); + return cluster.ReadAttributeGroups(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterGetPinResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnGroupKeyManagementGroupsListAttributeResponse, + this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mUserId; }; /* - * Command GetRfid + * Attribute GroupKeys */ -class DoorLockGetRfid : public ModelCommand +class ReadGroupKeyManagementGroupKeys : public ModelCommand { public: - DoorLockGetRfid() : ModelCommand("get-rfid") + ReadGroupKeyManagementGroupKeys() : ModelCommand("read") { - AddArgument("userId", 0, UINT16_MAX, &mUserId); + AddArgument("attr-name", "group-keys"); ModelCommand::AddArguments(); } - ~DoorLockGetRfid() + + ~ReadGroupKeyManagementGroupKeys() { delete onSuccessCallback; delete onFailureCallback; @@ -5889,33 +7837,34 @@ class DoorLockGetRfid : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x17) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0xF004) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GroupKeyManagementCluster cluster; cluster.Associate(device, endpointId); - return cluster.GetRfid(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId); + return cluster.ReadAttributeGroupKeys(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterGetRfidResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnGroupKeyManagementGroupKeysListAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mUserId; }; /* - * Command GetUserType + * Attribute ClusterRevision */ -class DoorLockGetUserType : public ModelCommand +class ReadGroupKeyManagementClusterRevision : public ModelCommand { public: - DoorLockGetUserType() : ModelCommand("get-user-type") + ReadGroupKeyManagementClusterRevision() : ModelCommand("read") { - AddArgument("userId", 0, UINT16_MAX, &mUserId); + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~DoorLockGetUserType() + + ~ReadGroupKeyManagementClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -5923,34 +7872,49 @@ class DoorLockGetUserType : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x15) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0xF004) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GroupKeyManagementCluster cluster; cluster.Associate(device, endpointId); - return cluster.GetUserType(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterGetUserTypeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mUserId; }; +/*----------------------------------------------------------------------------*\ +| Cluster Groups | 0x0004 | +|------------------------------------------------------------------------------| +| Commands: | | +| * AddGroup | 0x00 | +| * AddGroupIfIdentifying | 0x05 | +| * GetGroupMembership | 0x02 | +| * RemoveAllGroups | 0x04 | +| * RemoveGroup | 0x03 | +| * ViewGroup | 0x01 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * NameSupport | 0x0000 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + /* - * Command GetWeekdaySchedule + * Command AddGroup */ -class DoorLockGetWeekdaySchedule : public ModelCommand +class GroupsAddGroup : public ModelCommand { public: - DoorLockGetWeekdaySchedule() : ModelCommand("get-weekday-schedule") + GroupsAddGroup() : ModelCommand("add-group") { - AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); - AddArgument("userId", 0, UINT16_MAX, &mUserId); + AddArgument("groupId", 0, UINT16_MAX, &mGroupId); + AddArgument("groupName", &mGroupName); ModelCommand::AddArguments(); } - ~DoorLockGetWeekdaySchedule() + ~GroupsAddGroup() { delete onSuccessCallback; delete onFailureCallback; @@ -5958,36 +7922,36 @@ class DoorLockGetWeekdaySchedule : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x0C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GroupsCluster cluster; cluster.Associate(device, endpointId); - return cluster.GetWeekdaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId); + return cluster.AddGroup(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, + chip::ByteSpan(chip::Uint8::from_char(mGroupName), strlen(mGroupName))); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterGetWeekdayScheduleResponse, - this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnGroupsClusterAddGroupResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mScheduleId; - uint16_t mUserId; + uint16_t mGroupId; + char * mGroupName; }; /* - * Command GetYeardaySchedule + * Command AddGroupIfIdentifying */ -class DoorLockGetYeardaySchedule : public ModelCommand +class GroupsAddGroupIfIdentifying : public ModelCommand { public: - DoorLockGetYeardaySchedule() : ModelCommand("get-yearday-schedule") + GroupsAddGroupIfIdentifying() : ModelCommand("add-group-if-identifying") { - AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); - AddArgument("userId", 0, UINT16_MAX, &mUserId); + AddArgument("groupId", 0, UINT16_MAX, &mGroupId); + AddArgument("groupName", &mGroupName); ModelCommand::AddArguments(); } - ~DoorLockGetYeardaySchedule() + ~GroupsAddGroupIfIdentifying() { delete onSuccessCallback; delete onFailureCallback; @@ -5995,35 +7959,36 @@ class DoorLockGetYeardaySchedule : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x0F) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x05) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GroupsCluster cluster; cluster.Associate(device, endpointId); - return cluster.GetYeardaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId); + return cluster.AddGroupIfIdentifying(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, + chip::ByteSpan(chip::Uint8::from_char(mGroupName), strlen(mGroupName))); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterGetYeardayScheduleResponse, - this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mScheduleId; - uint16_t mUserId; + uint16_t mGroupId; + char * mGroupName; }; /* - * Command LockDoor + * Command GetGroupMembership */ -class DoorLockLockDoor : public ModelCommand +class GroupsGetGroupMembership : public ModelCommand { public: - DoorLockLockDoor() : ModelCommand("lock-door") + GroupsGetGroupMembership() : ModelCommand("get-group-membership") { - AddArgument("pin", &mPin); + AddArgument("groupCount", 0, UINT8_MAX, &mGroupCount); + AddArgument("groupList", 0, UINT16_MAX, &mGroupList); ModelCommand::AddArguments(); } - ~DoorLockLockDoor() + ~GroupsGetGroupMembership() { delete onSuccessCallback; delete onFailureCallback; @@ -6031,37 +7996,31 @@ class DoorLockLockDoor : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x02) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GroupsCluster cluster; cluster.Associate(device, endpointId); - return cluster.LockDoor(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), - chip::ByteSpan(chip::Uint8::from_char(mPin), strlen(mPin))); + return cluster.GetGroupMembership(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupCount, mGroupList); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterLockDoorResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnGroupsClusterGetGroupMembershipResponse, + this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - char * mPin; + uint8_t mGroupCount; + uint16_t mGroupList; }; /* - * Command SetHolidaySchedule + * Command RemoveAllGroups */ -class DoorLockSetHolidaySchedule : public ModelCommand +class GroupsRemoveAllGroups : public ModelCommand { public: - DoorLockSetHolidaySchedule() : ModelCommand("set-holiday-schedule") - { - AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); - AddArgument("localStartTime", 0, UINT32_MAX, &mLocalStartTime); - AddArgument("localEndTime", 0, UINT32_MAX, &mLocalEndTime); - AddArgument("operatingModeDuringHoliday", 0, UINT8_MAX, &mOperatingModeDuringHoliday); - ModelCommand::AddArguments(); - } - ~DoorLockSetHolidaySchedule() + GroupsRemoveAllGroups() : ModelCommand("remove-all-groups") { ModelCommand::AddArguments(); } + ~GroupsRemoveAllGroups() { delete onSuccessCallback; delete onFailureCallback; @@ -6069,41 +8028,32 @@ class DoorLockSetHolidaySchedule : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x11) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x04) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GroupsCluster cluster; cluster.Associate(device, endpointId); - return cluster.SetHolidaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mLocalStartTime, - mLocalEndTime, mOperatingModeDuringHoliday); + return cluster.RemoveAllGroups(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterSetHolidayScheduleResponse, - this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mScheduleId; - uint32_t mLocalStartTime; - uint32_t mLocalEndTime; - uint8_t mOperatingModeDuringHoliday; }; /* - * Command SetPin + * Command RemoveGroup */ -class DoorLockSetPin : public ModelCommand +class GroupsRemoveGroup : public ModelCommand { public: - DoorLockSetPin() : ModelCommand("set-pin") + GroupsRemoveGroup() : ModelCommand("remove-group") { - AddArgument("userId", 0, UINT16_MAX, &mUserId); - AddArgument("userStatus", 0, UINT8_MAX, &mUserStatus); - AddArgument("userType", 0, UINT8_MAX, &mUserType); - AddArgument("pin", &mPin); + AddArgument("groupId", 0, UINT16_MAX, &mGroupId); ModelCommand::AddArguments(); } - ~DoorLockSetPin() + ~GroupsRemoveGroup() { delete onSuccessCallback; delete onFailureCallback; @@ -6111,40 +8061,33 @@ class DoorLockSetPin : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x05) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x03) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GroupsCluster cluster; cluster.Associate(device, endpointId); - return cluster.SetPin(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId, mUserStatus, mUserType, - chip::ByteSpan(chip::Uint8::from_char(mPin), strlen(mPin))); + return cluster.RemoveGroup(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterSetPinResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnGroupsClusterRemoveGroupResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mUserId; - uint8_t mUserStatus; - uint8_t mUserType; - char * mPin; + uint16_t mGroupId; }; /* - * Command SetRfid + * Command ViewGroup */ -class DoorLockSetRfid : public ModelCommand +class GroupsViewGroup : public ModelCommand { public: - DoorLockSetRfid() : ModelCommand("set-rfid") + GroupsViewGroup() : ModelCommand("view-group") { - AddArgument("userId", 0, UINT16_MAX, &mUserId); - AddArgument("userStatus", 0, UINT8_MAX, &mUserStatus); - AddArgument("userType", 0, UINT8_MAX, &mUserType); - AddArgument("id", &mId); + AddArgument("groupId", 0, UINT16_MAX, &mGroupId); ModelCommand::AddArguments(); } - ~DoorLockSetRfid() + ~GroupsViewGroup() { delete onSuccessCallback; delete onFailureCallback; @@ -6152,38 +8095,30 @@ class DoorLockSetRfid : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x16) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GroupsCluster cluster; cluster.Associate(device, endpointId); - return cluster.SetRfid(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId, mUserStatus, mUserType, - chip::ByteSpan(chip::Uint8::from_char(mId), strlen(mId))); + return cluster.ViewGroup(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterSetRfidResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnGroupsClusterViewGroupResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mUserId; - uint8_t mUserStatus; - uint8_t mUserType; - char * mId; + uint16_t mGroupId; }; /* - * Command SetUserType + * Discover Attributes */ -class DoorLockSetUserType : public ModelCommand +class DiscoverGroupsAttributes : public ModelCommand { public: - DoorLockSetUserType() : ModelCommand("set-user-type") - { - AddArgument("userId", 0, UINT16_MAX, &mUserId); - AddArgument("userType", 0, UINT8_MAX, &mUserType); - ModelCommand::AddArguments(); - } - ~DoorLockSetUserType() + DiscoverGroupsAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + + ~DiscoverGroupsAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -6191,40 +8126,33 @@ class DoorLockSetUserType : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x14) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GroupsCluster cluster; cluster.Associate(device, endpointId); - return cluster.SetUserType(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mUserId, mUserType); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterSetUserTypeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mUserId; - uint8_t mUserType; }; /* - * Command SetWeekdaySchedule + * Attribute NameSupport */ -class DoorLockSetWeekdaySchedule : public ModelCommand +class ReadGroupsNameSupport : public ModelCommand { public: - DoorLockSetWeekdaySchedule() : ModelCommand("set-weekday-schedule") + ReadGroupsNameSupport() : ModelCommand("read") { - AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); - AddArgument("userId", 0, UINT16_MAX, &mUserId); - AddArgument("daysMask", 0, UINT8_MAX, &mDaysMask); - AddArgument("startHour", 0, UINT8_MAX, &mStartHour); - AddArgument("startMinute", 0, UINT8_MAX, &mStartMinute); - AddArgument("endHour", 0, UINT8_MAX, &mEndHour); - AddArgument("endMinute", 0, UINT8_MAX, &mEndMinute); + AddArgument("attr-name", "name-support"); ModelCommand::AddArguments(); } - ~DoorLockSetWeekdaySchedule() + + ~ReadGroupsNameSupport() { delete onSuccessCallback; delete onFailureCallback; @@ -6232,44 +8160,33 @@ class DoorLockSetWeekdaySchedule : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x0B) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GroupsCluster cluster; cluster.Associate(device, endpointId); - return cluster.SetWeekdaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId, mDaysMask, - mStartHour, mStartMinute, mEndHour, mEndMinute); + return cluster.ReadAttributeNameSupport(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterSetWeekdayScheduleResponse, - this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mScheduleId; - uint16_t mUserId; - uint8_t mDaysMask; - uint8_t mStartHour; - uint8_t mStartMinute; - uint8_t mEndHour; - uint8_t mEndMinute; }; /* - * Command SetYeardaySchedule + * Attribute ClusterRevision */ -class DoorLockSetYeardaySchedule : public ModelCommand +class ReadGroupsClusterRevision : public ModelCommand { public: - DoorLockSetYeardaySchedule() : ModelCommand("set-yearday-schedule") + ReadGroupsClusterRevision() : ModelCommand("read") { - AddArgument("scheduleId", 0, UINT8_MAX, &mScheduleId); - AddArgument("userId", 0, UINT16_MAX, &mUserId); - AddArgument("localStartTime", 0, UINT32_MAX, &mLocalStartTime); - AddArgument("localEndTime", 0, UINT32_MAX, &mLocalEndTime); + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~DoorLockSetYeardaySchedule() + + ~ReadGroupsClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -6277,38 +8194,44 @@ class DoorLockSetYeardaySchedule : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x0E) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::GroupsCluster cluster; cluster.Associate(device, endpointId); - return cluster.SetYeardaySchedule(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mScheduleId, mUserId, - mLocalStartTime, mLocalEndTime); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterSetYeardayScheduleResponse, - this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mScheduleId; - uint16_t mUserId; - uint32_t mLocalStartTime; - uint32_t mLocalEndTime; }; +/*----------------------------------------------------------------------------*\ +| Cluster Identify | 0x0003 | +|------------------------------------------------------------------------------| +| Commands: | | +| * Identify | 0x00 | +| * IdentifyQuery | 0x01 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * IdentifyTime | 0x0000 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + /* - * Command UnlockDoor + * Command Identify */ -class DoorLockUnlockDoor : public ModelCommand +class IdentifyIdentify : public ModelCommand { public: - DoorLockUnlockDoor() : ModelCommand("unlock-door") + IdentifyIdentify() : ModelCommand("identify") { - AddArgument("pin", &mPin); + AddArgument("identifyTime", 0, UINT16_MAX, &mIdentifyTime); ModelCommand::AddArguments(); } - ~DoorLockUnlockDoor() + ~IdentifyIdentify() { delete onSuccessCallback; delete onFailureCallback; @@ -6316,35 +8239,29 @@ class DoorLockUnlockDoor : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0003) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::IdentifyCluster cluster; cluster.Associate(device, endpointId); - return cluster.UnlockDoor(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), - chip::ByteSpan(chip::Uint8::from_char(mPin), strlen(mPin))); + return cluster.Identify(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mIdentifyTime); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterUnlockDoorResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - char * mPin; + uint16_t mIdentifyTime; }; /* - * Command UnlockWithTimeout + * Command IdentifyQuery */ -class DoorLockUnlockWithTimeout : public ModelCommand +class IdentifyIdentifyQuery : public ModelCommand { public: - DoorLockUnlockWithTimeout() : ModelCommand("unlock-with-timeout") - { - AddArgument("timeoutInSeconds", 0, UINT16_MAX, &mTimeoutInSeconds); - AddArgument("pin", &mPin); - ModelCommand::AddArguments(); - } - ~DoorLockUnlockWithTimeout() + IdentifyIdentifyQuery() : ModelCommand("identify-query") { ModelCommand::AddArguments(); } + ~IdentifyIdentifyQuery() { delete onSuccessCallback; delete onFailureCallback; @@ -6352,33 +8269,29 @@ class DoorLockUnlockWithTimeout : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x03) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0003) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::IdentifyCluster cluster; cluster.Associate(device, endpointId); - return cluster.UnlockWithTimeout(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mTimeoutInSeconds, - chip::ByteSpan(chip::Uint8::from_char(mPin), strlen(mPin))); + return cluster.IdentifyQuery(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDoorLockClusterUnlockWithTimeoutResponse, - this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnIdentifyClusterIdentifyQueryResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mTimeoutInSeconds; - char * mPin; }; /* * Discover Attributes */ -class DiscoverDoorLockAttributes : public ModelCommand +class DiscoverIdentifyAttributes : public ModelCommand { public: - DiscoverDoorLockAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + DiscoverIdentifyAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - ~DiscoverDoorLockAttributes() + ~DiscoverIdentifyAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -6388,7 +8301,7 @@ class DiscoverDoorLockAttributes : public ModelCommand { ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::IdentifyCluster cluster; cluster.Associate(device, endpointId); return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } @@ -6401,18 +8314,18 @@ class DiscoverDoorLockAttributes : public ModelCommand }; /* - * Attribute LockState + * Attribute IdentifyTime */ -class ReadDoorLockLockState : public ModelCommand +class ReadIdentifyIdentifyTime : public ModelCommand { public: - ReadDoorLockLockState() : ModelCommand("read") + ReadIdentifyIdentifyTime() : ModelCommand("read") { - AddArgument("attr-name", "lock-state"); + AddArgument("attr-name", "identify-time"); ModelCommand::AddArguments(); } - ~ReadDoorLockLockState() + ~ReadIdentifyIdentifyTime() { delete onSuccessCallback; delete onFailureCallback; @@ -6420,53 +8333,43 @@ class ReadDoorLockLockState : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0003) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::IdentifyCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeLockState(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeIdentifyTime(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class ReportDoorLockLockState : public ModelCommand +class WriteIdentifyIdentifyTime : public ModelCommand { public: - ReportDoorLockLockState() : ModelCommand("report") + WriteIdentifyIdentifyTime() : ModelCommand("write") { - AddArgument("attr-name", "lock-state"); - AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); - AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); + AddArgument("attr-name", "identify-time"); + AddArgument("attr-value", 0, UINT16_MAX, &mValue); ModelCommand::AddArguments(); } - ~ReportDoorLockLockState() + ~WriteIdentifyIdentifyTime() { delete onSuccessCallback; delete onFailureCallback; - delete onReportCallback; } CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x06) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0003) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::IdentifyCluster cluster; cluster.Associate(device, endpointId); - - CHIP_ERROR err = cluster.ReportAttributeLockState(onReportCallback->Cancel()); - if (err != CHIP_NO_ERROR) - { - return err; - } - - return cluster.ConfigureAttributeLockState(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, - mMaxInterval); + return cluster.WriteAttributeIdentifyTime(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); } private: @@ -6474,25 +8377,22 @@ class ReportDoorLockLockState : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - chip::Callback::Callback * onReportCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); - uint16_t mMinInterval; - uint16_t mMaxInterval; + uint16_t mValue; }; /* - * Attribute LockType + * Attribute ClusterRevision */ -class ReadDoorLockLockType : public ModelCommand +class ReadIdentifyClusterRevision : public ModelCommand { public: - ReadDoorLockLockType() : ModelCommand("read") + ReadIdentifyClusterRevision() : ModelCommand("read") { - AddArgument("attr-name", "lock-type"); + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ReadDoorLockLockType() + ~ReadIdentifyClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -6500,33 +8400,73 @@ class ReadDoorLockLockType : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0003) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::IdentifyCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeLockType(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; +/*----------------------------------------------------------------------------*\ +| Cluster KeypadInput | 0x0509 | +|------------------------------------------------------------------------------| +| Commands: | | +| * SendKey | 0x00 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + /* - * Attribute ActuatorEnabled + * Command SendKey */ -class ReadDoorLockActuatorEnabled : public ModelCommand +class KeypadInputSendKey : public ModelCommand { public: - ReadDoorLockActuatorEnabled() : ModelCommand("read") + KeypadInputSendKey() : ModelCommand("send-key") { - AddArgument("attr-name", "actuator-enabled"); + AddArgument("keyCode", 0, UINT8_MAX, &mKeyCode); ModelCommand::AddArguments(); } + ~KeypadInputSendKey() + { + delete onSuccessCallback; + delete onFailureCallback; + } - ~ReadDoorLockActuatorEnabled() + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0509) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::KeypadInputCluster cluster; + cluster.Associate(device, endpointId); + return cluster.SendKey(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mKeyCode); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnKeypadInputClusterSendKeyResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mKeyCode; +}; + +/* + * Discover Attributes + */ +class DiscoverKeypadInputAttributes : public ModelCommand +{ +public: + DiscoverKeypadInputAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + + ~DiscoverKeypadInputAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -6534,16 +8474,16 @@ class ReadDoorLockActuatorEnabled : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::KeypadInputCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeActuatorEnabled(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnBooleanAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; @@ -6551,16 +8491,16 @@ class ReadDoorLockActuatorEnabled : public ModelCommand /* * Attribute ClusterRevision */ -class ReadDoorLockClusterRevision : public ModelCommand +class ReadKeypadInputClusterRevision : public ModelCommand { public: - ReadDoorLockClusterRevision() : ModelCommand("read") + ReadKeypadInputClusterRevision() : ModelCommand("read") { AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ReadDoorLockClusterRevision() + ~ReadKeypadInputClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -6568,9 +8508,9 @@ class ReadDoorLockClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0101) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0509) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::DoorLockCluster cluster; + chip::Controller::KeypadInputCluster cluster; cluster.Associate(device, endpointId); return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } @@ -6583,33 +8523,38 @@ class ReadDoorLockClusterRevision : public ModelCommand }; /*----------------------------------------------------------------------------*\ -| Cluster GeneralCommissioning | 0x0030 | +| Cluster LevelControl | 0x0008 | |------------------------------------------------------------------------------| | Commands: | | -| * ArmFailSafe | 0x00 | -| * CommissioningComplete | 0x04 | -| * SetRegulatoryConfig | 0x02 | +| * Move | 0x01 | +| * MoveToLevel | 0x00 | +| * MoveToLevelWithOnOff | 0x04 | +| * MoveWithOnOff | 0x05 | +| * Step | 0x02 | +| * StepWithOnOff | 0x06 | +| * Stop | 0x03 | +| * StopWithOnOff | 0x07 | |------------------------------------------------------------------------------| | Attributes: | | -| * FabricId | 0x0000 | -| * Breadcrumb | 0x0001 | +| * CurrentLevel | 0x0000 | | * ClusterRevision | 0xFFFD | \*----------------------------------------------------------------------------*/ /* - * Command ArmFailSafe + * Command Move */ -class GeneralCommissioningArmFailSafe : public ModelCommand +class LevelControlMove : public ModelCommand { public: - GeneralCommissioningArmFailSafe() : ModelCommand("arm-fail-safe") + LevelControlMove() : ModelCommand("move") { - AddArgument("expiryLengthSeconds", 0, UINT16_MAX, &mExpiryLengthSeconds); - AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); - AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); + AddArgument("moveMode", 0, UINT8_MAX, &mMoveMode); + AddArgument("rate", 0, UINT8_MAX, &mRate); + AddArgument("optionMask", 0, UINT8_MAX, &mOptionMask); + AddArgument("optionOverride", 0, UINT8_MAX, &mOptionOverride); ModelCommand::AddArguments(); } - ~GeneralCommissioningArmFailSafe() + ~LevelControlMove() { delete onSuccessCallback; delete onFailureCallback; @@ -6617,33 +8562,40 @@ class GeneralCommissioningArmFailSafe : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0030) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::GeneralCommissioningCluster cluster; + chip::Controller::LevelControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ArmFailSafe(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mExpiryLengthSeconds, mBreadcrumb, - mTimeoutMs); + return cluster.Move(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMoveMode, mRate, mOptionMask, + mOptionOverride); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnGeneralCommissioningClusterArmFailSafeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mExpiryLengthSeconds; - uint64_t mBreadcrumb; - uint32_t mTimeoutMs; + uint8_t mMoveMode; + uint8_t mRate; + uint8_t mOptionMask; + uint8_t mOptionOverride; }; /* - * Command CommissioningComplete + * Command MoveToLevel */ -class GeneralCommissioningCommissioningComplete : public ModelCommand +class LevelControlMoveToLevel : public ModelCommand { public: - GeneralCommissioningCommissioningComplete() : ModelCommand("commissioning-complete") { ModelCommand::AddArguments(); } - ~GeneralCommissioningCommissioningComplete() + LevelControlMoveToLevel() : ModelCommand("move-to-level") + { + AddArgument("level", 0, UINT8_MAX, &mLevel); + AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); + AddArgument("optionMask", 0, UINT8_MAX, &mOptionMask); + AddArgument("optionOverride", 0, UINT8_MAX, &mOptionOverride); + ModelCommand::AddArguments(); + } + ~LevelControlMoveToLevel() { delete onSuccessCallback; delete onFailureCallback; @@ -6651,36 +8603,38 @@ class GeneralCommissioningCommissioningComplete : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0030) command (0x04) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::GeneralCommissioningCluster cluster; + chip::Controller::LevelControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.CommissioningComplete(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.MoveToLevel(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mLevel, mTransitionTime, mOptionMask, + mOptionOverride); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnGeneralCommissioningClusterCommissioningCompleteResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mLevel; + uint16_t mTransitionTime; + uint8_t mOptionMask; + uint8_t mOptionOverride; }; /* - * Command SetRegulatoryConfig + * Command MoveToLevelWithOnOff */ -class GeneralCommissioningSetRegulatoryConfig : public ModelCommand +class LevelControlMoveToLevelWithOnOff : public ModelCommand { public: - GeneralCommissioningSetRegulatoryConfig() : ModelCommand("set-regulatory-config") + LevelControlMoveToLevelWithOnOff() : ModelCommand("move-to-level-with-on-off") { - AddArgument("location", 0, UINT8_MAX, &mLocation); - AddArgument("countryCode", &mCountryCode); - AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); - AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); + AddArgument("level", 0, UINT8_MAX, &mLevel); + AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); ModelCommand::AddArguments(); } - ~GeneralCommissioningSetRegulatoryConfig() + ~LevelControlMoveToLevelWithOnOff() { delete onSuccessCallback; delete onFailureCallback; @@ -6688,36 +8642,35 @@ class GeneralCommissioningSetRegulatoryConfig : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0030) command (0x02) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x04) on endpoint %" PRIu16, endpointId); - chip::Controller::GeneralCommissioningCluster cluster; + chip::Controller::LevelControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.SetRegulatoryConfig(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mLocation, - chip::ByteSpan(chip::Uint8::from_char(mCountryCode), strlen(mCountryCode)), mBreadcrumb, - mTimeoutMs); + return cluster.MoveToLevelWithOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mLevel, mTransitionTime); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnGeneralCommissioningClusterSetRegulatoryConfigResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mLocation; - char * mCountryCode; - uint64_t mBreadcrumb; - uint32_t mTimeoutMs; + uint8_t mLevel; + uint16_t mTransitionTime; }; /* - * Discover Attributes + * Command MoveWithOnOff */ -class DiscoverGeneralCommissioningAttributes : public ModelCommand +class LevelControlMoveWithOnOff : public ModelCommand { public: - DiscoverGeneralCommissioningAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - - ~DiscoverGeneralCommissioningAttributes() + LevelControlMoveWithOnOff() : ModelCommand("move-with-on-off") + { + AddArgument("moveMode", 0, UINT8_MAX, &mMoveMode); + AddArgument("rate", 0, UINT8_MAX, &mRate); + ModelCommand::AddArguments(); + } + ~LevelControlMoveWithOnOff() { delete onSuccessCallback; delete onFailureCallback; @@ -6725,11 +8678,11 @@ class DiscoverGeneralCommissioningAttributes : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x05) on endpoint %" PRIu16, endpointId); - chip::Controller::GeneralCommissioningCluster cluster; + chip::Controller::LevelControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.MoveWithOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMoveMode, mRate); } private: @@ -6737,21 +8690,26 @@ class DiscoverGeneralCommissioningAttributes : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mMoveMode; + uint8_t mRate; }; /* - * Attribute FabricId + * Command Step */ -class ReadGeneralCommissioningFabricId : public ModelCommand +class LevelControlStep : public ModelCommand { public: - ReadGeneralCommissioningFabricId() : ModelCommand("read") + LevelControlStep() : ModelCommand("step") { - AddArgument("attr-name", "fabric-id"); + AddArgument("stepMode", 0, UINT8_MAX, &mStepMode); + AddArgument("stepSize", 0, UINT8_MAX, &mStepSize); + AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); + AddArgument("optionMask", 0, UINT8_MAX, &mOptionMask); + AddArgument("optionOverride", 0, UINT8_MAX, &mOptionOverride); ModelCommand::AddArguments(); } - - ~ReadGeneralCommissioningFabricId() + ~LevelControlStep() { delete onSuccessCallback; delete onFailureCallback; @@ -6759,33 +8717,40 @@ class ReadGeneralCommissioningFabricId : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0030) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x02) on endpoint %" PRIu16, endpointId); - chip::Controller::GeneralCommissioningCluster cluster; + chip::Controller::LevelControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeFabricId(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.Step(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepMode, mStepSize, mTransitionTime, + mOptionMask, mOptionOverride); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnStringAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mStepMode; + uint8_t mStepSize; + uint16_t mTransitionTime; + uint8_t mOptionMask; + uint8_t mOptionOverride; }; /* - * Attribute Breadcrumb + * Command StepWithOnOff */ -class ReadGeneralCommissioningBreadcrumb : public ModelCommand +class LevelControlStepWithOnOff : public ModelCommand { public: - ReadGeneralCommissioningBreadcrumb() : ModelCommand("read") + LevelControlStepWithOnOff() : ModelCommand("step-with-on-off") { - AddArgument("attr-name", "breadcrumb"); + AddArgument("stepMode", 0, UINT8_MAX, &mStepMode); + AddArgument("stepSize", 0, UINT8_MAX, &mStepSize); + AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); ModelCommand::AddArguments(); } - - ~ReadGeneralCommissioningBreadcrumb() + ~LevelControlStepWithOnOff() { delete onSuccessCallback; delete onFailureCallback; @@ -6793,31 +8758,37 @@ class ReadGeneralCommissioningBreadcrumb : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0030) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x06) on endpoint %" PRIu16, endpointId); - chip::Controller::GeneralCommissioningCluster cluster; + chip::Controller::LevelControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeBreadcrumb(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.StepWithOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepMode, mStepSize, + mTransitionTime); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt64uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mStepMode; + uint8_t mStepSize; + uint16_t mTransitionTime; }; -class WriteGeneralCommissioningBreadcrumb : public ModelCommand +/* + * Command Stop + */ +class LevelControlStop : public ModelCommand { public: - WriteGeneralCommissioningBreadcrumb() : ModelCommand("write") + LevelControlStop() : ModelCommand("stop") { - AddArgument("attr-name", "breadcrumb"); - AddArgument("attr-value", 0, UINT64_MAX, &mValue); + AddArgument("optionMask", 0, UINT8_MAX, &mOptionMask); + AddArgument("optionOverride", 0, UINT8_MAX, &mOptionOverride); ModelCommand::AddArguments(); } - - ~WriteGeneralCommissioningBreadcrumb() + ~LevelControlStop() { delete onSuccessCallback; delete onFailureCallback; @@ -6825,11 +8796,11 @@ class WriteGeneralCommissioningBreadcrumb : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0030) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x03) on endpoint %" PRIu16, endpointId); - chip::Controller::GeneralCommissioningCluster cluster; + chip::Controller::LevelControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeBreadcrumb(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.Stop(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mOptionMask, mOptionOverride); } private: @@ -6837,22 +8808,18 @@ class WriteGeneralCommissioningBreadcrumb : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint64_t mValue; + uint8_t mOptionMask; + uint8_t mOptionOverride; }; /* - * Attribute ClusterRevision + * Command StopWithOnOff */ -class ReadGeneralCommissioningClusterRevision : public ModelCommand +class LevelControlStopWithOnOff : public ModelCommand { public: - ReadGeneralCommissioningClusterRevision() : ModelCommand("read") - { - AddArgument("attr-name", "cluster-revision"); - ModelCommand::AddArguments(); - } - - ~ReadGeneralCommissioningClusterRevision() + LevelControlStopWithOnOff() : ModelCommand("stop-with-on-off") { ModelCommand::AddArguments(); } + ~LevelControlStopWithOnOff() { delete onSuccessCallback; delete onFailureCallback; @@ -6860,40 +8827,29 @@ class ReadGeneralCommissioningClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0030) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x07) on endpoint %" PRIu16, endpointId); - chip::Controller::GeneralCommissioningCluster cluster; + chip::Controller::LevelControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.StopWithOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -/*----------------------------------------------------------------------------*\ -| Cluster GroupKeyManagement | 0xF004 | -|------------------------------------------------------------------------------| -| Commands: | | -|------------------------------------------------------------------------------| -| Attributes: | | -| * Groups | 0x0000 | -| * GroupKeys | 0x0001 | -| * ClusterRevision | 0xFFFD | -\*----------------------------------------------------------------------------*/ - /* * Discover Attributes */ -class DiscoverGroupKeyManagementAttributes : public ModelCommand +class DiscoverLevelControlAttributes : public ModelCommand { public: - DiscoverGroupKeyManagementAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + DiscoverLevelControlAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - ~DiscoverGroupKeyManagementAttributes() + ~DiscoverLevelControlAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -6903,7 +8859,7 @@ class DiscoverGroupKeyManagementAttributes : public ModelCommand { ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::GroupKeyManagementCluster cluster; + chip::Controller::LevelControlCluster cluster; cluster.Associate(device, endpointId); return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } @@ -6916,18 +8872,18 @@ class DiscoverGroupKeyManagementAttributes : public ModelCommand }; /* - * Attribute Groups + * Attribute CurrentLevel */ -class ReadGroupKeyManagementGroups : public ModelCommand +class ReadLevelControlCurrentLevel : public ModelCommand { public: - ReadGroupKeyManagementGroups() : ModelCommand("read") + ReadLevelControlCurrentLevel() : ModelCommand("read") { - AddArgument("attr-name", "groups"); + AddArgument("attr-name", "current-level"); ModelCommand::AddArguments(); } - ~ReadGroupKeyManagementGroups() + ~ReadLevelControlCurrentLevel() { delete onSuccessCallback; delete onFailureCallback; @@ -6935,69 +8891,81 @@ class ReadGroupKeyManagementGroups : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0xF004) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::GroupKeyManagementCluster cluster; + chip::Controller::LevelControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeGroups(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeCurrentLevel(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnGroupKeyManagementGroupsListAttributeResponse, - this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -/* - * Attribute GroupKeys - */ -class ReadGroupKeyManagementGroupKeys : public ModelCommand +class ReportLevelControlCurrentLevel : public ModelCommand { public: - ReadGroupKeyManagementGroupKeys() : ModelCommand("read") + ReportLevelControlCurrentLevel() : ModelCommand("report") { - AddArgument("attr-name", "group-keys"); + AddArgument("attr-name", "current-level"); + AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); + AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); + AddArgument("change", 0, UINT8_MAX, &mChange); ModelCommand::AddArguments(); } - ~ReadGroupKeyManagementGroupKeys() + ~ReportLevelControlCurrentLevel() { delete onSuccessCallback; delete onFailureCallback; + delete onReportCallback; } CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0xF004) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x06) on endpoint %" PRIu16, endpointId); - chip::Controller::GroupKeyManagementCluster cluster; + chip::Controller::LevelControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeGroupKeys(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + + CHIP_ERROR err = cluster.ReportAttributeCurrentLevel(onReportCallback->Cancel()); + if (err != CHIP_NO_ERROR) + { + return err; + } + + return cluster.ConfigureAttributeCurrentLevel(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, + mMaxInterval, mChange); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnGroupKeyManagementGroupKeysListAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + chip::Callback::Callback * onReportCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); + uint16_t mMinInterval; + uint16_t mMaxInterval; + uint8_t mChange; }; /* * Attribute ClusterRevision */ -class ReadGroupKeyManagementClusterRevision : public ModelCommand +class ReadLevelControlClusterRevision : public ModelCommand { public: - ReadGroupKeyManagementClusterRevision() : ModelCommand("read") + ReadLevelControlClusterRevision() : ModelCommand("read") { AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ReadGroupKeyManagementClusterRevision() + ~ReadLevelControlClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -7005,9 +8973,9 @@ class ReadGroupKeyManagementClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0xF004) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::GroupKeyManagementCluster cluster; + chip::Controller::LevelControlCluster cluster; cluster.Associate(device, endpointId); return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } @@ -7020,34 +8988,53 @@ class ReadGroupKeyManagementClusterRevision : public ModelCommand }; /*----------------------------------------------------------------------------*\ -| Cluster Groups | 0x0004 | +| Cluster LowPower | 0x0508 | |------------------------------------------------------------------------------| | Commands: | | -| * AddGroup | 0x00 | -| * AddGroupIfIdentifying | 0x05 | -| * GetGroupMembership | 0x02 | -| * RemoveAllGroups | 0x04 | -| * RemoveGroup | 0x03 | -| * ViewGroup | 0x01 | +| * Sleep | 0x00 | |------------------------------------------------------------------------------| | Attributes: | | -| * NameSupport | 0x0000 | | * ClusterRevision | 0xFFFD | \*----------------------------------------------------------------------------*/ /* - * Command AddGroup + * Command Sleep */ -class GroupsAddGroup : public ModelCommand +class LowPowerSleep : public ModelCommand { public: - GroupsAddGroup() : ModelCommand("add-group") + LowPowerSleep() : ModelCommand("sleep") { ModelCommand::AddArguments(); } + ~LowPowerSleep() { - AddArgument("groupId", 0, UINT16_MAX, &mGroupId); - AddArgument("groupName", &mGroupName); - ModelCommand::AddArguments(); + delete onSuccessCallback; + delete onFailureCallback; } - ~GroupsAddGroup() + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0508) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::LowPowerCluster cluster; + cluster.Associate(device, endpointId); + return cluster.Sleep(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Discover Attributes + */ +class DiscoverLowPowerAttributes : public ModelCommand +{ +public: + DiscoverLowPowerAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + + ~DiscoverLowPowerAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -7055,36 +9042,33 @@ class GroupsAddGroup : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::GroupsCluster cluster; + chip::Controller::LowPowerCluster cluster; cluster.Associate(device, endpointId); - return cluster.AddGroup(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, - chip::ByteSpan(chip::Uint8::from_char(mGroupName), strlen(mGroupName))); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnGroupsClusterAddGroupResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mGroupId; - char * mGroupName; }; /* - * Command AddGroupIfIdentifying + * Attribute ClusterRevision */ -class GroupsAddGroupIfIdentifying : public ModelCommand +class ReadLowPowerClusterRevision : public ModelCommand { public: - GroupsAddGroupIfIdentifying() : ModelCommand("add-group-if-identifying") + ReadLowPowerClusterRevision() : ModelCommand("read") { - AddArgument("groupId", 0, UINT16_MAX, &mGroupId); - AddArgument("groupName", &mGroupName); + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~GroupsAddGroupIfIdentifying() + + ~ReadLowPowerClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -7092,36 +9076,42 @@ class GroupsAddGroupIfIdentifying : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x05) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0508) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::GroupsCluster cluster; + chip::Controller::LowPowerCluster cluster; cluster.Associate(device, endpointId); - return cluster.AddGroupIfIdentifying(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, - chip::ByteSpan(chip::Uint8::from_char(mGroupName), strlen(mGroupName))); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mGroupId; - char * mGroupName; }; +/*----------------------------------------------------------------------------*\ +| Cluster MediaInput | 0x0507 | +|------------------------------------------------------------------------------| +| Commands: | | +| * HideInputStatus | 0x02 | +| * RenameInput | 0x03 | +| * SelectInput | 0x00 | +| * ShowInputStatus | 0x01 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * MediaInputList | 0x0000 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + /* - * Command GetGroupMembership + * Command HideInputStatus */ -class GroupsGetGroupMembership : public ModelCommand +class MediaInputHideInputStatus : public ModelCommand { public: - GroupsGetGroupMembership() : ModelCommand("get-group-membership") - { - AddArgument("groupCount", 0, UINT8_MAX, &mGroupCount); - AddArgument("groupList", 0, UINT16_MAX, &mGroupList); - ModelCommand::AddArguments(); - } - ~GroupsGetGroupMembership() + MediaInputHideInputStatus() : ModelCommand("hide-input-status") { ModelCommand::AddArguments(); } + ~MediaInputHideInputStatus() { delete onSuccessCallback; delete onFailureCallback; @@ -7129,31 +9119,33 @@ class GroupsGetGroupMembership : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x02) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0507) command (0x02) on endpoint %" PRIu16, endpointId); - chip::Controller::GroupsCluster cluster; + chip::Controller::MediaInputCluster cluster; cluster.Associate(device, endpointId); - return cluster.GetGroupMembership(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupCount, mGroupList); + return cluster.HideInputStatus(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnGroupsClusterGetGroupMembershipResponse, - this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mGroupCount; - uint16_t mGroupList; }; /* - * Command RemoveAllGroups + * Command RenameInput */ -class GroupsRemoveAllGroups : public ModelCommand +class MediaInputRenameInput : public ModelCommand { public: - GroupsRemoveAllGroups() : ModelCommand("remove-all-groups") { ModelCommand::AddArguments(); } - ~GroupsRemoveAllGroups() + MediaInputRenameInput() : ModelCommand("rename-input") + { + AddArgument("index", 0, UINT8_MAX, &mIndex); + AddArgument("name", &mName); + ModelCommand::AddArguments(); + } + ~MediaInputRenameInput() { delete onSuccessCallback; delete onFailureCallback; @@ -7161,11 +9153,12 @@ class GroupsRemoveAllGroups : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x04) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0507) command (0x03) on endpoint %" PRIu16, endpointId); - chip::Controller::GroupsCluster cluster; + chip::Controller::MediaInputCluster cluster; cluster.Associate(device, endpointId); - return cluster.RemoveAllGroups(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.RenameInput(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mIndex, + chip::ByteSpan(chip::Uint8::from_char(mName), strlen(mName))); } private: @@ -7173,20 +9166,22 @@ class GroupsRemoveAllGroups : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mIndex; + char * mName; }; /* - * Command RemoveGroup + * Command SelectInput */ -class GroupsRemoveGroup : public ModelCommand +class MediaInputSelectInput : public ModelCommand { public: - GroupsRemoveGroup() : ModelCommand("remove-group") + MediaInputSelectInput() : ModelCommand("select-input") { - AddArgument("groupId", 0, UINT16_MAX, &mGroupId); + AddArgument("index", 0, UINT8_MAX, &mIndex); ModelCommand::AddArguments(); } - ~GroupsRemoveGroup() + ~MediaInputSelectInput() { delete onSuccessCallback; delete onFailureCallback; @@ -7194,33 +9189,29 @@ class GroupsRemoveGroup : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x03) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0507) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::GroupsCluster cluster; + chip::Controller::MediaInputCluster cluster; cluster.Associate(device, endpointId); - return cluster.RemoveGroup(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId); + return cluster.SelectInput(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mIndex); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnGroupsClusterRemoveGroupResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mGroupId; + uint8_t mIndex; }; /* - * Command ViewGroup + * Command ShowInputStatus */ -class GroupsViewGroup : public ModelCommand +class MediaInputShowInputStatus : public ModelCommand { public: - GroupsViewGroup() : ModelCommand("view-group") - { - AddArgument("groupId", 0, UINT16_MAX, &mGroupId); - ModelCommand::AddArguments(); - } - ~GroupsViewGroup() + MediaInputShowInputStatus() : ModelCommand("show-input-status") { ModelCommand::AddArguments(); } + ~MediaInputShowInputStatus() { delete onSuccessCallback; delete onFailureCallback; @@ -7228,30 +9219,29 @@ class GroupsViewGroup : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0507) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::GroupsCluster cluster; + chip::Controller::MediaInputCluster cluster; cluster.Associate(device, endpointId); - return cluster.ViewGroup(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId); + return cluster.ShowInputStatus(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnGroupsClusterViewGroupResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mGroupId; }; /* * Discover Attributes */ -class DiscoverGroupsAttributes : public ModelCommand +class DiscoverMediaInputAttributes : public ModelCommand { public: - DiscoverGroupsAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + DiscoverMediaInputAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - ~DiscoverGroupsAttributes() + ~DiscoverMediaInputAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -7261,7 +9251,7 @@ class DiscoverGroupsAttributes : public ModelCommand { ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::GroupsCluster cluster; + chip::Controller::MediaInputCluster cluster; cluster.Associate(device, endpointId); return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } @@ -7274,18 +9264,18 @@ class DiscoverGroupsAttributes : public ModelCommand }; /* - * Attribute NameSupport + * Attribute MediaInputList */ -class ReadGroupsNameSupport : public ModelCommand +class ReadMediaInputMediaInputList : public ModelCommand { public: - ReadGroupsNameSupport() : ModelCommand("read") + ReadMediaInputMediaInputList() : ModelCommand("read") { - AddArgument("attr-name", "name-support"); + AddArgument("attr-name", "media-input-list"); ModelCommand::AddArguments(); } - ~ReadGroupsNameSupport() + ~ReadMediaInputMediaInputList() { delete onSuccessCallback; delete onFailureCallback; @@ -7293,16 +9283,16 @@ class ReadGroupsNameSupport : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0507) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::GroupsCluster cluster; + chip::Controller::MediaInputCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeNameSupport(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeMediaInputList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; @@ -7310,16 +9300,16 @@ class ReadGroupsNameSupport : public ModelCommand /* * Attribute ClusterRevision */ -class ReadGroupsClusterRevision : public ModelCommand +class ReadMediaInputClusterRevision : public ModelCommand { public: - ReadGroupsClusterRevision() : ModelCommand("read") + ReadMediaInputClusterRevision() : ModelCommand("read") { AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ReadGroupsClusterRevision() + ~ReadMediaInputClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -7327,9 +9317,9 @@ class ReadGroupsClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0004) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0507) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::GroupsCluster cluster; + chip::Controller::MediaInputCluster cluster; cluster.Associate(device, endpointId); return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } @@ -7342,29 +9332,63 @@ class ReadGroupsClusterRevision : public ModelCommand }; /*----------------------------------------------------------------------------*\ -| Cluster Identify | 0x0003 | +| Cluster MediaPlayback | 0x0506 | |------------------------------------------------------------------------------| | Commands: | | -| * Identify | 0x00 | -| * IdentifyQuery | 0x01 | +| * MediaFastForward | 0x07 | +| * MediaNext | 0x05 | +| * MediaPause | 0x01 | +| * MediaPlay | 0x00 | +| * MediaPrevious | 0x04 | +| * MediaRewind | 0x06 | +| * MediaSkipBackward | 0x09 | +| * MediaSkipForward | 0x08 | +| * MediaSkipSeek | 0x0A | +| * MediaStartOver | 0x03 | +| * MediaStop | 0x02 | |------------------------------------------------------------------------------| | Attributes: | | -| * IdentifyTime | 0x0000 | | * ClusterRevision | 0xFFFD | \*----------------------------------------------------------------------------*/ /* - * Command Identify + * Command MediaFastForward */ -class IdentifyIdentify : public ModelCommand +class MediaPlaybackMediaFastForward : public ModelCommand { public: - IdentifyIdentify() : ModelCommand("identify") + MediaPlaybackMediaFastForward() : ModelCommand("media-fast-forward") { ModelCommand::AddArguments(); } + ~MediaPlaybackMediaFastForward() { - AddArgument("identifyTime", 0, UINT16_MAX, &mIdentifyTime); - ModelCommand::AddArguments(); + delete onSuccessCallback; + delete onFailureCallback; } - ~IdentifyIdentify() + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0506) command (0x07) on endpoint %" PRIu16, endpointId); + + chip::Controller::MediaPlaybackCluster cluster; + cluster.Associate(device, endpointId); + return cluster.MediaFastForward(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnMediaPlaybackClusterMediaFastForwardResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Command MediaNext + */ +class MediaPlaybackMediaNext : public ModelCommand +{ +public: + MediaPlaybackMediaNext() : ModelCommand("media-next") { ModelCommand::AddArguments(); } + ~MediaPlaybackMediaNext() { delete onSuccessCallback; delete onFailureCallback; @@ -7372,29 +9396,28 @@ class IdentifyIdentify : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0003) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0506) command (0x05) on endpoint %" PRIu16, endpointId); - chip::Controller::IdentifyCluster cluster; + chip::Controller::MediaPlaybackCluster cluster; cluster.Associate(device, endpointId); - return cluster.Identify(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mIdentifyTime); + return cluster.MediaNext(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnMediaPlaybackClusterMediaNextResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mIdentifyTime; }; /* - * Command IdentifyQuery + * Command MediaPause */ -class IdentifyIdentifyQuery : public ModelCommand +class MediaPlaybackMediaPause : public ModelCommand { public: - IdentifyIdentifyQuery() : ModelCommand("identify-query") { ModelCommand::AddArguments(); } - ~IdentifyIdentifyQuery() + MediaPlaybackMediaPause() : ModelCommand("media-pause") { ModelCommand::AddArguments(); } + ~MediaPlaybackMediaPause() { delete onSuccessCallback; delete onFailureCallback; @@ -7402,29 +9425,29 @@ class IdentifyIdentifyQuery : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0003) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0506) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::IdentifyCluster cluster; + chip::Controller::MediaPlaybackCluster cluster; cluster.Associate(device, endpointId); - return cluster.IdentifyQuery(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.MediaPause(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnIdentifyClusterIdentifyQueryResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnMediaPlaybackClusterMediaPauseResponse, + this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Discover Attributes + * Command MediaPlay */ -class DiscoverIdentifyAttributes : public ModelCommand +class MediaPlaybackMediaPlay : public ModelCommand { public: - DiscoverIdentifyAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - - ~DiscoverIdentifyAttributes() + MediaPlaybackMediaPlay() : ModelCommand("media-play") { ModelCommand::AddArguments(); } + ~MediaPlaybackMediaPlay() { delete onSuccessCallback; delete onFailureCallback; @@ -7432,33 +9455,58 @@ class DiscoverIdentifyAttributes : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0506) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::IdentifyCluster cluster; + chip::Controller::MediaPlaybackCluster cluster; cluster.Associate(device, endpointId); - return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.MediaPlay(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnMediaPlaybackClusterMediaPlayResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute IdentifyTime + * Command MediaPrevious */ -class ReadIdentifyIdentifyTime : public ModelCommand +class MediaPlaybackMediaPrevious : public ModelCommand { public: - ReadIdentifyIdentifyTime() : ModelCommand("read") + MediaPlaybackMediaPrevious() : ModelCommand("media-previous") { ModelCommand::AddArguments(); } + ~MediaPlaybackMediaPrevious() { - AddArgument("attr-name", "identify-time"); - ModelCommand::AddArguments(); + delete onSuccessCallback; + delete onFailureCallback; } - ~ReadIdentifyIdentifyTime() + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0506) command (0x04) on endpoint %" PRIu16, endpointId); + + chip::Controller::MediaPlaybackCluster cluster; + cluster.Associate(device, endpointId); + return cluster.MediaPrevious(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnMediaPlaybackClusterMediaPreviousResponse, + this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Command MediaRewind + */ +class MediaPlaybackMediaRewind : public ModelCommand +{ +public: + MediaPlaybackMediaRewind() : ModelCommand("media-rewind") { ModelCommand::AddArguments(); } + ~MediaPlaybackMediaRewind() { delete onSuccessCallback; delete onFailureCallback; @@ -7466,31 +9514,33 @@ class ReadIdentifyIdentifyTime : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0003) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0506) command (0x06) on endpoint %" PRIu16, endpointId); - chip::Controller::IdentifyCluster cluster; + chip::Controller::MediaPlaybackCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeIdentifyTime(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.MediaRewind(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnMediaPlaybackClusterMediaRewindResponse, + this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class WriteIdentifyIdentifyTime : public ModelCommand +/* + * Command MediaSkipBackward + */ +class MediaPlaybackMediaSkipBackward : public ModelCommand { public: - WriteIdentifyIdentifyTime() : ModelCommand("write") + MediaPlaybackMediaSkipBackward() : ModelCommand("media-skip-backward") { - AddArgument("attr-name", "identify-time"); - AddArgument("attr-value", 0, UINT16_MAX, &mValue); + AddArgument("deltaPositionMilliseconds", 0, UINT64_MAX, &mDeltaPositionMilliseconds); ModelCommand::AddArguments(); } - - ~WriteIdentifyIdentifyTime() + ~MediaPlaybackMediaSkipBackward() { delete onSuccessCallback; delete onFailureCallback; @@ -7498,34 +9548,34 @@ class WriteIdentifyIdentifyTime : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0003) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0506) command (0x09) on endpoint %" PRIu16, endpointId); - chip::Controller::IdentifyCluster cluster; + chip::Controller::MediaPlaybackCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeIdentifyTime(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.MediaSkipBackward(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mDeltaPositionMilliseconds); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnMediaPlaybackClusterMediaSkipBackwardResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mValue; + uint64_t mDeltaPositionMilliseconds; }; /* - * Attribute ClusterRevision + * Command MediaSkipForward */ -class ReadIdentifyClusterRevision : public ModelCommand +class MediaPlaybackMediaSkipForward : public ModelCommand { public: - ReadIdentifyClusterRevision() : ModelCommand("read") + MediaPlaybackMediaSkipForward() : ModelCommand("media-skip-forward") { - AddArgument("attr-name", "cluster-revision"); + AddArgument("deltaPositionMilliseconds", 0, UINT64_MAX, &mDeltaPositionMilliseconds); ModelCommand::AddArguments(); } - - ~ReadIdentifyClusterRevision() + ~MediaPlaybackMediaSkipForward() { delete onSuccessCallback; delete onFailureCallback; @@ -7533,53 +9583,65 @@ class ReadIdentifyClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0003) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0506) command (0x08) on endpoint %" PRIu16, endpointId); - chip::Controller::IdentifyCluster cluster; + chip::Controller::MediaPlaybackCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.MediaSkipForward(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mDeltaPositionMilliseconds); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnMediaPlaybackClusterMediaSkipForwardResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint64_t mDeltaPositionMilliseconds; }; -/*----------------------------------------------------------------------------*\ -| Cluster LevelControl | 0x0008 | -|------------------------------------------------------------------------------| -| Commands: | | -| * Move | 0x01 | -| * MoveToLevel | 0x00 | -| * MoveToLevelWithOnOff | 0x04 | -| * MoveWithOnOff | 0x05 | -| * Step | 0x02 | -| * StepWithOnOff | 0x06 | -| * Stop | 0x03 | -| * StopWithOnOff | 0x07 | -|------------------------------------------------------------------------------| -| Attributes: | | -| * CurrentLevel | 0x0000 | -| * ClusterRevision | 0xFFFD | -\*----------------------------------------------------------------------------*/ +/* + * Command MediaSkipSeek + */ +class MediaPlaybackMediaSkipSeek : public ModelCommand +{ +public: + MediaPlaybackMediaSkipSeek() : ModelCommand("media-skip-seek") + { + AddArgument("position", 0, UINT64_MAX, &mPosition); + ModelCommand::AddArguments(); + } + ~MediaPlaybackMediaSkipSeek() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0506) command (0x0A) on endpoint %" PRIu16, endpointId); + + chip::Controller::MediaPlaybackCluster cluster; + cluster.Associate(device, endpointId); + return cluster.MediaSkipSeek(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mPosition); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnMediaPlaybackClusterMediaSkipSeekResponse, + this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint64_t mPosition; +}; /* - * Command Move + * Command MediaStartOver */ -class LevelControlMove : public ModelCommand +class MediaPlaybackMediaStartOver : public ModelCommand { public: - LevelControlMove() : ModelCommand("move") - { - AddArgument("moveMode", 0, UINT8_MAX, &mMoveMode); - AddArgument("rate", 0, UINT8_MAX, &mRate); - AddArgument("optionMask", 0, UINT8_MAX, &mOptionMask); - AddArgument("optionOverride", 0, UINT8_MAX, &mOptionOverride); - ModelCommand::AddArguments(); - } - ~LevelControlMove() + MediaPlaybackMediaStartOver() : ModelCommand("media-start-over") { ModelCommand::AddArguments(); } + ~MediaPlaybackMediaStartOver() { delete onSuccessCallback; delete onFailureCallback; @@ -7587,40 +9649,29 @@ class LevelControlMove : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0506) command (0x03) on endpoint %" PRIu16, endpointId); - chip::Controller::LevelControlCluster cluster; + chip::Controller::MediaPlaybackCluster cluster; cluster.Associate(device, endpointId); - return cluster.Move(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMoveMode, mRate, mOptionMask, - mOptionOverride); + return cluster.MediaStartOver(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnMediaPlaybackClusterMediaStartOverResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mMoveMode; - uint8_t mRate; - uint8_t mOptionMask; - uint8_t mOptionOverride; }; /* - * Command MoveToLevel + * Command MediaStop */ -class LevelControlMoveToLevel : public ModelCommand +class MediaPlaybackMediaStop : public ModelCommand { public: - LevelControlMoveToLevel() : ModelCommand("move-to-level") - { - AddArgument("level", 0, UINT8_MAX, &mLevel); - AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); - AddArgument("optionMask", 0, UINT8_MAX, &mOptionMask); - AddArgument("optionOverride", 0, UINT8_MAX, &mOptionOverride); - ModelCommand::AddArguments(); - } - ~LevelControlMoveToLevel() + MediaPlaybackMediaStop() : ModelCommand("media-stop") { ModelCommand::AddArguments(); } + ~MediaPlaybackMediaStop() { delete onSuccessCallback; delete onFailureCallback; @@ -7628,38 +9679,29 @@ class LevelControlMoveToLevel : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0506) command (0x02) on endpoint %" PRIu16, endpointId); - chip::Controller::LevelControlCluster cluster; + chip::Controller::MediaPlaybackCluster cluster; cluster.Associate(device, endpointId); - return cluster.MoveToLevel(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mLevel, mTransitionTime, mOptionMask, - mOptionOverride); + return cluster.MediaStop(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnMediaPlaybackClusterMediaStopResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mLevel; - uint16_t mTransitionTime; - uint8_t mOptionMask; - uint8_t mOptionOverride; }; /* - * Command MoveToLevelWithOnOff + * Discover Attributes */ -class LevelControlMoveToLevelWithOnOff : public ModelCommand +class DiscoverMediaPlaybackAttributes : public ModelCommand { public: - LevelControlMoveToLevelWithOnOff() : ModelCommand("move-to-level-with-on-off") - { - AddArgument("level", 0, UINT8_MAX, &mLevel); - AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); - ModelCommand::AddArguments(); - } - ~LevelControlMoveToLevelWithOnOff() + DiscoverMediaPlaybackAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + + ~DiscoverMediaPlaybackAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -7667,11 +9709,11 @@ class LevelControlMoveToLevelWithOnOff : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x04) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::LevelControlCluster cluster; + chip::Controller::MediaPlaybackCluster cluster; cluster.Associate(device, endpointId); - return cluster.MoveToLevelWithOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mLevel, mTransitionTime); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -7679,23 +9721,21 @@ class LevelControlMoveToLevelWithOnOff : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mLevel; - uint16_t mTransitionTime; }; /* - * Command MoveWithOnOff + * Attribute ClusterRevision */ -class LevelControlMoveWithOnOff : public ModelCommand +class ReadMediaPlaybackClusterRevision : public ModelCommand { public: - LevelControlMoveWithOnOff() : ModelCommand("move-with-on-off") + ReadMediaPlaybackClusterRevision() : ModelCommand("read") { - AddArgument("moveMode", 0, UINT8_MAX, &mMoveMode); - AddArgument("rate", 0, UINT8_MAX, &mRate); + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~LevelControlMoveWithOnOff() + + ~ReadMediaPlaybackClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -7703,38 +9743,52 @@ class LevelControlMoveWithOnOff : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x05) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0506) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::LevelControlCluster cluster; + chip::Controller::MediaPlaybackCluster cluster; cluster.Associate(device, endpointId); - return cluster.MoveWithOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMoveMode, mRate); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mMoveMode; - uint8_t mRate; }; +/*----------------------------------------------------------------------------*\ +| Cluster NetworkCommissioning | 0x0031 | +|------------------------------------------------------------------------------| +| Commands: | | +| * AddThreadNetwork | 0x06 | +| * AddWiFiNetwork | 0x02 | +| * DisableNetwork | 0x0E | +| * EnableNetwork | 0x0C | +| * GetLastNetworkCommissioningResult | 0x10 | +| * RemoveNetwork | 0x0A | +| * ScanNetworks | 0x00 | +| * UpdateThreadNetwork | 0x08 | +| * UpdateWiFiNetwork | 0x04 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + /* - * Command Step + * Command AddThreadNetwork */ -class LevelControlStep : public ModelCommand +class NetworkCommissioningAddThreadNetwork : public ModelCommand { public: - LevelControlStep() : ModelCommand("step") + NetworkCommissioningAddThreadNetwork() : ModelCommand("add-thread-network") { - AddArgument("stepMode", 0, UINT8_MAX, &mStepMode); - AddArgument("stepSize", 0, UINT8_MAX, &mStepSize); - AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); - AddArgument("optionMask", 0, UINT8_MAX, &mOptionMask); - AddArgument("optionOverride", 0, UINT8_MAX, &mOptionOverride); + AddArgument("operationalDataset", &mOperationalDataset); + AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); + AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); ModelCommand::AddArguments(); } - ~LevelControlStep() + ~NetworkCommissioningAddThreadNetwork() { delete onSuccessCallback; delete onFailureCallback; @@ -7742,40 +9796,41 @@ class LevelControlStep : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x02) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x06) on endpoint %" PRIu16, endpointId); - chip::Controller::LevelControlCluster cluster; + chip::Controller::NetworkCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.Step(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepMode, mStepSize, mTransitionTime, - mOptionMask, mOptionOverride); + return cluster.AddThreadNetwork(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mOperationalDataset), strlen(mOperationalDataset)), + mBreadcrumb, mTimeoutMs); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnNetworkCommissioningClusterAddThreadNetworkResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mStepMode; - uint8_t mStepSize; - uint16_t mTransitionTime; - uint8_t mOptionMask; - uint8_t mOptionOverride; + char * mOperationalDataset; + uint64_t mBreadcrumb; + uint32_t mTimeoutMs; }; /* - * Command StepWithOnOff + * Command AddWiFiNetwork */ -class LevelControlStepWithOnOff : public ModelCommand +class NetworkCommissioningAddWiFiNetwork : public ModelCommand { public: - LevelControlStepWithOnOff() : ModelCommand("step-with-on-off") + NetworkCommissioningAddWiFiNetwork() : ModelCommand("add-wi-fi-network") { - AddArgument("stepMode", 0, UINT8_MAX, &mStepMode); - AddArgument("stepSize", 0, UINT8_MAX, &mStepSize); - AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); + AddArgument("ssid", &mSsid); + AddArgument("credentials", &mCredentials); + AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); + AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); ModelCommand::AddArguments(); } - ~LevelControlStepWithOnOff() + ~NetworkCommissioningAddWiFiNetwork() { delete onSuccessCallback; delete onFailureCallback; @@ -7783,37 +9838,41 @@ class LevelControlStepWithOnOff : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x06) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x02) on endpoint %" PRIu16, endpointId); - chip::Controller::LevelControlCluster cluster; + chip::Controller::NetworkCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.StepWithOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mStepMode, mStepSize, - mTransitionTime); + return cluster.AddWiFiNetwork( + onSuccessCallback->Cancel(), onFailureCallback->Cancel(), chip::ByteSpan(chip::Uint8::from_char(mSsid), strlen(mSsid)), + chip::ByteSpan(chip::Uint8::from_char(mCredentials), strlen(mCredentials)), mBreadcrumb, mTimeoutMs); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnNetworkCommissioningClusterAddWiFiNetworkResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mStepMode; - uint8_t mStepSize; - uint16_t mTransitionTime; + char * mSsid; + char * mCredentials; + uint64_t mBreadcrumb; + uint32_t mTimeoutMs; }; /* - * Command Stop + * Command DisableNetwork */ -class LevelControlStop : public ModelCommand +class NetworkCommissioningDisableNetwork : public ModelCommand { public: - LevelControlStop() : ModelCommand("stop") + NetworkCommissioningDisableNetwork() : ModelCommand("disable-network") { - AddArgument("optionMask", 0, UINT8_MAX, &mOptionMask); - AddArgument("optionOverride", 0, UINT8_MAX, &mOptionOverride); + AddArgument("networkID", &mNetworkID); + AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); + AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); ModelCommand::AddArguments(); } - ~LevelControlStop() + ~NetworkCommissioningDisableNetwork() { delete onSuccessCallback; delete onFailureCallback; @@ -7821,30 +9880,40 @@ class LevelControlStop : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x03) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x0E) on endpoint %" PRIu16, endpointId); - chip::Controller::LevelControlCluster cluster; + chip::Controller::NetworkCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.Stop(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mOptionMask, mOptionOverride); + return cluster.DisableNetwork(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mNetworkID), strlen(mNetworkID)), mBreadcrumb, + mTimeoutMs); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnNetworkCommissioningClusterDisableNetworkResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mOptionMask; - uint8_t mOptionOverride; + char * mNetworkID; + uint64_t mBreadcrumb; + uint32_t mTimeoutMs; }; /* - * Command StopWithOnOff + * Command EnableNetwork */ -class LevelControlStopWithOnOff : public ModelCommand +class NetworkCommissioningEnableNetwork : public ModelCommand { public: - LevelControlStopWithOnOff() : ModelCommand("stop-with-on-off") { ModelCommand::AddArguments(); } - ~LevelControlStopWithOnOff() + NetworkCommissioningEnableNetwork() : ModelCommand("enable-network") + { + AddArgument("networkID", &mNetworkID); + AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); + AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); + ModelCommand::AddArguments(); + } + ~NetworkCommissioningEnableNetwork() { delete onSuccessCallback; delete onFailureCallback; @@ -7852,29 +9921,38 @@ class LevelControlStopWithOnOff : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x07) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::LevelControlCluster cluster; + chip::Controller::NetworkCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.StopWithOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.EnableNetwork(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mNetworkID), strlen(mNetworkID)), mBreadcrumb, + mTimeoutMs); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnNetworkCommissioningClusterEnableNetworkResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + char * mNetworkID; + uint64_t mBreadcrumb; + uint32_t mTimeoutMs; }; /* - * Discover Attributes + * Command GetLastNetworkCommissioningResult */ -class DiscoverLevelControlAttributes : public ModelCommand +class NetworkCommissioningGetLastNetworkCommissioningResult : public ModelCommand { public: - DiscoverLevelControlAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - - ~DiscoverLevelControlAttributes() + NetworkCommissioningGetLastNetworkCommissioningResult() : ModelCommand("get-last-network-commissioning-result") + { + AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); + ModelCommand::AddArguments(); + } + ~NetworkCommissioningGetLastNetworkCommissioningResult() { delete onSuccessCallback; delete onFailureCallback; @@ -7882,11 +9960,11 @@ class DiscoverLevelControlAttributes : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x10) on endpoint %" PRIu16, endpointId); - chip::Controller::LevelControlCluster cluster; + chip::Controller::NetworkCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.GetLastNetworkCommissioningResult(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mTimeoutMs); } private: @@ -7894,21 +9972,23 @@ class DiscoverLevelControlAttributes : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint32_t mTimeoutMs; }; /* - * Attribute CurrentLevel + * Command RemoveNetwork */ -class ReadLevelControlCurrentLevel : public ModelCommand +class NetworkCommissioningRemoveNetwork : public ModelCommand { public: - ReadLevelControlCurrentLevel() : ModelCommand("read") + NetworkCommissioningRemoveNetwork() : ModelCommand("remove-network") { - AddArgument("attr-name", "current-level"); + AddArgument("networkID", &mNetworkID); + AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); + AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); ModelCommand::AddArguments(); } - - ~ReadLevelControlCurrentLevel() + ~NetworkCommissioningRemoveNetwork() { delete onSuccessCallback; delete onFailureCallback; @@ -7916,81 +9996,80 @@ class ReadLevelControlCurrentLevel : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x0A) on endpoint %" PRIu16, endpointId); - chip::Controller::LevelControlCluster cluster; + chip::Controller::NetworkCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeCurrentLevel(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.RemoveNetwork(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mNetworkID), strlen(mNetworkID)), mBreadcrumb, + mTimeoutMs); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnNetworkCommissioningClusterRemoveNetworkResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + char * mNetworkID; + uint64_t mBreadcrumb; + uint32_t mTimeoutMs; }; -class ReportLevelControlCurrentLevel : public ModelCommand +/* + * Command ScanNetworks + */ +class NetworkCommissioningScanNetworks : public ModelCommand { public: - ReportLevelControlCurrentLevel() : ModelCommand("report") + NetworkCommissioningScanNetworks() : ModelCommand("scan-networks") { - AddArgument("attr-name", "current-level"); - AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); - AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); - AddArgument("change", 0, UINT8_MAX, &mChange); + AddArgument("ssid", &mSsid); + AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); + AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); ModelCommand::AddArguments(); } - - ~ReportLevelControlCurrentLevel() + ~NetworkCommissioningScanNetworks() { delete onSuccessCallback; delete onFailureCallback; - delete onReportCallback; } CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x06) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::LevelControlCluster cluster; + chip::Controller::NetworkCommissioningCluster cluster; cluster.Associate(device, endpointId); - - CHIP_ERROR err = cluster.ReportAttributeCurrentLevel(onReportCallback->Cancel()); - if (err != CHIP_NO_ERROR) - { - return err; - } - - return cluster.ConfigureAttributeCurrentLevel(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, - mMaxInterval, mChange); + return cluster.ScanNetworks(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mSsid), strlen(mSsid)), mBreadcrumb, mTimeoutMs); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnNetworkCommissioningClusterScanNetworksResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - chip::Callback::Callback * onReportCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); - uint16_t mMinInterval; - uint16_t mMaxInterval; - uint8_t mChange; + char * mSsid; + uint64_t mBreadcrumb; + uint32_t mTimeoutMs; }; /* - * Attribute ClusterRevision + * Command UpdateThreadNetwork */ -class ReadLevelControlClusterRevision : public ModelCommand +class NetworkCommissioningUpdateThreadNetwork : public ModelCommand { public: - ReadLevelControlClusterRevision() : ModelCommand("read") + NetworkCommissioningUpdateThreadNetwork() : ModelCommand("update-thread-network") { - AddArgument("attr-name", "cluster-revision"); + AddArgument("operationalDataset", &mOperationalDataset); + AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); + AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); ModelCommand::AddArguments(); } - - ~ReadLevelControlClusterRevision() + ~NetworkCommissioningUpdateThreadNetwork() { delete onSuccessCallback; delete onFailureCallback; @@ -7998,38 +10077,41 @@ class ReadLevelControlClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0008) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x08) on endpoint %" PRIu16, endpointId); - chip::Controller::LevelControlCluster cluster; + chip::Controller::NetworkCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.UpdateThreadNetwork(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mOperationalDataset), strlen(mOperationalDataset)), + mBreadcrumb, mTimeoutMs); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnNetworkCommissioningClusterUpdateThreadNetworkResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + char * mOperationalDataset; + uint64_t mBreadcrumb; + uint32_t mTimeoutMs; }; -/*----------------------------------------------------------------------------*\ -| Cluster LowPower | 0x0508 | -|------------------------------------------------------------------------------| -| Commands: | | -| * Sleep | 0x00 | -|------------------------------------------------------------------------------| -| Attributes: | | -| * ClusterRevision | 0xFFFD | -\*----------------------------------------------------------------------------*/ - /* - * Command Sleep + * Command UpdateWiFiNetwork */ -class LowPowerSleep : public ModelCommand +class NetworkCommissioningUpdateWiFiNetwork : public ModelCommand { public: - LowPowerSleep() : ModelCommand("sleep") { ModelCommand::AddArguments(); } - ~LowPowerSleep() + NetworkCommissioningUpdateWiFiNetwork() : ModelCommand("update-wi-fi-network") + { + AddArgument("ssid", &mSsid); + AddArgument("credentials", &mCredentials); + AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); + AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); + ModelCommand::AddArguments(); + } + ~NetworkCommissioningUpdateWiFiNetwork() { delete onSuccessCallback; delete onFailureCallback; @@ -8037,29 +10119,36 @@ class LowPowerSleep : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0508) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x04) on endpoint %" PRIu16, endpointId); - chip::Controller::LowPowerCluster cluster; + chip::Controller::NetworkCommissioningCluster cluster; cluster.Associate(device, endpointId); - return cluster.Sleep(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.UpdateWiFiNetwork( + onSuccessCallback->Cancel(), onFailureCallback->Cancel(), chip::ByteSpan(chip::Uint8::from_char(mSsid), strlen(mSsid)), + chip::ByteSpan(chip::Uint8::from_char(mCredentials), strlen(mCredentials)), mBreadcrumb, mTimeoutMs); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnNetworkCommissioningClusterUpdateWiFiNetworkResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + char * mSsid; + char * mCredentials; + uint64_t mBreadcrumb; + uint32_t mTimeoutMs; }; /* * Discover Attributes */ -class DiscoverLowPowerAttributes : public ModelCommand +class DiscoverNetworkCommissioningAttributes : public ModelCommand { public: - DiscoverLowPowerAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + DiscoverNetworkCommissioningAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - ~DiscoverLowPowerAttributes() + ~DiscoverNetworkCommissioningAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -8069,7 +10158,7 @@ class DiscoverLowPowerAttributes : public ModelCommand { ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::LowPowerCluster cluster; + chip::Controller::NetworkCommissioningCluster cluster; cluster.Associate(device, endpointId); return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } @@ -8084,16 +10173,16 @@ class DiscoverLowPowerAttributes : public ModelCommand /* * Attribute ClusterRevision */ -class ReadLowPowerClusterRevision : public ModelCommand +class ReadNetworkCommissioningClusterRevision : public ModelCommand { public: - ReadLowPowerClusterRevision() : ModelCommand("read") + ReadNetworkCommissioningClusterRevision() : ModelCommand("read") { AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ReadLowPowerClusterRevision() + ~ReadNetworkCommissioningClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -8101,9 +10190,9 @@ class ReadLowPowerClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0508) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::LowPowerCluster cluster; + chip::Controller::NetworkCommissioningCluster cluster; cluster.Associate(device, endpointId); return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } @@ -8116,37 +10205,26 @@ class ReadLowPowerClusterRevision : public ModelCommand }; /*----------------------------------------------------------------------------*\ -| Cluster NetworkCommissioning | 0x0031 | +| Cluster OnOff | 0x0006 | |------------------------------------------------------------------------------| | Commands: | | -| * AddThreadNetwork | 0x06 | -| * AddWiFiNetwork | 0x02 | -| * DisableNetwork | 0x0E | -| * EnableNetwork | 0x0C | -| * GetLastNetworkCommissioningResult | 0x10 | -| * RemoveNetwork | 0x0A | -| * ScanNetworks | 0x00 | -| * UpdateThreadNetwork | 0x08 | -| * UpdateWiFiNetwork | 0x04 | +| * Off | 0x00 | +| * On | 0x01 | +| * Toggle | 0x02 | |------------------------------------------------------------------------------| | Attributes: | | +| * OnOff | 0x0000 | | * ClusterRevision | 0xFFFD | \*----------------------------------------------------------------------------*/ /* - * Command AddThreadNetwork + * Command Off */ -class NetworkCommissioningAddThreadNetwork : public ModelCommand +class OnOffOff : public ModelCommand { public: - NetworkCommissioningAddThreadNetwork() : ModelCommand("add-thread-network") - { - AddArgument("operationalDataset", &mOperationalDataset); - AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); - AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); - ModelCommand::AddArguments(); - } - ~NetworkCommissioningAddThreadNetwork() + OnOffOff() : ModelCommand("off") { ModelCommand::AddArguments(); } + ~OnOffOff() { delete onSuccessCallback; delete onFailureCallback; @@ -8154,41 +10232,28 @@ class NetworkCommissioningAddThreadNetwork : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x06) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::NetworkCommissioningCluster cluster; + chip::Controller::OnOffCluster cluster; cluster.Associate(device, endpointId); - return cluster.AddThreadNetwork(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), - chip::ByteSpan(chip::Uint8::from_char(mOperationalDataset), strlen(mOperationalDataset)), - mBreadcrumb, mTimeoutMs); + return cluster.Off(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnNetworkCommissioningClusterAddThreadNetworkResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - char * mOperationalDataset; - uint64_t mBreadcrumb; - uint32_t mTimeoutMs; }; /* - * Command AddWiFiNetwork + * Command On */ -class NetworkCommissioningAddWiFiNetwork : public ModelCommand +class OnOffOn : public ModelCommand { public: - NetworkCommissioningAddWiFiNetwork() : ModelCommand("add-wi-fi-network") - { - AddArgument("ssid", &mSsid); - AddArgument("credentials", &mCredentials); - AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); - AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); - ModelCommand::AddArguments(); - } - ~NetworkCommissioningAddWiFiNetwork() + OnOffOn() : ModelCommand("on") { ModelCommand::AddArguments(); } + ~OnOffOn() { delete onSuccessCallback; delete onFailureCallback; @@ -8196,41 +10261,28 @@ class NetworkCommissioningAddWiFiNetwork : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x02) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::NetworkCommissioningCluster cluster; + chip::Controller::OnOffCluster cluster; cluster.Associate(device, endpointId); - return cluster.AddWiFiNetwork( - onSuccessCallback->Cancel(), onFailureCallback->Cancel(), chip::ByteSpan(chip::Uint8::from_char(mSsid), strlen(mSsid)), - chip::ByteSpan(chip::Uint8::from_char(mCredentials), strlen(mCredentials)), mBreadcrumb, mTimeoutMs); + return cluster.On(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnNetworkCommissioningClusterAddWiFiNetworkResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - char * mSsid; - char * mCredentials; - uint64_t mBreadcrumb; - uint32_t mTimeoutMs; }; /* - * Command DisableNetwork + * Command Toggle */ -class NetworkCommissioningDisableNetwork : public ModelCommand +class OnOffToggle : public ModelCommand { -public: - NetworkCommissioningDisableNetwork() : ModelCommand("disable-network") - { - AddArgument("networkID", &mNetworkID); - AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); - AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); - ModelCommand::AddArguments(); - } - ~NetworkCommissioningDisableNetwork() +public: + OnOffToggle() : ModelCommand("toggle") { ModelCommand::AddArguments(); } + ~OnOffToggle() { delete onSuccessCallback; delete onFailureCallback; @@ -8238,40 +10290,29 @@ class NetworkCommissioningDisableNetwork : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x0E) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x02) on endpoint %" PRIu16, endpointId); - chip::Controller::NetworkCommissioningCluster cluster; + chip::Controller::OnOffCluster cluster; cluster.Associate(device, endpointId); - return cluster.DisableNetwork(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), - chip::ByteSpan(chip::Uint8::from_char(mNetworkID), strlen(mNetworkID)), mBreadcrumb, - mTimeoutMs); + return cluster.Toggle(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnNetworkCommissioningClusterDisableNetworkResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - char * mNetworkID; - uint64_t mBreadcrumb; - uint32_t mTimeoutMs; }; /* - * Command EnableNetwork + * Discover Attributes */ -class NetworkCommissioningEnableNetwork : public ModelCommand +class DiscoverOnOffAttributes : public ModelCommand { public: - NetworkCommissioningEnableNetwork() : ModelCommand("enable-network") - { - AddArgument("networkID", &mNetworkID); - AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); - AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); - ModelCommand::AddArguments(); - } - ~NetworkCommissioningEnableNetwork() + DiscoverOnOffAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + + ~DiscoverOnOffAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -8279,38 +10320,33 @@ class NetworkCommissioningEnableNetwork : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x0C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::NetworkCommissioningCluster cluster; + chip::Controller::OnOffCluster cluster; cluster.Associate(device, endpointId); - return cluster.EnableNetwork(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), - chip::ByteSpan(chip::Uint8::from_char(mNetworkID), strlen(mNetworkID)), mBreadcrumb, - mTimeoutMs); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnNetworkCommissioningClusterEnableNetworkResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - char * mNetworkID; - uint64_t mBreadcrumb; - uint32_t mTimeoutMs; }; /* - * Command GetLastNetworkCommissioningResult + * Attribute OnOff */ -class NetworkCommissioningGetLastNetworkCommissioningResult : public ModelCommand +class ReadOnOffOnOff : public ModelCommand { public: - NetworkCommissioningGetLastNetworkCommissioningResult() : ModelCommand("get-last-network-commissioning-result") + ReadOnOffOnOff() : ModelCommand("read") { - AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); + AddArgument("attr-name", "on-off"); ModelCommand::AddArguments(); } - ~NetworkCommissioningGetLastNetworkCommissioningResult() + + ~ReadOnOffOnOff() { delete onSuccessCallback; delete onFailureCallback; @@ -8318,76 +10354,79 @@ class NetworkCommissioningGetLastNetworkCommissioningResult : public ModelComman CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x10) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::NetworkCommissioningCluster cluster; + chip::Controller::OnOffCluster cluster; cluster.Associate(device, endpointId); - return cluster.GetLastNetworkCommissioningResult(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mTimeoutMs); + return cluster.ReadAttributeOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnBooleanAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint32_t mTimeoutMs; }; -/* - * Command RemoveNetwork - */ -class NetworkCommissioningRemoveNetwork : public ModelCommand +class ReportOnOffOnOff : public ModelCommand { public: - NetworkCommissioningRemoveNetwork() : ModelCommand("remove-network") + ReportOnOffOnOff() : ModelCommand("report") { - AddArgument("networkID", &mNetworkID); - AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); - AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); + AddArgument("attr-name", "on-off"); + AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); + AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); ModelCommand::AddArguments(); } - ~NetworkCommissioningRemoveNetwork() + + ~ReportOnOffOnOff() { delete onSuccessCallback; delete onFailureCallback; + delete onReportCallback; } CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x0A) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x06) on endpoint %" PRIu16, endpointId); - chip::Controller::NetworkCommissioningCluster cluster; + chip::Controller::OnOffCluster cluster; cluster.Associate(device, endpointId); - return cluster.RemoveNetwork(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), - chip::ByteSpan(chip::Uint8::from_char(mNetworkID), strlen(mNetworkID)), mBreadcrumb, - mTimeoutMs); + + CHIP_ERROR err = cluster.ReportAttributeOnOff(onReportCallback->Cancel()); + if (err != CHIP_NO_ERROR) + { + return err; + } + + return cluster.ConfigureAttributeOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, + mMaxInterval); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnNetworkCommissioningClusterRemoveNetworkResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - char * mNetworkID; - uint64_t mBreadcrumb; - uint32_t mTimeoutMs; + chip::Callback::Callback * onReportCallback = + new chip::Callback::Callback(OnBooleanAttributeResponse, this); + uint16_t mMinInterval; + uint16_t mMaxInterval; }; /* - * Command ScanNetworks + * Attribute ClusterRevision */ -class NetworkCommissioningScanNetworks : public ModelCommand +class ReadOnOffClusterRevision : public ModelCommand { public: - NetworkCommissioningScanNetworks() : ModelCommand("scan-networks") + ReadOnOffClusterRevision() : ModelCommand("read") { - AddArgument("ssid", &mSsid); - AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); - AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~NetworkCommissioningScanNetworks() + + ~ReadOnOffClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -8395,39 +10434,41 @@ class NetworkCommissioningScanNetworks : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::NetworkCommissioningCluster cluster; + chip::Controller::OnOffCluster cluster; cluster.Associate(device, endpointId); - return cluster.ScanNetworks(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), - chip::ByteSpan(chip::Uint8::from_char(mSsid), strlen(mSsid)), mBreadcrumb, mTimeoutMs); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnNetworkCommissioningClusterScanNetworksResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - char * mSsid; - uint64_t mBreadcrumb; - uint32_t mTimeoutMs; }; +/*----------------------------------------------------------------------------*\ +| Cluster OperationalCredentials | 0x003E | +|------------------------------------------------------------------------------| +| Commands: | | +| * GetFabricId | 0x00 | +| * RemoveFabric | 0x0A | +| * UpdateFabricLabel | 0x09 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * FabricsList | 0x0001 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + /* - * Command UpdateThreadNetwork + * Command GetFabricId */ -class NetworkCommissioningUpdateThreadNetwork : public ModelCommand +class OperationalCredentialsGetFabricId : public ModelCommand { public: - NetworkCommissioningUpdateThreadNetwork() : ModelCommand("update-thread-network") - { - AddArgument("operationalDataset", &mOperationalDataset); - AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); - AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); - ModelCommand::AddArguments(); - } - ~NetworkCommissioningUpdateThreadNetwork() + OperationalCredentialsGetFabricId() : ModelCommand("get-fabric-id") { ModelCommand::AddArguments(); } + ~OperationalCredentialsGetFabricId() { delete onSuccessCallback; delete onFailureCallback; @@ -8435,41 +10476,35 @@ class NetworkCommissioningUpdateThreadNetwork : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x08) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x003E) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::NetworkCommissioningCluster cluster; + chip::Controller::OperationalCredentialsCluster cluster; cluster.Associate(device, endpointId); - return cluster.UpdateThreadNetwork(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), - chip::ByteSpan(chip::Uint8::from_char(mOperationalDataset), strlen(mOperationalDataset)), - mBreadcrumb, mTimeoutMs); + return cluster.GetFabricId(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnNetworkCommissioningClusterUpdateThreadNetworkResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnOperationalCredentialsClusterGetFabricIdResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - char * mOperationalDataset; - uint64_t mBreadcrumb; - uint32_t mTimeoutMs; }; /* - * Command UpdateWiFiNetwork + * Command RemoveFabric */ -class NetworkCommissioningUpdateWiFiNetwork : public ModelCommand +class OperationalCredentialsRemoveFabric : public ModelCommand { public: - NetworkCommissioningUpdateWiFiNetwork() : ModelCommand("update-wi-fi-network") + OperationalCredentialsRemoveFabric() : ModelCommand("remove-fabric") { - AddArgument("ssid", &mSsid); - AddArgument("credentials", &mCredentials); - AddArgument("breadcrumb", 0, UINT64_MAX, &mBreadcrumb); - AddArgument("timeoutMs", 0, UINT32_MAX, &mTimeoutMs); + AddArgument("fabricId", 0, UINT64_MAX, &mFabricId); + AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); + AddArgument("vendorId", 0, UINT16_MAX, &mVendorId); ModelCommand::AddArguments(); } - ~NetworkCommissioningUpdateWiFiNetwork() + ~OperationalCredentialsRemoveFabric() { delete onSuccessCallback; delete onFailureCallback; @@ -8477,36 +10512,35 @@ class NetworkCommissioningUpdateWiFiNetwork : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x04) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x003E) command (0x0A) on endpoint %" PRIu16, endpointId); - chip::Controller::NetworkCommissioningCluster cluster; + chip::Controller::OperationalCredentialsCluster cluster; cluster.Associate(device, endpointId); - return cluster.UpdateWiFiNetwork( - onSuccessCallback->Cancel(), onFailureCallback->Cancel(), chip::ByteSpan(chip::Uint8::from_char(mSsid), strlen(mSsid)), - chip::ByteSpan(chip::Uint8::from_char(mCredentials), strlen(mCredentials)), mBreadcrumb, mTimeoutMs); + return cluster.RemoveFabric(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mFabricId, mNodeId, mVendorId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnNetworkCommissioningClusterUpdateWiFiNetworkResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - char * mSsid; - char * mCredentials; - uint64_t mBreadcrumb; - uint32_t mTimeoutMs; + chip::FabricId mFabricId; + chip::NodeId mNodeId; + uint16_t mVendorId; }; /* - * Discover Attributes + * Command UpdateFabricLabel */ -class DiscoverNetworkCommissioningAttributes : public ModelCommand +class OperationalCredentialsUpdateFabricLabel : public ModelCommand { public: - DiscoverNetworkCommissioningAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - - ~DiscoverNetworkCommissioningAttributes() + OperationalCredentialsUpdateFabricLabel() : ModelCommand("update-fabric-label") + { + AddArgument("label", &mLabel); + ModelCommand::AddArguments(); + } + ~OperationalCredentialsUpdateFabricLabel() { delete onSuccessCallback; delete onFailureCallback; @@ -8514,11 +10548,12 @@ class DiscoverNetworkCommissioningAttributes : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x003E) command (0x09) on endpoint %" PRIu16, endpointId); - chip::Controller::NetworkCommissioningCluster cluster; + chip::Controller::OperationalCredentialsCluster cluster; cluster.Associate(device, endpointId); - return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.UpdateFabricLabel(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mLabel), strlen(mLabel))); } private: @@ -8526,21 +10561,18 @@ class DiscoverNetworkCommissioningAttributes : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + char * mLabel; }; /* - * Attribute ClusterRevision + * Discover Attributes */ -class ReadNetworkCommissioningClusterRevision : public ModelCommand +class DiscoverOperationalCredentialsAttributes : public ModelCommand { public: - ReadNetworkCommissioningClusterRevision() : ModelCommand("read") - { - AddArgument("attr-name", "cluster-revision"); - ModelCommand::AddArguments(); - } + DiscoverOperationalCredentialsAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - ~ReadNetworkCommissioningClusterRevision() + ~DiscoverOperationalCredentialsAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -8548,41 +10580,33 @@ class ReadNetworkCommissioningClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0031) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::NetworkCommissioningCluster cluster; + chip::Controller::OperationalCredentialsCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -/*----------------------------------------------------------------------------*\ -| Cluster OnOff | 0x0006 | -|------------------------------------------------------------------------------| -| Commands: | | -| * Off | 0x00 | -| * On | 0x01 | -| * Toggle | 0x02 | -|------------------------------------------------------------------------------| -| Attributes: | | -| * OnOff | 0x0000 | -| * ClusterRevision | 0xFFFD | -\*----------------------------------------------------------------------------*/ - /* - * Command Off + * Attribute FabricsList */ -class OnOffOff : public ModelCommand +class ReadOperationalCredentialsFabricsList : public ModelCommand { public: - OnOffOff() : ModelCommand("off") { ModelCommand::AddArguments(); } - ~OnOffOff() + ReadOperationalCredentialsFabricsList() : ModelCommand("read") + { + AddArgument("attr-name", "fabrics-list"); + ModelCommand::AddArguments(); + } + + ~ReadOperationalCredentialsFabricsList() { delete onSuccessCallback; delete onFailureCallback; @@ -8590,28 +10614,34 @@ class OnOffOff : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x003E) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::OnOffCluster cluster; + chip::Controller::OperationalCredentialsCluster cluster; cluster.Associate(device, endpointId); - return cluster.Off(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeFabricsList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnOperationalCredentialsFabricsListListAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Command On + * Attribute ClusterRevision */ -class OnOffOn : public ModelCommand +class ReadOperationalCredentialsClusterRevision : public ModelCommand { public: - OnOffOn() : ModelCommand("on") { ModelCommand::AddArguments(); } - ~OnOffOn() + ReadOperationalCredentialsClusterRevision() : ModelCommand("read") + { + AddArgument("attr-name", "cluster-revision"); + ModelCommand::AddArguments(); + } + + ~ReadOperationalCredentialsClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -8619,28 +10649,45 @@ class OnOffOn : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x003E) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::OnOffCluster cluster; + chip::Controller::OperationalCredentialsCluster cluster; cluster.Associate(device, endpointId); - return cluster.On(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; +/*----------------------------------------------------------------------------*\ +| Cluster PumpConfigurationAndControl | 0x0200 | +|------------------------------------------------------------------------------| +| Commands: | | +|------------------------------------------------------------------------------| +| Attributes: | | +| * MaxPressure | 0x0000 | +| * MaxSpeed | 0x0001 | +| * MaxFlow | 0x0002 | +| * EffectiveOperationMode | 0x0011 | +| * EffectiveControlMode | 0x0012 | +| * Capacity | 0x0013 | +| * OperationMode | 0x0020 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + /* - * Command Toggle + * Discover Attributes */ -class OnOffToggle : public ModelCommand +class DiscoverPumpConfigurationAndControlAttributes : public ModelCommand { public: - OnOffToggle() : ModelCommand("toggle") { ModelCommand::AddArguments(); } - ~OnOffToggle() + DiscoverPumpConfigurationAndControlAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + + ~DiscoverPumpConfigurationAndControlAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -8648,11 +10695,11 @@ class OnOffToggle : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x02) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::OnOffCluster cluster; + chip::Controller::PumpConfigurationAndControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.Toggle(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -8663,14 +10710,18 @@ class OnOffToggle : public ModelCommand }; /* - * Discover Attributes + * Attribute MaxPressure */ -class DiscoverOnOffAttributes : public ModelCommand +class ReadPumpConfigurationAndControlMaxPressure : public ModelCommand { public: - DiscoverOnOffAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + ReadPumpConfigurationAndControlMaxPressure() : ModelCommand("read") + { + AddArgument("attr-name", "max-pressure"); + ModelCommand::AddArguments(); + } - ~DiscoverOnOffAttributes() + ~ReadPumpConfigurationAndControlMaxPressure() { delete onSuccessCallback; delete onFailureCallback; @@ -8678,33 +10729,33 @@ class DiscoverOnOffAttributes : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::OnOffCluster cluster; + chip::Controller::PumpConfigurationAndControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeMaxPressure(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16sAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute OnOff + * Attribute MaxSpeed */ -class ReadOnOffOnOff : public ModelCommand +class ReadPumpConfigurationAndControlMaxSpeed : public ModelCommand { public: - ReadOnOffOnOff() : ModelCommand("read") + ReadPumpConfigurationAndControlMaxSpeed() : ModelCommand("read") { - AddArgument("attr-name", "on-off"); + AddArgument("attr-name", "max-speed"); ModelCommand::AddArguments(); } - ~ReadOnOffOnOff() + ~ReadPumpConfigurationAndControlMaxSpeed() { delete onSuccessCallback; delete onFailureCallback; @@ -8712,79 +10763,67 @@ class ReadOnOffOnOff : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::OnOffCluster cluster; + chip::Controller::PumpConfigurationAndControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeMaxSpeed(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnBooleanAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class ReportOnOffOnOff : public ModelCommand +/* + * Attribute MaxFlow + */ +class ReadPumpConfigurationAndControlMaxFlow : public ModelCommand { public: - ReportOnOffOnOff() : ModelCommand("report") + ReadPumpConfigurationAndControlMaxFlow() : ModelCommand("read") { - AddArgument("attr-name", "on-off"); - AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); - AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); + AddArgument("attr-name", "max-flow"); ModelCommand::AddArguments(); } - ~ReportOnOffOnOff() + ~ReadPumpConfigurationAndControlMaxFlow() { delete onSuccessCallback; delete onFailureCallback; - delete onReportCallback; } CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x06) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::OnOffCluster cluster; + chip::Controller::PumpConfigurationAndControlCluster cluster; cluster.Associate(device, endpointId); - - CHIP_ERROR err = cluster.ReportAttributeOnOff(onReportCallback->Cancel()); - if (err != CHIP_NO_ERROR) - { - return err; - } - - return cluster.ConfigureAttributeOnOff(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, - mMaxInterval); + return cluster.ReadAttributeMaxFlow(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - chip::Callback::Callback * onReportCallback = - new chip::Callback::Callback(OnBooleanAttributeResponse, this); - uint16_t mMinInterval; - uint16_t mMaxInterval; }; /* - * Attribute ClusterRevision + * Attribute EffectiveOperationMode */ -class ReadOnOffClusterRevision : public ModelCommand +class ReadPumpConfigurationAndControlEffectiveOperationMode : public ModelCommand { public: - ReadOnOffClusterRevision() : ModelCommand("read") + ReadPumpConfigurationAndControlEffectiveOperationMode() : ModelCommand("read") { - AddArgument("attr-name", "cluster-revision"); + AddArgument("attr-name", "effective-operation-mode"); ModelCommand::AddArguments(); } - ~ReadOnOffClusterRevision() + ~ReadPumpConfigurationAndControlEffectiveOperationMode() { delete onSuccessCallback; delete onFailureCallback; @@ -8792,41 +10831,33 @@ class ReadOnOffClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0006) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::OnOffCluster cluster; + chip::Controller::PumpConfigurationAndControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeEffectiveOperationMode(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -/*----------------------------------------------------------------------------*\ -| Cluster OperationalCredentials | 0x003E | -|------------------------------------------------------------------------------| -| Commands: | | -| * GetFabricId | 0x00 | -| * RemoveFabric | 0x0A | -| * UpdateFabricLabel | 0x09 | -|------------------------------------------------------------------------------| -| Attributes: | | -| * FabricsList | 0x0001 | -| * ClusterRevision | 0xFFFD | -\*----------------------------------------------------------------------------*/ - /* - * Command GetFabricId + * Attribute EffectiveControlMode */ -class OperationalCredentialsGetFabricId : public ModelCommand +class ReadPumpConfigurationAndControlEffectiveControlMode : public ModelCommand { public: - OperationalCredentialsGetFabricId() : ModelCommand("get-fabric-id") { ModelCommand::AddArguments(); } - ~OperationalCredentialsGetFabricId() + ReadPumpConfigurationAndControlEffectiveControlMode() : ModelCommand("read") + { + AddArgument("attr-name", "effective-control-mode"); + ModelCommand::AddArguments(); + } + + ~ReadPumpConfigurationAndControlEffectiveControlMode() { delete onSuccessCallback; delete onFailureCallback; @@ -8834,35 +10865,33 @@ class OperationalCredentialsGetFabricId : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x003E) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::OperationalCredentialsCluster cluster; + chip::Controller::PumpConfigurationAndControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.GetFabricId(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeEffectiveControlMode(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnOperationalCredentialsClusterGetFabricIdResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Command RemoveFabric + * Attribute Capacity */ -class OperationalCredentialsRemoveFabric : public ModelCommand +class ReadPumpConfigurationAndControlCapacity : public ModelCommand { public: - OperationalCredentialsRemoveFabric() : ModelCommand("remove-fabric") + ReadPumpConfigurationAndControlCapacity() : ModelCommand("read") { - AddArgument("fabricId", 0, UINT64_MAX, &mFabricId); - AddArgument("nodeId", 0, UINT64_MAX, &mNodeId); - AddArgument("vendorId", 0, UINT16_MAX, &mVendorId); + AddArgument("attr-name", "capacity"); ModelCommand::AddArguments(); } - ~OperationalCredentialsRemoveFabric() + + ~ReadPumpConfigurationAndControlCapacity() { delete onSuccessCallback; delete onFailureCallback; @@ -8870,48 +10899,54 @@ class OperationalCredentialsRemoveFabric : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x003E) command (0x0A) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::OperationalCredentialsCluster cluster; + chip::Controller::PumpConfigurationAndControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.RemoveFabric(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mFabricId, mNodeId, mVendorId); + return cluster.ReadAttributeCapacity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16sAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - chip::FabricId mFabricId; - chip::NodeId mNodeId; - uint16_t mVendorId; }; -/* - * Command UpdateFabricLabel - */ -class OperationalCredentialsUpdateFabricLabel : public ModelCommand +class ReportPumpConfigurationAndControlCapacity : public ModelCommand { public: - OperationalCredentialsUpdateFabricLabel() : ModelCommand("update-fabric-label") + ReportPumpConfigurationAndControlCapacity() : ModelCommand("report") { - AddArgument("label", &mLabel); + AddArgument("attr-name", "capacity"); + AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); + AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); + AddArgument("change", INT16_MIN, INT16_MAX, &mChange); ModelCommand::AddArguments(); } - ~OperationalCredentialsUpdateFabricLabel() + + ~ReportPumpConfigurationAndControlCapacity() { delete onSuccessCallback; delete onFailureCallback; + delete onReportCallback; } CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x003E) command (0x09) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x06) on endpoint %" PRIu16, endpointId); - chip::Controller::OperationalCredentialsCluster cluster; + chip::Controller::PumpConfigurationAndControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.UpdateFabricLabel(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), - chip::ByteSpan(chip::Uint8::from_char(mLabel), strlen(mLabel))); + + CHIP_ERROR err = cluster.ReportAttributeCapacity(onReportCallback->Cancel()); + if (err != CHIP_NO_ERROR) + { + return err; + } + + return cluster.ConfigureAttributeCapacity(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, + mMaxInterval, mChange); } private: @@ -8919,18 +10954,26 @@ class OperationalCredentialsUpdateFabricLabel : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - char * mLabel; + chip::Callback::Callback * onReportCallback = + new chip::Callback::Callback(OnInt16sAttributeResponse, this); + uint16_t mMinInterval; + uint16_t mMaxInterval; + int16_t mChange; }; /* - * Discover Attributes + * Attribute OperationMode */ -class DiscoverOperationalCredentialsAttributes : public ModelCommand +class ReadPumpConfigurationAndControlOperationMode : public ModelCommand { public: - DiscoverOperationalCredentialsAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + ReadPumpConfigurationAndControlOperationMode() : ModelCommand("read") + { + AddArgument("attr-name", "operation-mode"); + ModelCommand::AddArguments(); + } - ~DiscoverOperationalCredentialsAttributes() + ~ReadPumpConfigurationAndControlOperationMode() { delete onSuccessCallback; delete onFailureCallback; @@ -8938,33 +10981,31 @@ class DiscoverOperationalCredentialsAttributes : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::OperationalCredentialsCluster cluster; + chip::Controller::PumpConfigurationAndControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeOperationMode(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -/* - * Attribute FabricsList - */ -class ReadOperationalCredentialsFabricsList : public ModelCommand +class WritePumpConfigurationAndControlOperationMode : public ModelCommand { public: - ReadOperationalCredentialsFabricsList() : ModelCommand("read") + WritePumpConfigurationAndControlOperationMode() : ModelCommand("write") { - AddArgument("attr-name", "fabrics-list"); + AddArgument("attr-name", "operation-mode"); + AddArgument("attr-value", 0, UINT8_MAX, &mValue); ModelCommand::AddArguments(); } - ~ReadOperationalCredentialsFabricsList() + ~WritePumpConfigurationAndControlOperationMode() { delete onSuccessCallback; delete onFailureCallback; @@ -8972,34 +11013,34 @@ class ReadOperationalCredentialsFabricsList : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x003E) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::OperationalCredentialsCluster cluster; + chip::Controller::PumpConfigurationAndControlCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeFabricsList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.WriteAttributeOperationMode(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback( - OnOperationalCredentialsFabricsListListAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mValue; }; /* * Attribute ClusterRevision */ -class ReadOperationalCredentialsClusterRevision : public ModelCommand +class ReadPumpConfigurationAndControlClusterRevision : public ModelCommand { public: - ReadOperationalCredentialsClusterRevision() : ModelCommand("read") + ReadPumpConfigurationAndControlClusterRevision() : ModelCommand("read") { AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ReadOperationalCredentialsClusterRevision() + ~ReadPumpConfigurationAndControlClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -9007,9 +11048,9 @@ class ReadOperationalCredentialsClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x003E) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::OperationalCredentialsCluster cluster; + chip::Controller::PumpConfigurationAndControlCluster cluster; cluster.Associate(device, endpointId); return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } @@ -9022,30 +11063,44 @@ class ReadOperationalCredentialsClusterRevision : public ModelCommand }; /*----------------------------------------------------------------------------*\ -| Cluster PumpConfigurationAndControl | 0x0200 | +| Cluster Scenes | 0x0005 | |------------------------------------------------------------------------------| | Commands: | | +| * AddScene | 0x00 | +| * GetSceneMembership | 0x06 | +| * RecallScene | 0x05 | +| * RemoveAllScenes | 0x03 | +| * RemoveScene | 0x02 | +| * StoreScene | 0x04 | +| * ViewScene | 0x01 | |------------------------------------------------------------------------------| | Attributes: | | -| * MaxPressure | 0x0000 | -| * MaxSpeed | 0x0001 | -| * MaxFlow | 0x0002 | -| * EffectiveOperationMode | 0x0011 | -| * EffectiveControlMode | 0x0012 | -| * Capacity | 0x0013 | -| * OperationMode | 0x0020 | +| * SceneCount | 0x0000 | +| * CurrentScene | 0x0001 | +| * CurrentGroup | 0x0002 | +| * SceneValid | 0x0003 | +| * NameSupport | 0x0004 | | * ClusterRevision | 0xFFFD | \*----------------------------------------------------------------------------*/ /* - * Discover Attributes + * Command AddScene */ -class DiscoverPumpConfigurationAndControlAttributes : public ModelCommand +class ScenesAddScene : public ModelCommand { public: - DiscoverPumpConfigurationAndControlAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - - ~DiscoverPumpConfigurationAndControlAttributes() + ScenesAddScene() : ModelCommand("add-scene") + { + AddArgument("groupId", 0, UINT16_MAX, &mGroupId); + AddArgument("sceneId", 0, UINT8_MAX, &mSceneId); + AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); + AddArgument("sceneName", &mSceneName); + AddArgument("clusterId", 0, UINT16_MAX, &mClusterId); + AddArgument("length", 0, UINT8_MAX, &mLength); + AddArgument("value", 0, UINT8_MAX, &mValue); + ModelCommand::AddArguments(); + } + ~ScenesAddScene() { delete onSuccessCallback; delete onFailureCallback; @@ -9053,33 +11108,41 @@ class DiscoverPumpConfigurationAndControlAttributes : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::PumpConfigurationAndControlCluster cluster; + chip::Controller::ScenesCluster cluster; cluster.Associate(device, endpointId); - return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.AddScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mSceneId, mTransitionTime, + chip::ByteSpan(chip::Uint8::from_char(mSceneName), strlen(mSceneName)), mClusterId, mLength, + mValue); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnScenesClusterAddSceneResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mGroupId; + uint8_t mSceneId; + uint16_t mTransitionTime; + char * mSceneName; + chip::ClusterId mClusterId; + uint8_t mLength; + uint8_t mValue; }; /* - * Attribute MaxPressure + * Command GetSceneMembership */ -class ReadPumpConfigurationAndControlMaxPressure : public ModelCommand +class ScenesGetSceneMembership : public ModelCommand { public: - ReadPumpConfigurationAndControlMaxPressure() : ModelCommand("read") + ScenesGetSceneMembership() : ModelCommand("get-scene-membership") { - AddArgument("attr-name", "max-pressure"); + AddArgument("groupId", 0, UINT16_MAX, &mGroupId); ModelCommand::AddArguments(); } - - ~ReadPumpConfigurationAndControlMaxPressure() + ~ScenesGetSceneMembership() { delete onSuccessCallback; delete onFailureCallback; @@ -9087,33 +11150,36 @@ class ReadPumpConfigurationAndControlMaxPressure : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x06) on endpoint %" PRIu16, endpointId); - chip::Controller::PumpConfigurationAndControlCluster cluster; + chip::Controller::ScenesCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeMaxPressure(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.GetSceneMembership(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16sAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnScenesClusterGetSceneMembershipResponse, + this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mGroupId; }; /* - * Attribute MaxSpeed + * Command RecallScene */ -class ReadPumpConfigurationAndControlMaxSpeed : public ModelCommand +class ScenesRecallScene : public ModelCommand { public: - ReadPumpConfigurationAndControlMaxSpeed() : ModelCommand("read") + ScenesRecallScene() : ModelCommand("recall-scene") { - AddArgument("attr-name", "max-speed"); + AddArgument("groupId", 0, UINT16_MAX, &mGroupId); + AddArgument("sceneId", 0, UINT8_MAX, &mSceneId); + AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); ModelCommand::AddArguments(); } - - ~ReadPumpConfigurationAndControlMaxSpeed() + ~ScenesRecallScene() { delete onSuccessCallback; delete onFailureCallback; @@ -9121,33 +11187,70 @@ class ReadPumpConfigurationAndControlMaxSpeed : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x05) on endpoint %" PRIu16, endpointId); - chip::Controller::PumpConfigurationAndControlCluster cluster; + chip::Controller::ScenesCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeMaxSpeed(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.RecallScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mSceneId, mTransitionTime); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mGroupId; + uint8_t mSceneId; + uint16_t mTransitionTime; }; /* - * Attribute MaxFlow + * Command RemoveAllScenes */ -class ReadPumpConfigurationAndControlMaxFlow : public ModelCommand +class ScenesRemoveAllScenes : public ModelCommand { public: - ReadPumpConfigurationAndControlMaxFlow() : ModelCommand("read") + ScenesRemoveAllScenes() : ModelCommand("remove-all-scenes") { - AddArgument("attr-name", "max-flow"); + AddArgument("groupId", 0, UINT16_MAX, &mGroupId); ModelCommand::AddArguments(); } + ~ScenesRemoveAllScenes() + { + delete onSuccessCallback; + delete onFailureCallback; + } - ~ReadPumpConfigurationAndControlMaxFlow() + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x03) on endpoint %" PRIu16, endpointId); + + chip::Controller::ScenesCluster cluster; + cluster.Associate(device, endpointId); + return cluster.RemoveAllScenes(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnScenesClusterRemoveAllScenesResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mGroupId; +}; + +/* + * Command RemoveScene + */ +class ScenesRemoveScene : public ModelCommand +{ +public: + ScenesRemoveScene() : ModelCommand("remove-scene") + { + AddArgument("groupId", 0, UINT16_MAX, &mGroupId); + AddArgument("sceneId", 0, UINT8_MAX, &mSceneId); + ModelCommand::AddArguments(); + } + ~ScenesRemoveScene() { delete onSuccessCallback; delete onFailureCallback; @@ -9155,33 +11258,35 @@ class ReadPumpConfigurationAndControlMaxFlow : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x02) on endpoint %" PRIu16, endpointId); - chip::Controller::PumpConfigurationAndControlCluster cluster; + chip::Controller::ScenesCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeMaxFlow(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.RemoveScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mSceneId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnScenesClusterRemoveSceneResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mGroupId; + uint8_t mSceneId; }; /* - * Attribute EffectiveOperationMode + * Command StoreScene */ -class ReadPumpConfigurationAndControlEffectiveOperationMode : public ModelCommand +class ScenesStoreScene : public ModelCommand { public: - ReadPumpConfigurationAndControlEffectiveOperationMode() : ModelCommand("read") + ScenesStoreScene() : ModelCommand("store-scene") { - AddArgument("attr-name", "effective-operation-mode"); + AddArgument("groupId", 0, UINT16_MAX, &mGroupId); + AddArgument("sceneId", 0, UINT8_MAX, &mSceneId); ModelCommand::AddArguments(); } - - ~ReadPumpConfigurationAndControlEffectiveOperationMode() + ~ScenesStoreScene() { delete onSuccessCallback; delete onFailureCallback; @@ -9189,33 +11294,35 @@ class ReadPumpConfigurationAndControlEffectiveOperationMode : public ModelComman CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x04) on endpoint %" PRIu16, endpointId); - chip::Controller::PumpConfigurationAndControlCluster cluster; + chip::Controller::ScenesCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeEffectiveOperationMode(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.StoreScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mSceneId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnScenesClusterStoreSceneResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mGroupId; + uint8_t mSceneId; }; /* - * Attribute EffectiveControlMode + * Command ViewScene */ -class ReadPumpConfigurationAndControlEffectiveControlMode : public ModelCommand +class ScenesViewScene : public ModelCommand { public: - ReadPumpConfigurationAndControlEffectiveControlMode() : ModelCommand("read") + ScenesViewScene() : ModelCommand("view-scene") { - AddArgument("attr-name", "effective-control-mode"); + AddArgument("groupId", 0, UINT16_MAX, &mGroupId); + AddArgument("sceneId", 0, UINT8_MAX, &mSceneId); ModelCommand::AddArguments(); } - - ~ReadPumpConfigurationAndControlEffectiveControlMode() + ~ScenesViewScene() { delete onSuccessCallback; delete onFailureCallback; @@ -9223,33 +11330,31 @@ class ReadPumpConfigurationAndControlEffectiveControlMode : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::PumpConfigurationAndControlCluster cluster; + chip::Controller::ScenesCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeEffectiveControlMode(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ViewScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mSceneId); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnScenesClusterViewSceneResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mGroupId; + uint8_t mSceneId; }; /* - * Attribute Capacity + * Discover Attributes */ -class ReadPumpConfigurationAndControlCapacity : public ModelCommand +class DiscoverScenesAttributes : public ModelCommand { public: - ReadPumpConfigurationAndControlCapacity() : ModelCommand("read") - { - AddArgument("attr-name", "capacity"); - ModelCommand::AddArguments(); - } + DiscoverScenesAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - ~ReadPumpConfigurationAndControlCapacity() + ~DiscoverScenesAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -9257,81 +11362,67 @@ class ReadPumpConfigurationAndControlCapacity : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::PumpConfigurationAndControlCluster cluster; + chip::Controller::ScenesCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeCapacity(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16sAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class ReportPumpConfigurationAndControlCapacity : public ModelCommand +/* + * Attribute SceneCount + */ +class ReadScenesSceneCount : public ModelCommand { public: - ReportPumpConfigurationAndControlCapacity() : ModelCommand("report") + ReadScenesSceneCount() : ModelCommand("read") { - AddArgument("attr-name", "capacity"); - AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); - AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); - AddArgument("change", INT16_MIN, INT16_MAX, &mChange); + AddArgument("attr-name", "scene-count"); ModelCommand::AddArguments(); } - ~ReportPumpConfigurationAndControlCapacity() + ~ReadScenesSceneCount() { delete onSuccessCallback; delete onFailureCallback; - delete onReportCallback; } CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x06) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::PumpConfigurationAndControlCluster cluster; + chip::Controller::ScenesCluster cluster; cluster.Associate(device, endpointId); - - CHIP_ERROR err = cluster.ReportAttributeCapacity(onReportCallback->Cancel()); - if (err != CHIP_NO_ERROR) - { - return err; - } - - return cluster.ConfigureAttributeCapacity(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, - mMaxInterval, mChange); + return cluster.ReadAttributeSceneCount(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - chip::Callback::Callback * onReportCallback = - new chip::Callback::Callback(OnInt16sAttributeResponse, this); - uint16_t mMinInterval; - uint16_t mMaxInterval; - int16_t mChange; }; /* - * Attribute OperationMode + * Attribute CurrentScene */ -class ReadPumpConfigurationAndControlOperationMode : public ModelCommand +class ReadScenesCurrentScene : public ModelCommand { public: - ReadPumpConfigurationAndControlOperationMode() : ModelCommand("read") + ReadScenesCurrentScene() : ModelCommand("read") { - AddArgument("attr-name", "operation-mode"); + AddArgument("attr-name", "current-scene"); ModelCommand::AddArguments(); } - ~ReadPumpConfigurationAndControlOperationMode() + ~ReadScenesCurrentScene() { delete onSuccessCallback; delete onFailureCallback; @@ -9339,11 +11430,11 @@ class ReadPumpConfigurationAndControlOperationMode : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::PumpConfigurationAndControlCluster cluster; + chip::Controller::ScenesCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeOperationMode(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeCurrentScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -9353,17 +11444,19 @@ class ReadPumpConfigurationAndControlOperationMode : public ModelCommand new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class WritePumpConfigurationAndControlOperationMode : public ModelCommand +/* + * Attribute CurrentGroup + */ +class ReadScenesCurrentGroup : public ModelCommand { public: - WritePumpConfigurationAndControlOperationMode() : ModelCommand("write") + ReadScenesCurrentGroup() : ModelCommand("read") { - AddArgument("attr-name", "operation-mode"); - AddArgument("attr-value", 0, UINT8_MAX, &mValue); + AddArgument("attr-name", "current-group"); ModelCommand::AddArguments(); } - ~WritePumpConfigurationAndControlOperationMode() + ~ReadScenesCurrentGroup() { delete onSuccessCallback; delete onFailureCallback; @@ -9371,34 +11464,33 @@ class WritePumpConfigurationAndControlOperationMode : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::PumpConfigurationAndControlCluster cluster; + chip::Controller::ScenesCluster cluster; cluster.Associate(device, endpointId); - return cluster.WriteAttributeOperationMode(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mValue); + return cluster.ReadAttributeCurrentGroup(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint8_t mValue; }; /* - * Attribute ClusterRevision + * Attribute SceneValid */ -class ReadPumpConfigurationAndControlClusterRevision : public ModelCommand +class ReadScenesSceneValid : public ModelCommand { public: - ReadPumpConfigurationAndControlClusterRevision() : ModelCommand("read") + ReadScenesSceneValid() : ModelCommand("read") { - AddArgument("attr-name", "cluster-revision"); + AddArgument("attr-name", "scene-valid"); ModelCommand::AddArguments(); } - ~ReadPumpConfigurationAndControlClusterRevision() + ~ReadScenesSceneValid() { delete onSuccessCallback; delete onFailureCallback; @@ -9406,59 +11498,33 @@ class ReadPumpConfigurationAndControlClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0200) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::PumpConfigurationAndControlCluster cluster; + chip::Controller::ScenesCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeSceneValid(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnBooleanAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -/*----------------------------------------------------------------------------*\ -| Cluster Scenes | 0x0005 | -|------------------------------------------------------------------------------| -| Commands: | | -| * AddScene | 0x00 | -| * GetSceneMembership | 0x06 | -| * RecallScene | 0x05 | -| * RemoveAllScenes | 0x03 | -| * RemoveScene | 0x02 | -| * StoreScene | 0x04 | -| * ViewScene | 0x01 | -|------------------------------------------------------------------------------| -| Attributes: | | -| * SceneCount | 0x0000 | -| * CurrentScene | 0x0001 | -| * CurrentGroup | 0x0002 | -| * SceneValid | 0x0003 | -| * NameSupport | 0x0004 | -| * ClusterRevision | 0xFFFD | -\*----------------------------------------------------------------------------*/ - /* - * Command AddScene + * Attribute NameSupport */ -class ScenesAddScene : public ModelCommand +class ReadScenesNameSupport : public ModelCommand { public: - ScenesAddScene() : ModelCommand("add-scene") + ReadScenesNameSupport() : ModelCommand("read") { - AddArgument("groupId", 0, UINT16_MAX, &mGroupId); - AddArgument("sceneId", 0, UINT8_MAX, &mSceneId); - AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); - AddArgument("sceneName", &mSceneName); - AddArgument("clusterId", 0, UINT16_MAX, &mClusterId); - AddArgument("length", 0, UINT8_MAX, &mLength); - AddArgument("value", 0, UINT8_MAX, &mValue); + AddArgument("attr-name", "name-support"); ModelCommand::AddArguments(); } - ~ScenesAddScene() + + ~ReadScenesNameSupport() { delete onSuccessCallback; delete onFailureCallback; @@ -9470,37 +11536,29 @@ class ScenesAddScene : public ModelCommand chip::Controller::ScenesCluster cluster; cluster.Associate(device, endpointId); - return cluster.AddScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mSceneId, mTransitionTime, - chip::ByteSpan(chip::Uint8::from_char(mSceneName), strlen(mSceneName)), mClusterId, mLength, - mValue); + return cluster.ReadAttributeNameSupport(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnScenesClusterAddSceneResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mGroupId; - uint8_t mSceneId; - uint16_t mTransitionTime; - char * mSceneName; - chip::ClusterId mClusterId; - uint8_t mLength; - uint8_t mValue; }; /* - * Command GetSceneMembership + * Attribute ClusterRevision */ -class ScenesGetSceneMembership : public ModelCommand +class ReadScenesClusterRevision : public ModelCommand { public: - ScenesGetSceneMembership() : ModelCommand("get-scene-membership") + ReadScenesClusterRevision() : ModelCommand("read") { - AddArgument("groupId", 0, UINT16_MAX, &mGroupId); + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ScenesGetSceneMembership() + + ~ReadScenesClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -9508,36 +11566,40 @@ class ScenesGetSceneMembership : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x06) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId); chip::Controller::ScenesCluster cluster; cluster.Associate(device, endpointId); - return cluster.GetSceneMembership(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnScenesClusterGetSceneMembershipResponse, - this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mGroupId; }; +/*----------------------------------------------------------------------------*\ +| Cluster Switch | 0x003B | +|------------------------------------------------------------------------------| +| Commands: | | +|------------------------------------------------------------------------------| +| Attributes: | | +| * NumberOfPositions | 0x0000 | +| * CurrentPosition | 0x0001 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + /* - * Command RecallScene + * Discover Attributes */ -class ScenesRecallScene : public ModelCommand +class DiscoverSwitchAttributes : public ModelCommand { public: - ScenesRecallScene() : ModelCommand("recall-scene") - { - AddArgument("groupId", 0, UINT16_MAX, &mGroupId); - AddArgument("sceneId", 0, UINT8_MAX, &mSceneId); - AddArgument("transitionTime", 0, UINT16_MAX, &mTransitionTime); - ModelCommand::AddArguments(); - } - ~ScenesRecallScene() + DiscoverSwitchAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + + ~DiscoverSwitchAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -9545,11 +11607,11 @@ class ScenesRecallScene : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x05) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::ScenesCluster cluster; + chip::Controller::SwitchCluster cluster; cluster.Associate(device, endpointId); - return cluster.RecallScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mSceneId, mTransitionTime); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: @@ -9557,23 +11619,21 @@ class ScenesRecallScene : public ModelCommand new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mGroupId; - uint8_t mSceneId; - uint16_t mTransitionTime; }; /* - * Command RemoveAllScenes + * Attribute NumberOfPositions */ -class ScenesRemoveAllScenes : public ModelCommand +class ReadSwitchNumberOfPositions : public ModelCommand { public: - ScenesRemoveAllScenes() : ModelCommand("remove-all-scenes") + ReadSwitchNumberOfPositions() : ModelCommand("read") { - AddArgument("groupId", 0, UINT16_MAX, &mGroupId); + AddArgument("attr-name", "number-of-positions"); ModelCommand::AddArguments(); } - ~ScenesRemoveAllScenes() + + ~ReadSwitchNumberOfPositions() { delete onSuccessCallback; delete onFailureCallback; @@ -9581,34 +11641,33 @@ class ScenesRemoveAllScenes : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x03) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x003B) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ScenesCluster cluster; + chip::Controller::SwitchCluster cluster; cluster.Associate(device, endpointId); - return cluster.RemoveAllScenes(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId); + return cluster.ReadAttributeNumberOfPositions(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnScenesClusterRemoveAllScenesResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mGroupId; }; /* - * Command RemoveScene + * Attribute CurrentPosition */ -class ScenesRemoveScene : public ModelCommand +class ReadSwitchCurrentPosition : public ModelCommand { public: - ScenesRemoveScene() : ModelCommand("remove-scene") + ReadSwitchCurrentPosition() : ModelCommand("read") { - AddArgument("groupId", 0, UINT16_MAX, &mGroupId); - AddArgument("sceneId", 0, UINT8_MAX, &mSceneId); + AddArgument("attr-name", "current-position"); ModelCommand::AddArguments(); } - ~ScenesRemoveScene() + + ~ReadSwitchCurrentPosition() { delete onSuccessCallback; delete onFailureCallback; @@ -9616,71 +11675,81 @@ class ScenesRemoveScene : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x02) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x003B) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ScenesCluster cluster; + chip::Controller::SwitchCluster cluster; cluster.Associate(device, endpointId); - return cluster.RemoveScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mSceneId); + return cluster.ReadAttributeCurrentPosition(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnScenesClusterRemoveSceneResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mGroupId; - uint8_t mSceneId; }; -/* - * Command StoreScene - */ -class ScenesStoreScene : public ModelCommand +class ReportSwitchCurrentPosition : public ModelCommand { public: - ScenesStoreScene() : ModelCommand("store-scene") + ReportSwitchCurrentPosition() : ModelCommand("report") { - AddArgument("groupId", 0, UINT16_MAX, &mGroupId); - AddArgument("sceneId", 0, UINT8_MAX, &mSceneId); + AddArgument("attr-name", "current-position"); + AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); + AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); + AddArgument("change", 0, UINT8_MAX, &mChange); ModelCommand::AddArguments(); } - ~ScenesStoreScene() + + ~ReportSwitchCurrentPosition() { delete onSuccessCallback; delete onFailureCallback; + delete onReportCallback; } CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x04) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x003B) command (0x06) on endpoint %" PRIu16, endpointId); - chip::Controller::ScenesCluster cluster; + chip::Controller::SwitchCluster cluster; cluster.Associate(device, endpointId); - return cluster.StoreScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mSceneId); + + CHIP_ERROR err = cluster.ReportAttributeCurrentPosition(onReportCallback->Cancel()); + if (err != CHIP_NO_ERROR) + { + return err; + } + + return cluster.ConfigureAttributeCurrentPosition(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, + mMaxInterval, mChange); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnScenesClusterStoreSceneResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mGroupId; - uint8_t mSceneId; + chip::Callback::Callback * onReportCallback = + new chip::Callback::Callback(OnInt8uAttributeResponse, this); + uint16_t mMinInterval; + uint16_t mMaxInterval; + uint8_t mChange; }; /* - * Command ViewScene + * Attribute ClusterRevision */ -class ScenesViewScene : public ModelCommand +class ReadSwitchClusterRevision : public ModelCommand { public: - ScenesViewScene() : ModelCommand("view-scene") + ReadSwitchClusterRevision() : ModelCommand("read") { - AddArgument("groupId", 0, UINT16_MAX, &mGroupId); - AddArgument("sceneId", 0, UINT8_MAX, &mSceneId); + AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ScenesViewScene() + + ~ReadSwitchClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -9688,31 +11757,47 @@ class ScenesViewScene : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x01) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x003B) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ScenesCluster cluster; + chip::Controller::SwitchCluster cluster; cluster.Associate(device, endpointId); - return cluster.ViewScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mGroupId, mSceneId); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnScenesClusterViewSceneResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - uint16_t mGroupId; - uint8_t mSceneId; }; +/*----------------------------------------------------------------------------*\ +| Cluster TvChannel | 0x0504 | +|------------------------------------------------------------------------------| +| Commands: | | +| * ChangeChannel | 0x00 | +| * ChangeChannelByNumber | 0x01 | +| * SkipChannel | 0x02 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * TvChannelList | 0x0000 | +| * TvChannelLineup | 0x0001 | +| * CurrentTvChannel | 0x0002 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + /* - * Discover Attributes + * Command ChangeChannel */ -class DiscoverScenesAttributes : public ModelCommand +class TvChannelChangeChannel : public ModelCommand { public: - DiscoverScenesAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - - ~DiscoverScenesAttributes() + TvChannelChangeChannel() : ModelCommand("change-channel") + { + AddArgument("match", &mMatch); + ModelCommand::AddArguments(); + } + ~TvChannelChangeChannel() { delete onSuccessCallback; delete onFailureCallback; @@ -9720,33 +11805,35 @@ class DiscoverScenesAttributes : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0504) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ScenesCluster cluster; + chip::Controller::TvChannelCluster cluster; cluster.Associate(device, endpointId); - return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ChangeChannel(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), + chip::ByteSpan(chip::Uint8::from_char(mMatch), strlen(mMatch))); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnTvChannelClusterChangeChannelResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + char * mMatch; }; /* - * Attribute SceneCount + * Command ChangeChannelByNumber */ -class ReadScenesSceneCount : public ModelCommand +class TvChannelChangeChannelByNumber : public ModelCommand { public: - ReadScenesSceneCount() : ModelCommand("read") + TvChannelChangeChannelByNumber() : ModelCommand("change-channel-by-number") { - AddArgument("attr-name", "scene-count"); + AddArgument("majorNumber", 0, UINT16_MAX, &mMajorNumber); + AddArgument("minorNumber", 0, UINT16_MAX, &mMinorNumber); ModelCommand::AddArguments(); } - - ~ReadScenesSceneCount() + ~TvChannelChangeChannelByNumber() { delete onSuccessCallback; delete onFailureCallback; @@ -9754,33 +11841,34 @@ class ReadScenesSceneCount : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0504) command (0x01) on endpoint %" PRIu16, endpointId); - chip::Controller::ScenesCluster cluster; + chip::Controller::TvChannelCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeSceneCount(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ChangeChannelByNumber(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMajorNumber, mMinorNumber); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mMajorNumber; + uint16_t mMinorNumber; }; /* - * Attribute CurrentScene + * Command SkipChannel */ -class ReadScenesCurrentScene : public ModelCommand +class TvChannelSkipChannel : public ModelCommand { public: - ReadScenesCurrentScene() : ModelCommand("read") + TvChannelSkipChannel() : ModelCommand("skip-channel") { - AddArgument("attr-name", "current-scene"); + AddArgument("count", 0, UINT16_MAX, &mCount); ModelCommand::AddArguments(); } - - ~ReadScenesCurrentScene() + ~TvChannelSkipChannel() { delete onSuccessCallback; delete onFailureCallback; @@ -9788,33 +11876,30 @@ class ReadScenesCurrentScene : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0504) command (0x02) on endpoint %" PRIu16, endpointId); - chip::Controller::ScenesCluster cluster; + chip::Controller::TvChannelCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeCurrentScene(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.SkipChannel(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mCount); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint16_t mCount; }; /* - * Attribute CurrentGroup + * Discover Attributes */ -class ReadScenesCurrentGroup : public ModelCommand +class DiscoverTvChannelAttributes : public ModelCommand { public: - ReadScenesCurrentGroup() : ModelCommand("read") - { - AddArgument("attr-name", "current-group"); - ModelCommand::AddArguments(); - } + DiscoverTvChannelAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - ~ReadScenesCurrentGroup() + ~DiscoverTvChannelAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -9822,33 +11907,33 @@ class ReadScenesCurrentGroup : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::ScenesCluster cluster; + chip::Controller::TvChannelCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeCurrentGroup(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute SceneValid + * Attribute TvChannelList */ -class ReadScenesSceneValid : public ModelCommand +class ReadTvChannelTvChannelList : public ModelCommand { public: - ReadScenesSceneValid() : ModelCommand("read") + ReadTvChannelTvChannelList() : ModelCommand("read") { - AddArgument("attr-name", "scene-valid"); + AddArgument("attr-name", "tv-channel-list"); ModelCommand::AddArguments(); } - ~ReadScenesSceneValid() + ~ReadTvChannelTvChannelList() { delete onSuccessCallback; delete onFailureCallback; @@ -9856,33 +11941,33 @@ class ReadScenesSceneValid : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0504) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ScenesCluster cluster; + chip::Controller::TvChannelCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeSceneValid(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeTvChannelList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnBooleanAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute NameSupport + * Attribute TvChannelLineup */ -class ReadScenesNameSupport : public ModelCommand +class ReadTvChannelTvChannelLineup : public ModelCommand { public: - ReadScenesNameSupport() : ModelCommand("read") + ReadTvChannelTvChannelLineup() : ModelCommand("read") { - AddArgument("attr-name", "name-support"); + AddArgument("attr-name", "tv-channel-lineup"); ModelCommand::AddArguments(); } - ~ReadScenesNameSupport() + ~ReadTvChannelTvChannelLineup() { delete onSuccessCallback; delete onFailureCallback; @@ -9890,33 +11975,33 @@ class ReadScenesNameSupport : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0504) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ScenesCluster cluster; + chip::Controller::TvChannelCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeNameSupport(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeTvChannelLineup(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; /* - * Attribute ClusterRevision + * Attribute CurrentTvChannel */ -class ReadScenesClusterRevision : public ModelCommand +class ReadTvChannelCurrentTvChannel : public ModelCommand { public: - ReadScenesClusterRevision() : ModelCommand("read") + ReadTvChannelCurrentTvChannel() : ModelCommand("read") { - AddArgument("attr-name", "cluster-revision"); + AddArgument("attr-name", "current-tv-channel"); ModelCommand::AddArguments(); } - ~ReadScenesClusterRevision() + ~ReadTvChannelCurrentTvChannel() { delete onSuccessCallback; delete onFailureCallback; @@ -9924,40 +12009,33 @@ class ReadScenesClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0005) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0504) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::ScenesCluster cluster; + chip::Controller::TvChannelCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); - } - -private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt16uAttributeResponse, this); - chip::Callback::Callback * onFailureCallback = - new chip::Callback::Callback(OnDefaultFailureResponse, this); -}; - -/*----------------------------------------------------------------------------*\ -| Cluster Switch | 0x003B | -|------------------------------------------------------------------------------| -| Commands: | | -|------------------------------------------------------------------------------| -| Attributes: | | -| * NumberOfPositions | 0x0000 | -| * CurrentPosition | 0x0001 | -| * ClusterRevision | 0xFFFD | -\*----------------------------------------------------------------------------*/ + return cluster.ReadAttributeCurrentTvChannel(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; /* - * Discover Attributes + * Attribute ClusterRevision */ -class DiscoverSwitchAttributes : public ModelCommand +class ReadTvChannelClusterRevision : public ModelCommand { public: - DiscoverSwitchAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + ReadTvChannelClusterRevision() : ModelCommand("read") + { + AddArgument("attr-name", "cluster-revision"); + ModelCommand::AddArguments(); + } - ~DiscoverSwitchAttributes() + ~ReadTvChannelClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -9965,33 +12043,44 @@ class DiscoverSwitchAttributes : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0504) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::SwitchCluster cluster; + chip::Controller::TvChannelCluster cluster; cluster.Associate(device, endpointId); - return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; +/*----------------------------------------------------------------------------*\ +| Cluster TargetNavigator | 0x0505 | +|------------------------------------------------------------------------------| +| Commands: | | +| * NavigateTarget | 0x00 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * TargetNavigatorList | 0x0000 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + /* - * Attribute NumberOfPositions + * Command NavigateTarget */ -class ReadSwitchNumberOfPositions : public ModelCommand +class TargetNavigatorNavigateTarget : public ModelCommand { public: - ReadSwitchNumberOfPositions() : ModelCommand("read") + TargetNavigatorNavigateTarget() : ModelCommand("navigate-target") { - AddArgument("attr-name", "number-of-positions"); + AddArgument("target", 0, UINT8_MAX, &mTarget); + AddArgument("data", &mData); ModelCommand::AddArguments(); } - - ~ReadSwitchNumberOfPositions() + ~TargetNavigatorNavigateTarget() { delete onSuccessCallback; delete onFailureCallback; @@ -9999,33 +12088,33 @@ class ReadSwitchNumberOfPositions : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x003B) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0505) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::SwitchCluster cluster; + chip::Controller::TargetNavigatorCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeNumberOfPositions(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.NavigateTarget(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mTarget, + chip::ByteSpan(chip::Uint8::from_char(mData), strlen(mData))); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback( + OnTargetNavigatorClusterNavigateTargetResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); + uint8_t mTarget; + char * mData; }; /* - * Attribute CurrentPosition + * Discover Attributes */ -class ReadSwitchCurrentPosition : public ModelCommand +class DiscoverTargetNavigatorAttributes : public ModelCommand { public: - ReadSwitchCurrentPosition() : ModelCommand("read") - { - AddArgument("attr-name", "current-position"); - ModelCommand::AddArguments(); - } + DiscoverTargetNavigatorAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } - ~ReadSwitchCurrentPosition() + ~DiscoverTargetNavigatorAttributes() { delete onSuccessCallback; delete onFailureCallback; @@ -10033,81 +12122,67 @@ class ReadSwitchCurrentPosition : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x003B) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); - chip::Controller::SwitchCluster cluster; + chip::Controller::TargetNavigatorCluster cluster; cluster.Associate(device, endpointId); - return cluster.ReadAttributeCurrentPosition(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); }; -class ReportSwitchCurrentPosition : public ModelCommand +/* + * Attribute TargetNavigatorList + */ +class ReadTargetNavigatorTargetNavigatorList : public ModelCommand { public: - ReportSwitchCurrentPosition() : ModelCommand("report") + ReadTargetNavigatorTargetNavigatorList() : ModelCommand("read") { - AddArgument("attr-name", "current-position"); - AddArgument("min-interval", 0, UINT16_MAX, &mMinInterval); - AddArgument("max-interval", 0, UINT16_MAX, &mMaxInterval); - AddArgument("change", 0, UINT8_MAX, &mChange); + AddArgument("attr-name", "target-navigator-list"); ModelCommand::AddArguments(); } - ~ReportSwitchCurrentPosition() + ~ReadTargetNavigatorTargetNavigatorList() { delete onSuccessCallback; delete onFailureCallback; - delete onReportCallback; } CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x003B) command (0x06) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0505) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::SwitchCluster cluster; + chip::Controller::TargetNavigatorCluster cluster; cluster.Associate(device, endpointId); - - CHIP_ERROR err = cluster.ReportAttributeCurrentPosition(onReportCallback->Cancel()); - if (err != CHIP_NO_ERROR) - { - return err; - } - - return cluster.ConfigureAttributeCurrentPosition(onSuccessCallback->Cancel(), onFailureCallback->Cancel(), mMinInterval, - mMaxInterval, mChange); + return cluster.ReadAttributeTargetNavigatorList(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } private: - chip::Callback::Callback * onSuccessCallback = - new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); chip::Callback::Callback * onFailureCallback = new chip::Callback::Callback(OnDefaultFailureResponse, this); - chip::Callback::Callback * onReportCallback = - new chip::Callback::Callback(OnInt8uAttributeResponse, this); - uint16_t mMinInterval; - uint16_t mMaxInterval; - uint8_t mChange; }; /* * Attribute ClusterRevision */ -class ReadSwitchClusterRevision : public ModelCommand +class ReadTargetNavigatorClusterRevision : public ModelCommand { public: - ReadSwitchClusterRevision() : ModelCommand("read") + ReadTargetNavigatorClusterRevision() : ModelCommand("read") { AddArgument("attr-name", "cluster-revision"); ModelCommand::AddArguments(); } - ~ReadSwitchClusterRevision() + ~ReadTargetNavigatorClusterRevision() { delete onSuccessCallback; delete onFailureCallback; @@ -10115,9 +12190,9 @@ class ReadSwitchClusterRevision : public ModelCommand CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override { - ChipLogProgress(chipTool, "Sending cluster (0x003B) command (0x00) on endpoint %" PRIu16, endpointId); + ChipLogProgress(chipTool, "Sending cluster (0x0505) command (0x00) on endpoint %" PRIu16, endpointId); - chip::Controller::SwitchCluster cluster; + chip::Controller::TargetNavigatorCluster cluster; cluster.Associate(device, endpointId); return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); } @@ -10959,9 +13034,130 @@ class ReadThermostatClusterRevision : public ModelCommand new chip::Callback::Callback(OnDefaultFailureResponse, this); }; +/*----------------------------------------------------------------------------*\ +| Cluster WakeOnLan | 0x0503 | +|------------------------------------------------------------------------------| +| Commands: | | +|------------------------------------------------------------------------------| +| Attributes: | | +| * WakeOnLanMacAddress | 0x0000 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/* + * Discover Attributes + */ +class DiscoverWakeOnLanAttributes : public ModelCommand +{ +public: + DiscoverWakeOnLanAttributes() : ModelCommand("discover") { ModelCommand::AddArguments(); } + + ~DiscoverWakeOnLanAttributes() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0000) command (0x0C) on endpoint %" PRIu16, endpointId); + + chip::Controller::WakeOnLanCluster cluster; + cluster.Associate(device, endpointId); + return cluster.DiscoverAttributes(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnDefaultSuccessResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute WakeOnLanMacAddress + */ +class ReadWakeOnLanWakeOnLanMacAddress : public ModelCommand +{ +public: + ReadWakeOnLanWakeOnLanMacAddress() : ModelCommand("read") + { + AddArgument("attr-name", "wake-on-lan-mac-address"); + ModelCommand::AddArguments(); + } + + ~ReadWakeOnLanWakeOnLanMacAddress() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0503) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::WakeOnLanCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributeWakeOnLanMacAddress(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnStringAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + +/* + * Attribute ClusterRevision + */ +class ReadWakeOnLanClusterRevision : public ModelCommand +{ +public: + ReadWakeOnLanClusterRevision() : ModelCommand("read") + { + AddArgument("attr-name", "cluster-revision"); + ModelCommand::AddArguments(); + } + + ~ReadWakeOnLanClusterRevision() + { + delete onSuccessCallback; + delete onFailureCallback; + } + + CHIP_ERROR SendCommand(ChipDevice * device, uint8_t endpointId) override + { + ChipLogProgress(chipTool, "Sending cluster (0x0503) command (0x00) on endpoint %" PRIu16, endpointId); + + chip::Controller::WakeOnLanCluster cluster; + cluster.Associate(device, endpointId); + return cluster.ReadAttributeClusterRevision(onSuccessCallback->Cancel(), onFailureCallback->Cancel()); + } + +private: + chip::Callback::Callback * onSuccessCallback = + new chip::Callback::Callback(OnInt16uAttributeResponse, this); + chip::Callback::Callback * onFailureCallback = + new chip::Callback::Callback(OnDefaultFailureResponse, this); +}; + /*----------------------------------------------------------------------------*\ | Register all Clusters commands | \*----------------------------------------------------------------------------*/ +void registerClusterAccountLogin(Commands & commands) +{ + const char * clusterName = "AccountLogin"; + + commands_list clusterCommands = { + make_unique(), + make_unique(), + make_unique(), + make_unique(), + }; + + commands.Register(clusterName, clusterCommands); +} void registerClusterApplicationBasic(Commands & commands) { const char * clusterName = "ApplicationBasic"; @@ -10976,6 +13172,31 @@ void registerClusterApplicationBasic(Commands & commands) commands.Register(clusterName, clusterCommands); } +void registerClusterApplicationLauncher(Commands & commands) +{ + const char * clusterName = "ApplicationLauncher"; + + commands_list clusterCommands = { + make_unique(), + make_unique(), + make_unique(), + make_unique(), + }; + + commands.Register(clusterName, clusterCommands); +} +void registerClusterAudioOutput(Commands & commands) +{ + const char * clusterName = "AudioOutput"; + + commands_list clusterCommands = { + make_unique(), make_unique(), + make_unique(), make_unique(), + make_unique(), + }; + + commands.Register(clusterName, clusterCommands); +} void registerClusterBarrierControl(Commands & commands) { const char * clusterName = "BarrierControl"; @@ -11127,6 +13348,21 @@ void registerClusterColorControl(Commands & commands) commands.Register(clusterName, clusterCommands); } +void registerClusterContentLaunch(Commands & commands) +{ + const char * clusterName = "ContentLaunch"; + + commands_list clusterCommands = { + make_unique(), + make_unique(), + make_unique(), + make_unique(), + make_unique(), + make_unique(), + }; + + commands.Register(clusterName, clusterCommands); +} void registerClusterDescriptor(Commands & commands) { const char * clusterName = "Descriptor"; @@ -11233,6 +13469,18 @@ void registerClusterIdentify(Commands & commands) commands.Register(clusterName, clusterCommands); } +void registerClusterKeypadInput(Commands & commands) +{ + const char * clusterName = "KeypadInput"; + + commands_list clusterCommands = { + make_unique(), + make_unique(), + make_unique(), + }; + + commands.Register(clusterName, clusterCommands); +} void registerClusterLevelControl(Commands & commands) { const char * clusterName = "LevelControl"; @@ -11266,6 +13514,35 @@ void registerClusterLowPower(Commands & commands) commands.Register(clusterName, clusterCommands); } +void registerClusterMediaInput(Commands & commands) +{ + const char * clusterName = "MediaInput"; + + commands_list clusterCommands = { + make_unique(), make_unique(), + make_unique(), make_unique(), + make_unique(), make_unique(), + make_unique(), + }; + + commands.Register(clusterName, clusterCommands); +} +void registerClusterMediaPlayback(Commands & commands) +{ + const char * clusterName = "MediaPlayback"; + + commands_list clusterCommands = { + make_unique(), make_unique(), + make_unique(), make_unique(), + make_unique(), make_unique(), + make_unique(), make_unique(), + make_unique(), make_unique(), + make_unique(), make_unique(), + make_unique(), + }; + + commands.Register(clusterName, clusterCommands); +} void registerClusterNetworkCommissioning(Commands & commands) { const char * clusterName = "NetworkCommissioning"; @@ -11360,6 +13637,32 @@ void registerClusterSwitch(Commands & commands) commands.Register(clusterName, clusterCommands); } +void registerClusterTvChannel(Commands & commands) +{ + const char * clusterName = "TvChannel"; + + commands_list clusterCommands = { + make_unique(), make_unique(), + make_unique(), make_unique(), + make_unique(), make_unique(), + make_unique(), make_unique(), + }; + + commands.Register(clusterName, clusterCommands); +} +void registerClusterTargetNavigator(Commands & commands) +{ + const char * clusterName = "TargetNavigator"; + + commands_list clusterCommands = { + make_unique(), + make_unique(), + make_unique(), + make_unique(), + }; + + commands.Register(clusterName, clusterCommands); +} void registerClusterTemperatureMeasurement(Commands & commands) { const char * clusterName = "TemperatureMeasurement"; @@ -11398,28 +13701,50 @@ void registerClusterThermostat(Commands & commands) commands.Register(clusterName, clusterCommands); } +void registerClusterWakeOnLan(Commands & commands) +{ + const char * clusterName = "WakeOnLan"; + + commands_list clusterCommands = { + make_unique(), + make_unique(), + make_unique(), + }; + + commands.Register(clusterName, clusterCommands); +} void registerClusters(Commands & commands) { + registerClusterAccountLogin(commands); registerClusterApplicationBasic(commands); + registerClusterApplicationLauncher(commands); + registerClusterAudioOutput(commands); registerClusterBarrierControl(commands); registerClusterBasic(commands); registerClusterBinding(commands); registerClusterColorControl(commands); + registerClusterContentLaunch(commands); registerClusterDescriptor(commands); registerClusterDoorLock(commands); registerClusterGeneralCommissioning(commands); registerClusterGroupKeyManagement(commands); registerClusterGroups(commands); registerClusterIdentify(commands); + registerClusterKeypadInput(commands); registerClusterLevelControl(commands); registerClusterLowPower(commands); + registerClusterMediaInput(commands); + registerClusterMediaPlayback(commands); registerClusterNetworkCommissioning(commands); registerClusterOnOff(commands); registerClusterOperationalCredentials(commands); registerClusterPumpConfigurationAndControl(commands); registerClusterScenes(commands); registerClusterSwitch(commands); + registerClusterTvChannel(commands); + registerClusterTargetNavigator(commands); registerClusterTemperatureMeasurement(commands); registerClusterThermostat(commands); + registerClusterWakeOnLan(commands); } diff --git a/examples/chip-tool/gen/CHIPClientCallbacks.cpp b/examples/chip-tool/gen/CHIPClientCallbacks.cpp index 005ec626c44adf..029553fb5cbc71 100644 --- a/examples/chip-tool/gen/CHIPClientCallbacks.cpp +++ b/examples/chip-tool/gen/CHIPClientCallbacks.cpp @@ -869,6 +869,71 @@ bool emberAfDiscoverCommandsReceivedResponseCallback(ClusterId clusterId, uint16 return true; } +bool emberAfAccountLoginClusterGetSetupPINResponseCallback(chip::app::Command * commandObj, uint8_t * setupPIN) +{ + ChipLogProgress(Zcl, "GetSetupPINResponse:"); + ChipLogProgress(Zcl, " setupPIN: %s", setupPIN); + + GET_RESPONSE_CALLBACKS("AccountLoginClusterGetSetupPINResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, setupPIN); + return true; +} + +bool emberAfApplicationLauncherClusterLaunchAppResponseCallback(chip::app::Command * commandObj, uint8_t status, uint8_t * data) +{ + ChipLogProgress(Zcl, "LaunchAppResponse:"); + LogStatus(status); + ChipLogProgress(Zcl, " data: %s", data); + + GET_RESPONSE_CALLBACKS("ApplicationLauncherClusterLaunchAppResponseCallback"); + + if (status != EMBER_ZCL_STATUS_SUCCESS) + { + Callback::Callback * cb = + Callback::Callback::FromCancelable(onFailureCallback); + cb->mCall(cb->mContext, status); + return true; + } + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, data); + return true; +} + +bool emberAfContentLaunchClusterLaunchContentResponseCallback(chip::app::Command * commandObj, uint8_t * data, + uint8_t contentLaunchStatus) +{ + ChipLogProgress(Zcl, "LaunchContentResponse:"); + ChipLogProgress(Zcl, " data: %s", data); + ChipLogProgress(Zcl, " contentLaunchStatus: %" PRIu8 "", contentLaunchStatus); + + GET_RESPONSE_CALLBACKS("ContentLaunchClusterLaunchContentResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, data, contentLaunchStatus); + return true; +} + +bool emberAfContentLaunchClusterLaunchURLResponseCallback(chip::app::Command * commandObj, uint8_t * data, + uint8_t contentLaunchStatus) +{ + ChipLogProgress(Zcl, "LaunchURLResponse:"); + ChipLogProgress(Zcl, " data: %s", data); + ChipLogProgress(Zcl, " contentLaunchStatus: %" PRIu8 "", contentLaunchStatus); + + GET_RESPONSE_CALLBACKS("ContentLaunchClusterLaunchURLResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, data, contentLaunchStatus); + return true; +} + bool emberAfDoorLockClusterClearAllPinsResponseCallback(chip::app::Command * commandObj, uint8_t status) { ChipLogProgress(Zcl, "ClearAllPinsResponse:"); @@ -1499,6 +1564,170 @@ bool emberAfIdentifyClusterIdentifyQueryResponseCallback(chip::app::Command * co return true; } +bool emberAfKeypadInputClusterSendKeyResponseCallback(chip::app::Command * commandObj, uint8_t status) +{ + ChipLogProgress(Zcl, "SendKeyResponse:"); + LogStatus(status); + + GET_RESPONSE_CALLBACKS("KeypadInputClusterSendKeyResponseCallback"); + + if (status != EMBER_ZCL_STATUS_SUCCESS) + { + Callback::Callback * cb = + Callback::Callback::FromCancelable(onFailureCallback); + cb->mCall(cb->mContext, status); + return true; + } + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext); + return true; +} + +bool emberAfMediaPlaybackClusterMediaFastForwardResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaFastForwardResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaFastForwardResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaNextResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaNextResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaNextResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaPauseResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaPauseResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaPauseResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaPlayResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaPlayResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaPlayResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaPreviousResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaPreviousResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaPreviousResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaRewindResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaRewindResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaRewindResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaSkipBackwardResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaSkipBackwardResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaSkipBackwardResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaSkipForwardResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaSkipForwardResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaSkipForwardResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaSkipSeekResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaSkipSeekResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaSkipSeekResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaStartOverResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaStartOverResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaStartOverResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaStopResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaStopResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaStopResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + bool emberAfNetworkCommissioningClusterAddThreadNetworkResponseCallback(chip::app::Command * commandObj, uint8_t errorCode, uint8_t * debugText) { @@ -1785,6 +2014,44 @@ bool emberAfScenesClusterViewSceneResponseCallback(chip::app::Command * commandO return true; } +bool emberAfTvChannelClusterChangeChannelResponseCallback(chip::app::Command * commandObj, + /* TYPE WARNING: array array defaults to */ uint8_t * ChannelMatch, + uint8_t ErrorType) +{ + ChipLogProgress(Zcl, "ChangeChannelResponse:"); + ChipLogProgress(Zcl, " ChannelMatch: %p", ChannelMatch); + ChipLogProgress(Zcl, " ErrorType: %" PRIu8 "", ErrorType); + + GET_RESPONSE_CALLBACKS("TvChannelClusterChangeChannelResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, ChannelMatch, ErrorType); + return true; +} + +bool emberAfTargetNavigatorClusterNavigateTargetResponseCallback(chip::app::Command * commandObj, uint8_t status, uint8_t * data) +{ + ChipLogProgress(Zcl, "NavigateTargetResponse:"); + LogStatus(status); + ChipLogProgress(Zcl, " data: %s", data); + + GET_RESPONSE_CALLBACKS("TargetNavigatorClusterNavigateTargetResponseCallback"); + + if (status != EMBER_ZCL_STATUS_SUCCESS) + { + Callback::Callback * cb = + Callback::Callback::FromCancelable(onFailureCallback); + cb->mCall(cb->mContext, status); + return true; + } + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, data); + return true; +} + bool emberAfReportAttributesCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen) { ChipLogProgress(Zcl, "emberAfReportAttributeCallback:"); diff --git a/examples/chip-tool/gen/CHIPClientCallbacks.h b/examples/chip-tool/gen/CHIPClientCallbacks.h index 092e36c5fdde3c..8f56f0dbb498ab 100644 --- a/examples/chip-tool/gen/CHIPClientCallbacks.h +++ b/examples/chip-tool/gen/CHIPClientCallbacks.h @@ -40,6 +40,10 @@ typedef void (*ReadReportingConfigurationReportedCallback)(void * context, uint1 typedef void (*ReadReportingConfigurationReceivedCallback)(void * context, uint16_t timeout); // Cluster Specific Response Callbacks +typedef void (*AccountLoginClusterGetSetupPINResponseCallback)(void * context, uint8_t * setupPIN); +typedef void (*ApplicationLauncherClusterLaunchAppResponseCallback)(void * context, uint8_t * data); +typedef void (*ContentLaunchClusterLaunchContentResponseCallback)(void * context, uint8_t * data, uint8_t contentLaunchStatus); +typedef void (*ContentLaunchClusterLaunchURLResponseCallback)(void * context, uint8_t * data, uint8_t contentLaunchStatus); typedef void (*DoorLockClusterClearAllPinsResponseCallback)(void * context); typedef void (*DoorLockClusterClearAllRfidsResponseCallback)(void * context); typedef void (*DoorLockClusterClearHolidayScheduleResponseCallback)(void * context); @@ -82,6 +86,18 @@ typedef void (*GroupsClusterGetGroupMembershipResponseCallback)(void * context, typedef void (*GroupsClusterRemoveGroupResponseCallback)(void * context, uint16_t groupId); typedef void (*GroupsClusterViewGroupResponseCallback)(void * context, uint16_t groupId, uint8_t * groupName); typedef void (*IdentifyClusterIdentifyQueryResponseCallback)(void * context, uint16_t timeout); +typedef void (*KeypadInputClusterSendKeyResponseCallback)(void * context); +typedef void (*MediaPlaybackClusterMediaFastForwardResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaNextResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaPauseResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaPlayResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaPreviousResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaRewindResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaSkipBackwardResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaSkipForwardResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaSkipSeekResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaStartOverResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaStopResponseCallback)(void * context, uint8_t mediaPlaybackStatus); typedef void (*NetworkCommissioningClusterAddThreadNetworkResponseCallback)(void * context, uint8_t errorCode, uint8_t * debugText); typedef void (*NetworkCommissioningClusterAddWiFiNetworkResponseCallback)(void * context, uint8_t errorCode, uint8_t * debugText); typedef void (*NetworkCommissioningClusterDisableNetworkResponseCallback)(void * context, uint8_t errorCode, uint8_t * debugText); @@ -105,6 +121,10 @@ typedef void (*ScenesClusterStoreSceneResponseCallback)(void * context, uint16_t typedef void (*ScenesClusterViewSceneResponseCallback)(void * context, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime, uint8_t * sceneName, /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets); +typedef void (*TvChannelClusterChangeChannelResponseCallback)(void * context, + /* TYPE WARNING: array array defaults to */ uint8_t * ChannelMatch, + uint8_t ErrorType); +typedef void (*TargetNavigatorClusterNavigateTargetResponseCallback)(void * context, uint8_t * data); typedef void (*ThermostatClusterCurrentWeeklyScheduleCallback)(void * context, uint8_t numberOfTransitionsForSequence, uint8_t dayOfWeekForSequence, uint8_t modeForSequence, /* TYPE WARNING: array array defaults to */ uint8_t * payload); diff --git a/examples/chip-tool/gen/CHIPClusters.cpp b/examples/chip-tool/gen/CHIPClusters.cpp index a5db71393871a4..bf5576722bee36 100644 --- a/examples/chip-tool/gen/CHIPClusters.cpp +++ b/examples/chip-tool/gen/CHIPClusters.cpp @@ -30,6 +30,85 @@ namespace Controller { // TODO(#4503): length should be passed to commands when byte string is in argument list. // TODO(#4503): Commands should take group id as an argument. +// AccountLogin Cluster Commands +CHIP_ERROR AccountLoginCluster::GetSetupPIN(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan tempAccountIdentifier) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kGetSetupPINCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // tempAccountIdentifier: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), tempAccountIdentifier)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeAccountLoginClusterGetSetupPINCommand(seqNum, mEndpoint, tempAccountIdentifier); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR AccountLoginCluster::Login(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan tempAccountIdentifier, chip::ByteSpan setupPIN) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kLoginCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // tempAccountIdentifier: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), tempAccountIdentifier)); + // setupPIN: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), setupPIN)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeAccountLoginClusterLoginCommand(seqNum, mEndpoint, tempAccountIdentifier, setupPIN); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// AccountLogin Cluster Attributes +CHIP_ERROR AccountLoginCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeAccountLoginClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR AccountLoginCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeAccountLoginClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + // ApplicationBasic Cluster Commands // ApplicationBasic Cluster Attributes CHIP_ERROR ApplicationBasicCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, @@ -103,6 +182,151 @@ CHIP_ERROR ApplicationBasicCluster::ReadAttributeClusterRevision(Callback::Cance return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); } +// ApplicationLauncher Cluster Commands +CHIP_ERROR ApplicationLauncherCluster::LaunchApp(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan data, uint16_t catalogVendorId, chip::ByteSpan applicationId) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kLaunchAppCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // data: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), data)); + // catalogVendorId: int16u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), catalogVendorId)); + // applicationId: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), applicationId)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeApplicationLauncherClusterLaunchAppCommand(seqNum, mEndpoint, data, catalogVendorId, applicationId); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// ApplicationLauncher Cluster Attributes +CHIP_ERROR ApplicationLauncherCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeApplicationLauncherClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR ApplicationLauncherCluster::ReadAttributeApplicationLauncherList(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeApplicationLauncherClusterReadApplicationLauncherListAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR ApplicationLauncherCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeApplicationLauncherClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +// AudioOutput Cluster Commands +CHIP_ERROR AudioOutputCluster::RenameOutput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t index, chip::ByteSpan name) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kRenameOutputCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // index: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), index)); + // name: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), name)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeAudioOutputClusterRenameOutputCommand(seqNum, mEndpoint, index, name); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR AudioOutputCluster::SelectOutput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t index) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kSelectOutputCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // index: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), index)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeAudioOutputClusterSelectOutputCommand(seqNum, mEndpoint, index); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// AudioOutput Cluster Attributes +CHIP_ERROR AudioOutputCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeAudioOutputClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR AudioOutputCluster::ReadAttributeAudioOutputList(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeAudioOutputClusterReadAudioOutputListAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR AudioOutputCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeAudioOutputClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + // BarrierControl Cluster Commands CHIP_ERROR BarrierControlCluster::BarrierControlGoToPercent(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t percentOpen) @@ -1630,6 +1854,102 @@ CHIP_ERROR ColorControlCluster::ReadAttributeClusterRevision(Callback::Cancelabl return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); } +// ContentLaunch Cluster Commands +CHIP_ERROR ContentLaunchCluster::LaunchContent(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t autoPlay, chip::ByteSpan data) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kLaunchContentCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // autoPlay: boolean + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), autoPlay)); + // data: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), data)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeContentLaunchClusterLaunchContentCommand(seqNum, mEndpoint, autoPlay, data); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR ContentLaunchCluster::LaunchURL(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan contentURL, chip::ByteSpan displayString) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kLaunchURLCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // contentURL: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), contentURL)); + // displayString: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), displayString)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeContentLaunchClusterLaunchURLCommand(seqNum, mEndpoint, contentURL, displayString); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// ContentLaunch Cluster Attributes +CHIP_ERROR ContentLaunchCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeContentLaunchClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR ContentLaunchCluster::ReadAttributeAcceptsHeaderList(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeContentLaunchClusterReadAcceptsHeaderListAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR ContentLaunchCluster::ReadAttributeSupportedStreamingTypes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeContentLaunchClusterReadSupportedStreamingTypesAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR ContentLaunchCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeContentLaunchClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + // Descriptor Cluster Commands // Descriptor Cluster Attributes CHIP_ERROR DescriptorCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) @@ -2912,16 +3232,16 @@ CHIP_ERROR IdentifyCluster::ReadAttributeClusterRevision(Callback::Cancelable * return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); } -// LevelControl Cluster Commands -CHIP_ERROR LevelControlCluster::Move(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, - uint8_t moveMode, uint8_t rate, uint8_t optionMask, uint8_t optionOverride) +// KeypadInput Cluster Commands +CHIP_ERROR KeypadInputCluster::SendKey(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t keyCode) { #if CHIP_ENABLE_INTERACTION_MODEL VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); (void) onSuccessCallback; (void) onFailureCallback; - app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMoveCommandId, + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kSendKeyCommandId, (chip::app::CommandPathFlags::kEndpointIdValid) }; app::Command * ZCLcommand = mDevice->GetCommandSender(); @@ -2929,32 +3249,78 @@ CHIP_ERROR LevelControlCluster::Move(Callback::Cancelable * onSuccessCallback, C TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); uint8_t argSeqNumber = 0; - // moveMode: moveMode - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), moveMode)); - // rate: int8u - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), rate)); - // optionMask: bitmap8 - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionMask)); - // optionOverride: bitmap8 - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionOverride)); + // keyCode: keypadInputCecKeyCode + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), keyCode)); ReturnErrorOnFailure(ZCLcommand->FinishCommand()); return mDevice->SendCommands(); #else - uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = - encodeLevelControlClusterMoveCommand(seqNum, mEndpoint, moveMode, rate, optionMask, optionOverride); + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeKeypadInputClusterSendKeyCommand(seqNum, mEndpoint, keyCode); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -CHIP_ERROR LevelControlCluster::MoveToLevel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, - uint8_t level, uint16_t transitionTime, uint8_t optionMask, uint8_t optionOverride) +// KeypadInput Cluster Attributes +CHIP_ERROR KeypadInputCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) { -#if CHIP_ENABLE_INTERACTION_MODEL - VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); - (void) onSuccessCallback; + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeKeypadInputClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR KeypadInputCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeKeypadInputClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +// LevelControl Cluster Commands +CHIP_ERROR LevelControlCluster::Move(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t moveMode, uint8_t rate, uint8_t optionMask, uint8_t optionOverride) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMoveCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // moveMode: moveMode + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), moveMode)); + // rate: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), rate)); + // optionMask: bitmap8 + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionMask)); + // optionOverride: bitmap8 + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionOverride)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeLevelControlClusterMoveCommand(seqNum, mEndpoint, moveMode, rate, optionMask, optionOverride); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR LevelControlCluster::MoveToLevel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t level, uint16_t transitionTime, uint8_t optionMask, uint8_t optionOverride) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; (void) onFailureCallback; app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMoveToLevelCommandId, @@ -3011,54 +3377,548 @@ CHIP_ERROR LevelControlCluster::MoveToLevelWithOnOff(Callback::Cancelable * onSu return mDevice->SendCommands(); #else - uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = - encodeLevelControlClusterMoveToLevelWithOnOffCommand(seqNum, mEndpoint, level, transitionTime); + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeLevelControlClusterMoveToLevelWithOnOffCommand(seqNum, mEndpoint, level, transitionTime); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR LevelControlCluster::MoveWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t moveMode, uint8_t rate) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMoveWithOnOffCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // moveMode: moveMode + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), moveMode)); + // rate: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), rate)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLevelControlClusterMoveWithOnOffCommand(seqNum, mEndpoint, moveMode, rate); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR LevelControlCluster::Step(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t stepMode, uint8_t stepSize, uint16_t transitionTime, uint8_t optionMask, + uint8_t optionOverride) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStepCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // stepMode: stepMode + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepMode)); + // stepSize: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepSize)); + // transitionTime: int16u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), transitionTime)); + // optionMask: bitmap8 + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionMask)); + // optionOverride: bitmap8 + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionOverride)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeLevelControlClusterStepCommand(seqNum, mEndpoint, stepMode, stepSize, transitionTime, optionMask, optionOverride); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR LevelControlCluster::StepWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t stepMode, uint8_t stepSize, uint16_t transitionTime) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStepWithOnOffCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // stepMode: stepMode + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepMode)); + // stepSize: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepSize)); + // transitionTime: int16u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), transitionTime)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeLevelControlClusterStepWithOnOffCommand(seqNum, mEndpoint, stepMode, stepSize, transitionTime); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR LevelControlCluster::Stop(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t optionMask, uint8_t optionOverride) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStopCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // optionMask: bitmap8 + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionMask)); + // optionOverride: bitmap8 + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionOverride)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLevelControlClusterStopCommand(seqNum, mEndpoint, optionMask, optionOverride); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR LevelControlCluster::StopWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStopWithOnOffCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLevelControlClusterStopWithOnOffCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// LevelControl Cluster Attributes +CHIP_ERROR LevelControlCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLevelControlClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR LevelControlCluster::ReadAttributeCurrentLevel(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLevelControlClusterReadCurrentLevelAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR LevelControlCluster::ConfigureAttributeCurrentLevel(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback, uint16_t minInterval, + uint16_t maxInterval, uint8_t change) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeLevelControlClusterConfigureCurrentLevelAttribute(seqNum, mEndpoint, minInterval, maxInterval, change); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR LevelControlCluster::ReportAttributeCurrentLevel(Callback::Cancelable * onReportCallback) +{ + return RequestAttributeReporting(0x0000, onReportCallback); +} + +CHIP_ERROR LevelControlCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLevelControlClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +// LowPower Cluster Commands +CHIP_ERROR LowPowerCluster::Sleep(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kSleepCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLowPowerClusterSleepCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// LowPower Cluster Attributes +CHIP_ERROR LowPowerCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLowPowerClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR LowPowerCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLowPowerClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +// MediaInput Cluster Commands +CHIP_ERROR MediaInputCluster::HideInputStatus(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kHideInputStatusCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaInputClusterHideInputStatusCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR MediaInputCluster::RenameInput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t index, chip::ByteSpan name) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kRenameInputCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // index: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), index)); + // name: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), name)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaInputClusterRenameInputCommand(seqNum, mEndpoint, index, name); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR MediaInputCluster::SelectInput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t index) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kSelectInputCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // index: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), index)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaInputClusterSelectInputCommand(seqNum, mEndpoint, index); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR MediaInputCluster::ShowInputStatus(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kShowInputStatusCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaInputClusterShowInputStatusCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// MediaInput Cluster Attributes +CHIP_ERROR MediaInputCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaInputClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR MediaInputCluster::ReadAttributeMediaInputList(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaInputClusterReadMediaInputListAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR MediaInputCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaInputClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +// MediaPlayback Cluster Commands +CHIP_ERROR MediaPlaybackCluster::MediaFastForward(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaFastForwardCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaFastForwardCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR MediaPlaybackCluster::MediaNext(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaNextCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaNextCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR MediaPlaybackCluster::MediaPause(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaPauseCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaPauseCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR MediaPlaybackCluster::MediaPlay(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaPlayCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaPlayCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR MediaPlaybackCluster::MediaPrevious(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaPreviousCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaPreviousCommand(seqNum, mEndpoint); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -CHIP_ERROR LevelControlCluster::MoveWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, - uint8_t moveMode, uint8_t rate) +CHIP_ERROR MediaPlaybackCluster::MediaRewind(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) { #if CHIP_ENABLE_INTERACTION_MODEL VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); (void) onSuccessCallback; (void) onFailureCallback; - app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMoveWithOnOffCommandId, + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaRewindCommandId, (chip::app::CommandPathFlags::kEndpointIdValid) }; app::Command * ZCLcommand = mDevice->GetCommandSender(); ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); - TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); - uint8_t argSeqNumber = 0; - // moveMode: moveMode - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), moveMode)); - // rate: int8u - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), rate)); + // Command takes no arguments. ReturnErrorOnFailure(ZCLcommand->FinishCommand()); return mDevice->SendCommands(); #else uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLevelControlClusterMoveWithOnOffCommand(seqNum, mEndpoint, moveMode, rate); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaRewindCommand(seqNum, mEndpoint); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -CHIP_ERROR LevelControlCluster::Step(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, - uint8_t stepMode, uint8_t stepSize, uint16_t transitionTime, uint8_t optionMask, - uint8_t optionOverride) +CHIP_ERROR MediaPlaybackCluster::MediaSkipBackward(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback, uint64_t deltaPositionMilliseconds) { #if CHIP_ENABLE_INTERACTION_MODEL VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); (void) onSuccessCallback; (void) onFailureCallback; - app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStepCommandId, + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaSkipBackwardCommandId, (chip::app::CommandPathFlags::kEndpointIdValid) }; app::Command * ZCLcommand = mDevice->GetCommandSender(); @@ -3066,16 +3926,8 @@ CHIP_ERROR LevelControlCluster::Step(Callback::Cancelable * onSuccessCallback, C TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); uint8_t argSeqNumber = 0; - // stepMode: stepMode - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepMode)); - // stepSize: int8u - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepSize)); - // transitionTime: int16u - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), transitionTime)); - // optionMask: bitmap8 - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionMask)); - // optionOverride: bitmap8 - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionOverride)); + // deltaPositionMilliseconds: int64u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), deltaPositionMilliseconds)); ReturnErrorOnFailure(ZCLcommand->FinishCommand()); @@ -3083,20 +3935,20 @@ CHIP_ERROR LevelControlCluster::Step(Callback::Cancelable * onSuccessCallback, C #else uint8_t seqNum = mDevice->GetNextSequenceNumber(); System::PacketBufferHandle encodedCommand = - encodeLevelControlClusterStepCommand(seqNum, mEndpoint, stepMode, stepSize, transitionTime, optionMask, optionOverride); + encodeMediaPlaybackClusterMediaSkipBackwardCommand(seqNum, mEndpoint, deltaPositionMilliseconds); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -CHIP_ERROR LevelControlCluster::StepWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, - uint8_t stepMode, uint8_t stepSize, uint16_t transitionTime) +CHIP_ERROR MediaPlaybackCluster::MediaSkipForward(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback, uint64_t deltaPositionMilliseconds) { #if CHIP_ENABLE_INTERACTION_MODEL VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); (void) onSuccessCallback; (void) onFailureCallback; - app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStepWithOnOffCommandId, + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaSkipForwardCommandId, (chip::app::CommandPathFlags::kEndpointIdValid) }; app::Command * ZCLcommand = mDevice->GetCommandSender(); @@ -3104,12 +3956,8 @@ CHIP_ERROR LevelControlCluster::StepWithOnOff(Callback::Cancelable * onSuccessCa TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); uint8_t argSeqNumber = 0; - // stepMode: stepMode - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepMode)); - // stepSize: int8u - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepSize)); - // transitionTime: int16u - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), transitionTime)); + // deltaPositionMilliseconds: int64u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), deltaPositionMilliseconds)); ReturnErrorOnFailure(ZCLcommand->FinishCommand()); @@ -3117,20 +3965,20 @@ CHIP_ERROR LevelControlCluster::StepWithOnOff(Callback::Cancelable * onSuccessCa #else uint8_t seqNum = mDevice->GetNextSequenceNumber(); System::PacketBufferHandle encodedCommand = - encodeLevelControlClusterStepWithOnOffCommand(seqNum, mEndpoint, stepMode, stepSize, transitionTime); + encodeMediaPlaybackClusterMediaSkipForwardCommand(seqNum, mEndpoint, deltaPositionMilliseconds); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -CHIP_ERROR LevelControlCluster::Stop(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, - uint8_t optionMask, uint8_t optionOverride) +CHIP_ERROR MediaPlaybackCluster::MediaSkipSeek(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint64_t position) { #if CHIP_ENABLE_INTERACTION_MODEL VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); (void) onSuccessCallback; (void) onFailureCallback; - app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStopCommandId, + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaSkipSeekCommandId, (chip::app::CommandPathFlags::kEndpointIdValid) }; app::Command * ZCLcommand = mDevice->GetCommandSender(); @@ -3138,29 +3986,27 @@ CHIP_ERROR LevelControlCluster::Stop(Callback::Cancelable * onSuccessCallback, C TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); uint8_t argSeqNumber = 0; - // optionMask: bitmap8 - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionMask)); - // optionOverride: bitmap8 - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionOverride)); + // position: int64u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), position)); ReturnErrorOnFailure(ZCLcommand->FinishCommand()); return mDevice->SendCommands(); #else uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLevelControlClusterStopCommand(seqNum, mEndpoint, optionMask, optionOverride); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaSkipSeekCommand(seqNum, mEndpoint, position); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -CHIP_ERROR LevelControlCluster::StopWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +CHIP_ERROR MediaPlaybackCluster::MediaStartOver(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) { #if CHIP_ENABLE_INTERACTION_MODEL VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); (void) onSuccessCallback; (void) onFailureCallback; - app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStopWithOnOffCommandId, + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaStartOverCommandId, (chip::app::CommandPathFlags::kEndpointIdValid) }; app::Command * ZCLcommand = mDevice->GetCommandSender(); @@ -3173,59 +4019,19 @@ CHIP_ERROR LevelControlCluster::StopWithOnOff(Callback::Cancelable * onSuccessCa return mDevice->SendCommands(); #else uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLevelControlClusterStopWithOnOffCommand(seqNum, mEndpoint); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaStartOverCommand(seqNum, mEndpoint); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -// LevelControl Cluster Attributes -CHIP_ERROR LevelControlCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, - Callback::Cancelable * onFailureCallback) -{ - uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLevelControlClusterDiscoverAttributes(seqNum, mEndpoint); - return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); -} -CHIP_ERROR LevelControlCluster::ReadAttributeCurrentLevel(Callback::Cancelable * onSuccessCallback, - Callback::Cancelable * onFailureCallback) -{ - uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLevelControlClusterReadCurrentLevelAttribute(seqNum, mEndpoint); - return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); -} - -CHIP_ERROR LevelControlCluster::ConfigureAttributeCurrentLevel(Callback::Cancelable * onSuccessCallback, - Callback::Cancelable * onFailureCallback, uint16_t minInterval, - uint16_t maxInterval, uint8_t change) -{ - uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = - encodeLevelControlClusterConfigureCurrentLevelAttribute(seqNum, mEndpoint, minInterval, maxInterval, change); - return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); -} - -CHIP_ERROR LevelControlCluster::ReportAttributeCurrentLevel(Callback::Cancelable * onReportCallback) -{ - return RequestAttributeReporting(0x0000, onReportCallback); -} - -CHIP_ERROR LevelControlCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, - Callback::Cancelable * onFailureCallback) -{ - uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLevelControlClusterReadClusterRevisionAttribute(seqNum, mEndpoint); - return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); -} - -// LowPower Cluster Commands -CHIP_ERROR LowPowerCluster::Sleep(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +CHIP_ERROR MediaPlaybackCluster::MediaStop(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) { #if CHIP_ENABLE_INTERACTION_MODEL VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); (void) onSuccessCallback; (void) onFailureCallback; - app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kSleepCommandId, + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaStopCommandId, (chip::app::CommandPathFlags::kEndpointIdValid) }; app::Command * ZCLcommand = mDevice->GetCommandSender(); @@ -3238,23 +4044,24 @@ CHIP_ERROR LowPowerCluster::Sleep(Callback::Cancelable * onSuccessCallback, Call return mDevice->SendCommands(); #else uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLowPowerClusterSleepCommand(seqNum, mEndpoint); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaStopCommand(seqNum, mEndpoint); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -// LowPower Cluster Attributes -CHIP_ERROR LowPowerCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +// MediaPlayback Cluster Attributes +CHIP_ERROR MediaPlaybackCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) { uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLowPowerClusterDiscoverAttributes(seqNum, mEndpoint); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterDiscoverAttributes(seqNum, mEndpoint); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); } -CHIP_ERROR LowPowerCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, - Callback::Cancelable * onFailureCallback) +CHIP_ERROR MediaPlaybackCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) { uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLowPowerClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterReadClusterRevisionAttribute(seqNum, mEndpoint); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); } @@ -4252,6 +5059,193 @@ CHIP_ERROR SwitchCluster::ReadAttributeClusterRevision(Callback::Cancelable * on return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); } +// TvChannel Cluster Commands +CHIP_ERROR TvChannelCluster::ChangeChannel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan match) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kChangeChannelCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // match: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), match)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTvChannelClusterChangeChannelCommand(seqNum, mEndpoint, match); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR TvChannelCluster::ChangeChannelByNumber(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback, uint16_t majorNumber, + uint16_t minorNumber) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kChangeChannelByNumberCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // majorNumber: int16u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), majorNumber)); + // minorNumber: int16u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), minorNumber)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeTvChannelClusterChangeChannelByNumberCommand(seqNum, mEndpoint, majorNumber, minorNumber); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR TvChannelCluster::SkipChannel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint16_t count) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kSkipChannelCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // count: int16u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), count)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTvChannelClusterSkipChannelCommand(seqNum, mEndpoint, count); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// TvChannel Cluster Attributes +CHIP_ERROR TvChannelCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTvChannelClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR TvChannelCluster::ReadAttributeTvChannelList(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTvChannelClusterReadTvChannelListAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR TvChannelCluster::ReadAttributeTvChannelLineup(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTvChannelClusterReadTvChannelLineupAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR TvChannelCluster::ReadAttributeCurrentTvChannel(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTvChannelClusterReadCurrentTvChannelAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR TvChannelCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTvChannelClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +// TargetNavigator Cluster Commands +CHIP_ERROR TargetNavigatorCluster::NavigateTarget(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback, uint8_t target, chip::ByteSpan data) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kNavigateTargetCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // target: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), target)); + // data: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), data)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTargetNavigatorClusterNavigateTargetCommand(seqNum, mEndpoint, target, data); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// TargetNavigator Cluster Attributes +CHIP_ERROR TargetNavigatorCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTargetNavigatorClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR TargetNavigatorCluster::ReadAttributeTargetNavigatorList(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTargetNavigatorClusterReadTargetNavigatorListAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR TargetNavigatorCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTargetNavigatorClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + // TemperatureMeasurement Cluster Commands // TemperatureMeasurement Cluster Attributes CHIP_ERROR TemperatureMeasurementCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, @@ -4566,5 +5560,29 @@ CHIP_ERROR ThermostatCluster::ReadAttributeClusterRevision(Callback::Cancelable return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); } +// WakeOnLan Cluster Commands +// WakeOnLan Cluster Attributes +CHIP_ERROR WakeOnLanCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeWakeOnLanClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR WakeOnLanCluster::ReadAttributeWakeOnLanMacAddress(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeWakeOnLanClusterReadWakeOnLanMacAddressAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR WakeOnLanCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeWakeOnLanClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + } // namespace Controller } // namespace chip diff --git a/examples/chip-tool/gen/CHIPClusters.h b/examples/chip-tool/gen/CHIPClusters.h index 751c92ab71403b..aced89e986465a 100644 --- a/examples/chip-tool/gen/CHIPClusters.h +++ b/examples/chip-tool/gen/CHIPClusters.h @@ -27,27 +27,58 @@ namespace chip { namespace Controller { +constexpr ClusterId kAccountLoginClusterId = 0x050E; constexpr ClusterId kApplicationBasicClusterId = 0x050D; +constexpr ClusterId kApplicationLauncherClusterId = 0x050C; +constexpr ClusterId kAudioOutputClusterId = 0x050B; constexpr ClusterId kBarrierControlClusterId = 0x0103; constexpr ClusterId kBasicClusterId = 0x0028; constexpr ClusterId kBindingClusterId = 0xF000; constexpr ClusterId kColorControlClusterId = 0x0300; +constexpr ClusterId kContentLaunchClusterId = 0x050A; constexpr ClusterId kDescriptorClusterId = 0x001D; constexpr ClusterId kDoorLockClusterId = 0x0101; constexpr ClusterId kGeneralCommissioningClusterId = 0x0030; constexpr ClusterId kGroupKeyManagementClusterId = 0xF004; constexpr ClusterId kGroupsClusterId = 0x0004; constexpr ClusterId kIdentifyClusterId = 0x0003; +constexpr ClusterId kKeypadInputClusterId = 0x0509; constexpr ClusterId kLevelControlClusterId = 0x0008; constexpr ClusterId kLowPowerClusterId = 0x0508; +constexpr ClusterId kMediaInputClusterId = 0x0507; +constexpr ClusterId kMediaPlaybackClusterId = 0x0506; constexpr ClusterId kNetworkCommissioningClusterId = 0x0031; constexpr ClusterId kOnOffClusterId = 0x0006; constexpr ClusterId kOperationalCredentialsClusterId = 0x003E; constexpr ClusterId kPumpConfigurationAndControlClusterId = 0x0200; constexpr ClusterId kScenesClusterId = 0x0005; constexpr ClusterId kSwitchClusterId = 0x003B; +constexpr ClusterId kTvChannelClusterId = 0x0504; +constexpr ClusterId kTargetNavigatorClusterId = 0x0505; constexpr ClusterId kTemperatureMeasurementClusterId = 0x0402; constexpr ClusterId kThermostatClusterId = 0x0201; +constexpr ClusterId kWakeOnLanClusterId = 0x0503; + +class DLL_EXPORT AccountLoginCluster : public ClusterBase +{ +public: + AccountLoginCluster() : ClusterBase(kAccountLoginClusterId) {} + ~AccountLoginCluster() {} + + // Cluster Commands + CHIP_ERROR GetSetupPIN(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan tempAccountIdentifier); + CHIP_ERROR Login(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan tempAccountIdentifier, chip::ByteSpan setupPIN); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kGetSetupPINCommandId = 0x00; + static constexpr CommandId kLoginCommandId = 0x01; +}; class DLL_EXPORT ApplicationBasicCluster : public ClusterBase { @@ -67,6 +98,47 @@ class DLL_EXPORT ApplicationBasicCluster : public ClusterBase CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); }; +class DLL_EXPORT ApplicationLauncherCluster : public ClusterBase +{ +public: + ApplicationLauncherCluster() : ClusterBase(kApplicationLauncherClusterId) {} + ~ApplicationLauncherCluster() {} + + // Cluster Commands + CHIP_ERROR LaunchApp(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, chip::ByteSpan data, + uint16_t catalogVendorId, chip::ByteSpan applicationId); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeApplicationLauncherList(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kLaunchAppCommandId = 0x00; +}; + +class DLL_EXPORT AudioOutputCluster : public ClusterBase +{ +public: + AudioOutputCluster() : ClusterBase(kAudioOutputClusterId) {} + ~AudioOutputCluster() {} + + // Cluster Commands + CHIP_ERROR RenameOutput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t index, + chip::ByteSpan name); + CHIP_ERROR SelectOutput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t index); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeAudioOutputList(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kRenameOutputCommandId = 0x01; + static constexpr CommandId kSelectOutputCommandId = 0x00; +}; + class DLL_EXPORT BarrierControlCluster : public ClusterBase { public: @@ -316,6 +388,30 @@ class DLL_EXPORT ColorControlCluster : public ClusterBase static constexpr CommandId kStopMoveStepCommandId = 0x47; }; +class DLL_EXPORT ContentLaunchCluster : public ClusterBase +{ +public: + ContentLaunchCluster() : ClusterBase(kContentLaunchClusterId) {} + ~ContentLaunchCluster() {} + + // Cluster Commands + CHIP_ERROR LaunchContent(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t autoPlay, + chip::ByteSpan data); + CHIP_ERROR LaunchURL(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan contentURL, chip::ByteSpan displayString); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeAcceptsHeaderList(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeSupportedStreamingTypes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kLaunchContentCommandId = 0x00; + static constexpr CommandId kLaunchURLCommandId = 0x01; +}; + class DLL_EXPORT DescriptorCluster : public ClusterBase { public: @@ -506,6 +602,23 @@ class DLL_EXPORT IdentifyCluster : public ClusterBase static constexpr CommandId kIdentifyQueryCommandId = 0x01; }; +class DLL_EXPORT KeypadInputCluster : public ClusterBase +{ +public: + KeypadInputCluster() : ClusterBase(kKeypadInputClusterId) {} + ~KeypadInputCluster() {} + + // Cluster Commands + CHIP_ERROR SendKey(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t keyCode); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kSendKeyCommandId = 0x00; +}; + class DLL_EXPORT LevelControlCluster : public ClusterBase { public: @@ -565,6 +678,70 @@ class DLL_EXPORT LowPowerCluster : public ClusterBase static constexpr CommandId kSleepCommandId = 0x00; }; +class DLL_EXPORT MediaInputCluster : public ClusterBase +{ +public: + MediaInputCluster() : ClusterBase(kMediaInputClusterId) {} + ~MediaInputCluster() {} + + // Cluster Commands + CHIP_ERROR HideInputStatus(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR RenameInput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t index, + chip::ByteSpan name); + CHIP_ERROR SelectInput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t index); + CHIP_ERROR ShowInputStatus(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeMediaInputList(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kHideInputStatusCommandId = 0x02; + static constexpr CommandId kRenameInputCommandId = 0x03; + static constexpr CommandId kSelectInputCommandId = 0x00; + static constexpr CommandId kShowInputStatusCommandId = 0x01; +}; + +class DLL_EXPORT MediaPlaybackCluster : public ClusterBase +{ +public: + MediaPlaybackCluster() : ClusterBase(kMediaPlaybackClusterId) {} + ~MediaPlaybackCluster() {} + + // Cluster Commands + CHIP_ERROR MediaFastForward(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR MediaNext(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR MediaPause(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR MediaPlay(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR MediaPrevious(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR MediaRewind(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR MediaSkipBackward(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint64_t deltaPositionMilliseconds); + CHIP_ERROR MediaSkipForward(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint64_t deltaPositionMilliseconds); + CHIP_ERROR MediaSkipSeek(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint64_t position); + CHIP_ERROR MediaStartOver(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR MediaStop(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kMediaFastForwardCommandId = 0x07; + static constexpr CommandId kMediaNextCommandId = 0x05; + static constexpr CommandId kMediaPauseCommandId = 0x01; + static constexpr CommandId kMediaPlayCommandId = 0x00; + static constexpr CommandId kMediaPreviousCommandId = 0x04; + static constexpr CommandId kMediaRewindCommandId = 0x06; + static constexpr CommandId kMediaSkipBackwardCommandId = 0x09; + static constexpr CommandId kMediaSkipForwardCommandId = 0x08; + static constexpr CommandId kMediaSkipSeekCommandId = 0x0A; + static constexpr CommandId kMediaStartOverCommandId = 0x03; + static constexpr CommandId kMediaStopCommandId = 0x02; +}; + class DLL_EXPORT NetworkCommissioningCluster : public ClusterBase { public: @@ -739,6 +916,51 @@ class DLL_EXPORT SwitchCluster : public ClusterBase CHIP_ERROR ReportAttributeCurrentPosition(Callback::Cancelable * onReportCallback); }; +class DLL_EXPORT TvChannelCluster : public ClusterBase +{ +public: + TvChannelCluster() : ClusterBase(kTvChannelClusterId) {} + ~TvChannelCluster() {} + + // Cluster Commands + CHIP_ERROR ChangeChannel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan match); + CHIP_ERROR ChangeChannelByNumber(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint16_t majorNumber, uint16_t minorNumber); + CHIP_ERROR SkipChannel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t count); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeTvChannelList(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeTvChannelLineup(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeCurrentTvChannel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kChangeChannelCommandId = 0x00; + static constexpr CommandId kChangeChannelByNumberCommandId = 0x01; + static constexpr CommandId kSkipChannelCommandId = 0x02; +}; + +class DLL_EXPORT TargetNavigatorCluster : public ClusterBase +{ +public: + TargetNavigatorCluster() : ClusterBase(kTargetNavigatorClusterId) {} + ~TargetNavigatorCluster() {} + + // Cluster Commands + CHIP_ERROR NavigateTarget(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t target, + chip::ByteSpan data); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeTargetNavigatorList(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kNavigateTargetCommandId = 0x00; +}; + class DLL_EXPORT TemperatureMeasurementCluster : public ClusterBase { public: @@ -805,5 +1027,17 @@ class DLL_EXPORT ThermostatCluster : public ClusterBase static constexpr CommandId kSetpointRaiseLowerCommandId = 0x00; }; +class DLL_EXPORT WakeOnLanCluster : public ClusterBase +{ +public: + WakeOnLanCluster() : ClusterBase(kWakeOnLanClusterId) {} + ~WakeOnLanCluster() {} + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeWakeOnLanMacAddress(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); +}; + } // namespace Controller } // namespace chip diff --git a/examples/chip-tool/gen/CHIPClustersObjc.h b/examples/chip-tool/gen/CHIPClustersObjc.h index c4ca0d9d92515b..d0170ef2e91fc4 100644 --- a/examples/chip-tool/gen/CHIPClustersObjc.h +++ b/examples/chip-tool/gen/CHIPClustersObjc.h @@ -42,6 +42,19 @@ NS_ASSUME_NONNULL_BEGIN @end +/** + * Cluster Account Login + * + */ +@interface CHIPAccountLogin : CHIPCluster + +- (void)getSetupPIN:(NSString *)tempAccountIdentifier completionHandler:(ResponseHandler)completionHandler; +- (void)login:(NSString *)tempAccountIdentifier setupPIN:(NSString *)setupPIN completionHandler:(ResponseHandler)completionHandler; + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + /** * Cluster Application Basic * @@ -59,6 +72,36 @@ NS_ASSUME_NONNULL_BEGIN @end +/** + * Cluster Application Launcher + * + */ +@interface CHIPApplicationLauncher : CHIPCluster + +- (void)launchApp:(NSString *)data + catalogVendorId:(uint16_t)catalogVendorId + applicationId:(NSString *)applicationId + completionHandler:(ResponseHandler)completionHandler; + +- (void)readAttributeApplicationLauncherList:(ResponseHandler)completionHandler; +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + +/** + * Cluster Audio Output + * + */ +@interface CHIPAudioOutput : CHIPCluster + +- (void)renameOutput:(uint8_t)index name:(NSString *)name completionHandler:(ResponseHandler)completionHandler; +- (void)selectOutput:(uint8_t)index completionHandler:(ResponseHandler)completionHandler; + +- (void)readAttributeAudioOutputList:(ResponseHandler)completionHandler; +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + /** * Cluster Barrier Control * @@ -307,6 +350,23 @@ NS_ASSUME_NONNULL_BEGIN @end +/** + * Cluster Content Launch + * + */ +@interface CHIPContentLaunch : CHIPCluster + +- (void)launchContent:(uint8_t)autoPlay data:(NSString *)data completionHandler:(ResponseHandler)completionHandler; +- (void)launchURL:(NSString *)contentURL + displayString:(NSString *)displayString + completionHandler:(ResponseHandler)completionHandler; + +- (void)readAttributeAcceptsHeaderList:(ResponseHandler)completionHandler; +- (void)readAttributeSupportedStreamingTypes:(ResponseHandler)completionHandler; +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + /** * Cluster Descriptor * @@ -456,6 +516,18 @@ NS_ASSUME_NONNULL_BEGIN @end +/** + * Cluster Keypad Input + * + */ +@interface CHIPKeypadInput : CHIPCluster + +- (void)sendKey:(uint8_t)keyCode completionHandler:(ResponseHandler)completionHandler; + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + /** * Cluster Level Control * @@ -511,6 +583,44 @@ NS_ASSUME_NONNULL_BEGIN @end +/** + * Cluster Media Input + * + */ +@interface CHIPMediaInput : CHIPCluster + +- (void)hideInputStatus:(ResponseHandler)completionHandler; +- (void)renameInput:(uint8_t)index name:(NSString *)name completionHandler:(ResponseHandler)completionHandler; +- (void)selectInput:(uint8_t)index completionHandler:(ResponseHandler)completionHandler; +- (void)showInputStatus:(ResponseHandler)completionHandler; + +- (void)readAttributeMediaInputList:(ResponseHandler)completionHandler; +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + +/** + * Cluster Media Playback + * + */ +@interface CHIPMediaPlayback : CHIPCluster + +- (void)mediaFastForward:(ResponseHandler)completionHandler; +- (void)mediaNext:(ResponseHandler)completionHandler; +- (void)mediaPause:(ResponseHandler)completionHandler; +- (void)mediaPlay:(ResponseHandler)completionHandler; +- (void)mediaPrevious:(ResponseHandler)completionHandler; +- (void)mediaRewind:(ResponseHandler)completionHandler; +- (void)mediaSkipBackward:(uint64_t)deltaPositionMilliseconds completionHandler:(ResponseHandler)completionHandler; +- (void)mediaSkipForward:(uint64_t)deltaPositionMilliseconds completionHandler:(ResponseHandler)completionHandler; +- (void)mediaSkipSeek:(uint64_t)position completionHandler:(ResponseHandler)completionHandler; +- (void)mediaStartOver:(ResponseHandler)completionHandler; +- (void)mediaStop:(ResponseHandler)completionHandler; + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + /** * Cluster Network Commissioning * @@ -667,6 +777,38 @@ NS_ASSUME_NONNULL_BEGIN @end +/** + * Cluster TV Channel + * + */ +@interface CHIPTvChannel : CHIPCluster + +- (void)changeChannel:(NSString *)match completionHandler:(ResponseHandler)completionHandler; +- (void)changeChannelByNumber:(uint16_t)majorNumber + minorNumber:(uint16_t)minorNumber + completionHandler:(ResponseHandler)completionHandler; +- (void)skipChannel:(uint16_t)count completionHandler:(ResponseHandler)completionHandler; + +- (void)readAttributeTvChannelList:(ResponseHandler)completionHandler; +- (void)readAttributeTvChannelLineup:(ResponseHandler)completionHandler; +- (void)readAttributeCurrentTvChannel:(ResponseHandler)completionHandler; +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + +/** + * Cluster Target Navigator + * + */ +@interface CHIPTargetNavigator : CHIPCluster + +- (void)navigateTarget:(uint8_t)target data:(NSString *)data completionHandler:(ResponseHandler)completionHandler; + +- (void)readAttributeTargetNavigatorList:(ResponseHandler)completionHandler; +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + /** * Cluster Temperature Measurement * @@ -721,6 +863,17 @@ NS_ASSUME_NONNULL_BEGIN @end +/** + * Cluster Wake on LAN + * + */ +@interface CHIPWakeOnLan : CHIPCluster + +- (void)readAttributeWakeOnLanMacAddress:(ResponseHandler)completionHandler; +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + NS_ASSUME_NONNULL_END #endif /* CHIP_CLUSTERS_H */ diff --git a/examples/chip-tool/gen/CHIPClustersObjc.mm b/examples/chip-tool/gen/CHIPClustersObjc.mm index 8d02f574aea3b6..d743d831cf8690 100644 --- a/examples/chip-tool/gen/CHIPClustersObjc.mm +++ b/examples/chip-tool/gen/CHIPClustersObjc.mm @@ -355,6 +355,136 @@ static void CallbackFn(void * context, int16_t value) bool mKeepAlive; }; +class CHIPAccountLoginClusterGetSetupPINResponseCallbackBridge + : public Callback::Callback { +public: + CHIPAccountLoginClusterGetSetupPINResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPAccountLoginClusterGetSetupPINResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint8_t * setupPIN) + { + CHIPAccountLoginClusterGetSetupPINResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"setupPIN" : [NSString stringWithFormat:@"%s", setupPIN], + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPApplicationLauncherClusterLaunchAppResponseCallbackBridge + : public Callback::Callback { +public: + CHIPApplicationLauncherClusterLaunchAppResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPApplicationLauncherClusterLaunchAppResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint8_t * data) + { + CHIPApplicationLauncherClusterLaunchAppResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"data" : [NSString stringWithFormat:@"%s", data], + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPContentLaunchClusterLaunchContentResponseCallbackBridge + : public Callback::Callback { +public: + CHIPContentLaunchClusterLaunchContentResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPContentLaunchClusterLaunchContentResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint8_t * data, uint8_t contentLaunchStatus) + { + CHIPContentLaunchClusterLaunchContentResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"data" : [NSString stringWithFormat:@"%s", data], + @"contentLaunchStatus" : [NSNumber numberWithUnsignedChar:contentLaunchStatus], + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPContentLaunchClusterLaunchURLResponseCallbackBridge + : public Callback::Callback { +public: + CHIPContentLaunchClusterLaunchURLResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPContentLaunchClusterLaunchURLResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint8_t * data, uint8_t contentLaunchStatus) + { + CHIPContentLaunchClusterLaunchURLResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"data" : [NSString stringWithFormat:@"%s", data], + @"contentLaunchStatus" : [NSNumber numberWithUnsignedChar:contentLaunchStatus], + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + class CHIPDoorLockClusterClearAllPinsResponseCallbackBridge : public Callback::Callback { public: @@ -1338,28 +1468,24 @@ static void CallbackFn(void * context, uint16_t timeout) dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge - : public Callback::Callback { +class CHIPKeypadInputClusterSendKeyResponseCallbackBridge : public Callback::Callback { public: - CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPKeypadInputClusterSendKeyResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge() {}; + ~CHIPKeypadInputClusterSendKeyResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) + static void CallbackFn(void * context) { - CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPKeypadInputClusterSendKeyResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], - }); + callback->mHandler(nil, @ {}); callback->Cancel(); delete callback; }); @@ -1371,27 +1497,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaFastForwardResponseCallbackBridge + : public Callback::Callback { public: - CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaFastForwardResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaFastForwardResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaFastForwardResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1404,27 +1529,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaNextResponseCallbackBridge + : public Callback::Callback { public: - CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaNextResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaNextResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaNextResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1437,27 +1561,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaPauseResponseCallbackBridge + : public Callback::Callback { public: - CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaPauseResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaPauseResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaPauseResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1470,27 +1593,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaPlayResponseCallbackBridge + : public Callback::Callback { public: - CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaPlayResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaPlayResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaPlayResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1503,33 +1625,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaPreviousResponseCallbackBridge + : public Callback::Callback { public: - CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaPreviousResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaPreviousResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText, - /* TYPE WARNING: array array defaults to */ uint8_t * wifiScanResults, - /* TYPE WARNING: array array defaults to */ uint8_t * threadScanResults) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaPreviousResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], - // wifiScanResults: /* TYPE WARNING: array array defaults to */ uint8_t * - // Conversion from this type to Objc is not properly implemented yet - // threadScanResults: /* TYPE WARNING: array array defaults to */ uint8_t * - // Conversion from this type to Objc is not properly implemented yet + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1542,27 +1657,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText, dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaRewindResponseCallbackBridge + : public Callback::Callback { public: - CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaRewindResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaRewindResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaRewindResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1575,27 +1689,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaSkipBackwardResponseCallbackBridge + : public Callback::Callback { public: - CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaSkipBackwardResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaSkipBackwardResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaSkipBackwardResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1608,26 +1721,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) dispatch_queue_t mQueue; }; -class CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaSkipForwardResponseCallbackBridge + : public Callback::Callback { public: - CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaSkipForwardResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaSkipForwardResponseCallbackBridge() {}; - static void CallbackFn(void * context, chip::FabricId FabricId) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaSkipForwardResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"FabricId" : [NSNumber numberWithUnsignedLongLong:FabricId], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1640,26 +1753,26 @@ static void CallbackFn(void * context, chip::FabricId FabricId) dispatch_queue_t mQueue; }; -class CHIPScenesClusterAddSceneResponseCallbackBridge : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaSkipSeekResponseCallbackBridge + : public Callback::Callback { public: - CHIPScenesClusterAddSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaSkipSeekResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPScenesClusterAddSceneResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaSkipSeekResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPScenesClusterAddSceneResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaSkipSeekResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"groupId" : [NSNumber numberWithUnsignedShort:groupId], - @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1672,31 +1785,26 @@ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) dispatch_queue_t mQueue; }; -class CHIPScenesClusterGetSceneMembershipResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaStartOverResponseCallbackBridge + : public Callback::Callback { public: - CHIPScenesClusterGetSceneMembershipResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaStartOverResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPScenesClusterGetSceneMembershipResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaStartOverResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t capacity, uint16_t groupId, uint8_t sceneCount, - /* TYPE WARNING: array array defaults to */ uint8_t * sceneList) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPScenesClusterGetSceneMembershipResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaStartOverResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"capacity" : [NSNumber numberWithUnsignedChar:capacity], - @"groupId" : [NSNumber numberWithUnsignedShort:groupId], - @"sceneCount" : [NSNumber numberWithUnsignedChar:sceneCount], - // sceneList: /* TYPE WARNING: array array defaults to */ uint8_t * - // Conversion from this type to Objc is not properly implemented yet + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1709,26 +1817,26 @@ static void CallbackFn(void * context, uint8_t capacity, uint16_t groupId, uint8 dispatch_queue_t mQueue; }; -class CHIPScenesClusterRemoveAllScenesResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaStopResponseCallbackBridge + : public Callback::Callback { public: - CHIPScenesClusterRemoveAllScenesResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaStopResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPScenesClusterRemoveAllScenesResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaStopResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t groupId) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPScenesClusterRemoveAllScenesResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaStopResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"groupId" : [NSNumber numberWithUnsignedShort:groupId], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1741,26 +1849,27 @@ static void CallbackFn(void * context, uint16_t groupId) dispatch_queue_t mQueue; }; -class CHIPScenesClusterRemoveSceneResponseCallbackBridge : public Callback::Callback { +class CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge + : public Callback::Callback { public: - CHIPScenesClusterRemoveSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPScenesClusterRemoveSceneResponseCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) { - CHIPScenesClusterRemoveSceneResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"groupId" : [NSNumber numberWithUnsignedShort:groupId], - @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], }); callback->Cancel(); delete callback; @@ -1773,26 +1882,27 @@ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) dispatch_queue_t mQueue; }; -class CHIPScenesClusterStoreSceneResponseCallbackBridge : public Callback::Callback { +class CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge + : public Callback::Callback { public: - CHIPScenesClusterStoreSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPScenesClusterStoreSceneResponseCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) { - CHIPScenesClusterStoreSceneResponseCallbackBridge * callback - = reinterpret_cast(context); - if (callback && callback->mQueue) { + CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"groupId" : [NSNumber numberWithUnsignedShort:groupId], - @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], }); callback->Cancel(); delete callback; @@ -1805,31 +1915,27 @@ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) dispatch_queue_t mQueue; }; -class CHIPScenesClusterViewSceneResponseCallbackBridge : public Callback::Callback { +class CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge + : public Callback::Callback { public: - CHIPScenesClusterViewSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPScenesClusterViewSceneResponseCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime, uint8_t * sceneName, - /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) { - CHIPScenesClusterViewSceneResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"groupId" : [NSNumber numberWithUnsignedShort:groupId], - @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], - @"transitionTime" : [NSNumber numberWithUnsignedShort:transitionTime], - @"sceneName" : [NSString stringWithFormat:@"%s", sceneName], - // extensionFieldSets: /* TYPE WARNING: array array defaults to */ uint8_t * - // Conversion from this type to Objc is not properly implemented yet + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], }); callback->Cancel(); delete callback; @@ -1842,31 +1948,27 @@ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId, uint16 dispatch_queue_t mQueue; }; -class CHIPThermostatClusterCurrentWeeklyScheduleCallbackBridge - : public Callback::Callback { +class CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge + : public Callback::Callback { public: - CHIPThermostatClusterCurrentWeeklyScheduleCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPThermostatClusterCurrentWeeklyScheduleCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t numberOfTransitionsForSequence, uint8_t dayOfWeekForSequence, - uint8_t modeForSequence, /* TYPE WARNING: array array defaults to */ uint8_t * payload) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) { - CHIPThermostatClusterCurrentWeeklyScheduleCallbackBridge * callback - = reinterpret_cast(context); + CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"numberOfTransitionsForSequence" : [NSNumber numberWithUnsignedChar:numberOfTransitionsForSequence], - @"dayOfWeekForSequence" : [NSNumber numberWithUnsignedChar:dayOfWeekForSequence], - @"modeForSequence" : [NSNumber numberWithUnsignedChar:modeForSequence], - // payload: /* TYPE WARNING: array array defaults to */ uint8_t * - // Conversion from this type to Objc is not properly implemented yet + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], }); callback->Cancel(); delete callback; @@ -1879,31 +1981,27 @@ static void CallbackFn(void * context, uint8_t numberOfTransitionsForSequence, u dispatch_queue_t mQueue; }; -class CHIPThermostatClusterRelayStatusLogCallbackBridge : public Callback::Callback { +class CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge + : public Callback::Callback { public: - CHIPThermostatClusterRelayStatusLogCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPThermostatClusterRelayStatusLogCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t timeOfDay, uint16_t relayStatus, int16_t localTemperature, - uint8_t humidityInPercentage, int16_t setpoint, uint16_t unreadEntries) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) { - CHIPThermostatClusterRelayStatusLogCallbackBridge * callback - = reinterpret_cast(context); + CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"timeOfDay" : [NSNumber numberWithUnsignedShort:timeOfDay], - @"relayStatus" : [NSNumber numberWithUnsignedShort:relayStatus], - @"localTemperature" : [NSNumber numberWithShort:localTemperature], - @"humidityInPercentage" : [NSNumber numberWithUnsignedChar:humidityInPercentage], - @"setpoint" : [NSNumber numberWithShort:setpoint], - @"unreadEntries" : [NSNumber numberWithUnsignedShort:unreadEntries], + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], }); callback->Cancel(); delete callback; @@ -1916,317 +2014,2020 @@ static void CallbackFn(void * context, uint16_t timeOfDay, uint16_t relayStatus, dispatch_queue_t mQueue; }; -class CHIPDescriptorDeviceListAttributeCallbackBridge : public Callback::Callback { +class CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge + : public Callback::Callback { public: - CHIPDescriptorDeviceListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPDescriptorDeviceListAttributeCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t count, _DeviceType * entries) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText, + /* TYPE WARNING: array array defaults to */ uint8_t * wifiScanResults, + /* TYPE WARNING: array array defaults to */ uint8_t * threadScanResults) { - CHIPDescriptorDeviceListAttributeCallbackBridge * callback - = reinterpret_cast(context); + CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { - id values[count]; - for (uint16_t i = 0; i < count; i++) { - values[i] = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithUnsignedLong:entries[i].type], @"type", - [NSNumber numberWithUnsignedShort:entries[i].revision], @"revision", nil]; - } - - id array = [NSArray arrayWithObjects:values count:count]; dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { @"value" : array }); + callback->mHandler(nil, @ { + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], + // wifiScanResults: /* TYPE WARNING: array array defaults to */ uint8_t * + // Conversion from this type to Objc is not properly implemented yet + // threadScanResults: /* TYPE WARNING: array array defaults to */ uint8_t * + // Conversion from this type to Objc is not properly implemented yet + }); callback->Cancel(); delete callback; }); } - } + }; private: ResponseHandler mHandler; dispatch_queue_t mQueue; }; -class CHIPDescriptorServerListAttributeCallbackBridge : public Callback::Callback { +class CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge + : public Callback::Callback { public: - CHIPDescriptorServerListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPDescriptorServerListAttributeCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t count, chip::ClusterId * entries) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) { - CHIPDescriptorServerListAttributeCallbackBridge * callback - = reinterpret_cast(context); + CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { - id values[count]; - for (uint16_t i = 0; i < count; i++) { - values[i] = [NSNumber numberWithUnsignedShort:entries[i]]; - } - - id array = [NSArray arrayWithObjects:values count:count]; dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { @"value" : array }); + callback->mHandler(nil, @ { + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], + }); callback->Cancel(); delete callback; }); } - } + }; private: ResponseHandler mHandler; dispatch_queue_t mQueue; }; -class CHIPDescriptorClientListAttributeCallbackBridge : public Callback::Callback { +class CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge + : public Callback::Callback { public: - CHIPDescriptorClientListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPDescriptorClientListAttributeCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t count, chip::ClusterId * entries) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) { - CHIPDescriptorClientListAttributeCallbackBridge * callback - = reinterpret_cast(context); + CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { - id values[count]; - for (uint16_t i = 0; i < count; i++) { - values[i] = [NSNumber numberWithUnsignedShort:entries[i]]; - } - - id array = [NSArray arrayWithObjects:values count:count]; dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { @"value" : array }); + callback->mHandler(nil, @ { + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], + }); callback->Cancel(); delete callback; }); } - } + }; private: ResponseHandler mHandler; dispatch_queue_t mQueue; }; -class CHIPDescriptorPartsListAttributeCallbackBridge : public Callback::Callback { +class CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge + : public Callback::Callback { public: - CHIPDescriptorPartsListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPDescriptorPartsListAttributeCallbackBridge() {}; + ~CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t count, chip::EndpointId * entries) + static void CallbackFn(void * context, chip::FabricId FabricId) { - CHIPDescriptorPartsListAttributeCallbackBridge * callback - = reinterpret_cast(context); + CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { - id values[count]; - for (uint16_t i = 0; i < count; i++) { - values[i] = [NSNumber numberWithUnsignedChar:entries[i]]; - } - - id array = [NSArray arrayWithObjects:values count:count]; dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { @"value" : array }); + callback->mHandler(nil, @ { + @"FabricId" : [NSNumber numberWithUnsignedLongLong:FabricId], + }); callback->Cancel(); delete callback; }); } - } + }; private: ResponseHandler mHandler; dispatch_queue_t mQueue; }; -class CHIPGroupKeyManagementGroupsAttributeCallbackBridge - : public Callback::Callback { +class CHIPScenesClusterAddSceneResponseCallbackBridge : public Callback::Callback { public: - CHIPGroupKeyManagementGroupsAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPScenesClusterAddSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPGroupKeyManagementGroupsAttributeCallbackBridge() {}; + ~CHIPScenesClusterAddSceneResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t count, _GroupState * entries) + static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) { - CHIPGroupKeyManagementGroupsAttributeCallbackBridge * callback - = reinterpret_cast(context); + CHIPScenesClusterAddSceneResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { - id values[count]; - for (uint16_t i = 0; i < count; i++) { - values[i] = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithUnsignedShort:entries[i].VendorId], - @"VendorId", [NSNumber numberWithUnsignedShort:entries[i].VendorGroupId], - @"VendorGroupId", [NSNumber numberWithUnsignedShort:entries[i].GroupKeySetIndex], - @"GroupKeySetIndex", nil]; - } - - id array = [NSArray arrayWithObjects:values count:count]; dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { @"value" : array }); + callback->mHandler(nil, @ { + @"groupId" : [NSNumber numberWithUnsignedShort:groupId], + @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], + }); callback->Cancel(); delete callback; }); } - } + }; private: ResponseHandler mHandler; dispatch_queue_t mQueue; }; -class CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge - : public Callback::Callback { +class CHIPScenesClusterGetSceneMembershipResponseCallbackBridge + : public Callback::Callback { public: - CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPScenesClusterGetSceneMembershipResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge() {}; + ~CHIPScenesClusterGetSceneMembershipResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t count, _GroupKey * entries) + static void CallbackFn(void * context, uint8_t capacity, uint16_t groupId, uint8_t sceneCount, + /* TYPE WARNING: array array defaults to */ uint8_t * sceneList) { - CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge * callback - = reinterpret_cast(context); + CHIPScenesClusterGetSceneMembershipResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { - id values[count]; - for (uint16_t i = 0; i < count; i++) { - values[i] = [[NSDictionary alloc] - initWithObjectsAndKeys:[NSNumber numberWithUnsignedShort:entries[i].VendorId], @"VendorId", - [NSNumber numberWithUnsignedShort:entries[i].GroupKeyIndex], @"GroupKeyIndex", - [NSData dataWithBytes:entries[i].GroupKeyRoot + 1u length:emberAfStringLength(entries[i].GroupKeyRoot)], - @"GroupKeyRoot", [NSNumber numberWithUnsignedLongLong:entries[i].GroupKeyEpochStartTime], - @"GroupKeyEpochStartTime", [NSNumber numberWithUnsignedChar:entries[i].GroupKeySecurityPolicy], - @"GroupKeySecurityPolicy", nil]; - } - - id array = [NSArray arrayWithObjects:values count:count]; dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { @"value" : array }); + callback->mHandler(nil, @ { + @"capacity" : [NSNumber numberWithUnsignedChar:capacity], + @"groupId" : [NSNumber numberWithUnsignedShort:groupId], + @"sceneCount" : [NSNumber numberWithUnsignedChar:sceneCount], + // sceneList: /* TYPE WARNING: array array defaults to */ uint8_t * + // Conversion from this type to Objc is not properly implemented yet + }); callback->Cancel(); delete callback; }); } - } + }; private: ResponseHandler mHandler; dispatch_queue_t mQueue; }; -class CHIPOperationalCredentialsFabricsListAttributeCallbackBridge - : public Callback::Callback { +class CHIPScenesClusterRemoveAllScenesResponseCallbackBridge + : public Callback::Callback { public: - CHIPOperationalCredentialsFabricsListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPScenesClusterRemoveAllScenesResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPOperationalCredentialsFabricsListAttributeCallbackBridge() {}; + ~CHIPScenesClusterRemoveAllScenesResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t count, _FabricDescriptor * entries) + static void CallbackFn(void * context, uint16_t groupId) { - CHIPOperationalCredentialsFabricsListAttributeCallbackBridge * callback - = reinterpret_cast(context); + CHIPScenesClusterRemoveAllScenesResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { - id values[count]; - for (uint16_t i = 0; i < count; i++) { - values[i] = - [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithUnsignedLongLong:entries[i].FabricId], - @"FabricId", [NSNumber numberWithUnsignedShort:entries[i].VendorId], @"VendorId", - [NSData dataWithBytes:entries[i].Label + 1u length:emberAfStringLength(entries[i].Label)], - @"Label", [NSNumber numberWithUnsignedLongLong:entries[i].NodeId], @"NodeId", nil]; - } + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"groupId" : [NSNumber numberWithUnsignedShort:groupId], + }); + callback->Cancel(); + delete callback; + }); + } + }; - id array = [NSArray arrayWithObjects:values count:count]; +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPScenesClusterRemoveSceneResponseCallbackBridge : public Callback::Callback { +public: + CHIPScenesClusterRemoveSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPScenesClusterRemoveSceneResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) + { + CHIPScenesClusterRemoveSceneResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { @"value" : array }); + callback->mHandler(nil, @ { + @"groupId" : [NSNumber numberWithUnsignedShort:groupId], + @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], + }); callback->Cancel(); delete callback; }); } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPScenesClusterStoreSceneResponseCallbackBridge : public Callback::Callback { +public: + CHIPScenesClusterStoreSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { } + ~CHIPScenesClusterStoreSceneResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) + { + CHIPScenesClusterStoreSceneResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"groupId" : [NSNumber numberWithUnsignedShort:groupId], + @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], + }); + callback->Cancel(); + delete callback; + }); + } + }; + private: ResponseHandler mHandler; dispatch_queue_t mQueue; }; -@interface CHIPCluster () -@property (readonly, nonatomic) dispatch_queue_t callbackQueue; -- (Controller::ClusterBase *)getCluster; -@end +class CHIPScenesClusterViewSceneResponseCallbackBridge : public Callback::Callback { +public: + CHIPScenesClusterViewSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } -@implementation CHIPCluster -- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue -{ - if (self = [super init]) { - Controller::ClusterBase * cppCluster = [self getCluster]; - if (cppCluster == nullptr) { - return nil; + ~CHIPScenesClusterViewSceneResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime, uint8_t * sceneName, + /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets) + { + CHIPScenesClusterViewSceneResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"groupId" : [NSNumber numberWithUnsignedShort:groupId], + @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], + @"transitionTime" : [NSNumber numberWithUnsignedShort:transitionTime], + @"sceneName" : [NSString stringWithFormat:@"%s", sceneName], + // extensionFieldSets: /* TYPE WARNING: array array defaults to */ uint8_t * + // Conversion from this type to Objc is not properly implemented yet + }); + callback->Cancel(); + delete callback; + }); } + }; - if (device == nullptr) { - return nil; +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPTvChannelClusterChangeChannelResponseCallbackBridge + : public Callback::Callback { +public: + CHIPTvChannelClusterChangeChannelResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPTvChannelClusterChangeChannelResponseCallbackBridge() {}; + + static void CallbackFn(void * context, /* TYPE WARNING: array array defaults to */ uint8_t * ChannelMatch, uint8_t ErrorType) + { + CHIPTvChannelClusterChangeChannelResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + // ChannelMatch: /* TYPE WARNING: array array defaults to */ uint8_t * + // Conversion from this type to Objc is not properly implemented yet + @"ErrorType" : [NSNumber numberWithUnsignedChar:ErrorType], + }); + callback->Cancel(); + delete callback; + }); } + }; - CHIP_ERROR err = cppCluster->Associate([device internalDevice], endpoint); - if (err != CHIP_NO_ERROR) { - return nil; +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPTargetNavigatorClusterNavigateTargetResponseCallbackBridge + : public Callback::Callback { +public: + CHIPTargetNavigatorClusterNavigateTargetResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPTargetNavigatorClusterNavigateTargetResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint8_t * data) + { + CHIPTargetNavigatorClusterNavigateTargetResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"data" : [NSString stringWithFormat:@"%s", data], + }); + callback->Cancel(); + delete callback; + }); } + }; - _callbackQueue = queue; +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPThermostatClusterCurrentWeeklyScheduleCallbackBridge + : public Callback::Callback { +public: + CHIPThermostatClusterCurrentWeeklyScheduleCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { } - return self; -} -- (Controller::ClusterBase *)getCluster -{ - return nullptr; -} -@end + ~CHIPThermostatClusterCurrentWeeklyScheduleCallbackBridge() {}; -@interface CHIPApplicationBasic () -@property (readonly) Controller::ApplicationBasicCluster cppCluster; -@end + static void CallbackFn(void * context, uint8_t numberOfTransitionsForSequence, uint8_t dayOfWeekForSequence, + uint8_t modeForSequence, /* TYPE WARNING: array array defaults to */ uint8_t * payload) + { + CHIPThermostatClusterCurrentWeeklyScheduleCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"numberOfTransitionsForSequence" : [NSNumber numberWithUnsignedChar:numberOfTransitionsForSequence], + @"dayOfWeekForSequence" : [NSNumber numberWithUnsignedChar:dayOfWeekForSequence], + @"modeForSequence" : [NSNumber numberWithUnsignedChar:modeForSequence], + // payload: /* TYPE WARNING: array array defaults to */ uint8_t * + // Conversion from this type to Objc is not properly implemented yet + }); + callback->Cancel(); + delete callback; + }); + } + }; -@implementation CHIPApplicationBasic +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} +class CHIPThermostatClusterRelayStatusLogCallbackBridge : public Callback::Callback { +public: + CHIPThermostatClusterRelayStatusLogCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } -- (void)readAttributeVendorName:(ResponseHandler)completionHandler + ~CHIPThermostatClusterRelayStatusLogCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t timeOfDay, uint16_t relayStatus, int16_t localTemperature, + uint8_t humidityInPercentage, int16_t setpoint, uint16_t unreadEntries) + { + CHIPThermostatClusterRelayStatusLogCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"timeOfDay" : [NSNumber numberWithUnsignedShort:timeOfDay], + @"relayStatus" : [NSNumber numberWithUnsignedShort:relayStatus], + @"localTemperature" : [NSNumber numberWithShort:localTemperature], + @"humidityInPercentage" : [NSNumber numberWithUnsignedChar:humidityInPercentage], + @"setpoint" : [NSNumber numberWithShort:setpoint], + @"unreadEntries" : [NSNumber numberWithUnsignedShort:unreadEntries], + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPDescriptorDeviceListAttributeCallbackBridge : public Callback::Callback { +public: + CHIPDescriptorDeviceListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPDescriptorDeviceListAttributeCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t count, _DeviceType * entries) + { + CHIPDescriptorDeviceListAttributeCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + id values[count]; + for (uint16_t i = 0; i < count; i++) { + values[i] = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithUnsignedLong:entries[i].type], @"type", + [NSNumber numberWithUnsignedShort:entries[i].revision], @"revision", nil]; + } + + id array = [NSArray arrayWithObjects:values count:count]; + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { @"value" : array }); + callback->Cancel(); + delete callback; + }); + } + } + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPDescriptorServerListAttributeCallbackBridge : public Callback::Callback { +public: + CHIPDescriptorServerListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPDescriptorServerListAttributeCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t count, chip::ClusterId * entries) + { + CHIPDescriptorServerListAttributeCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + id values[count]; + for (uint16_t i = 0; i < count; i++) { + values[i] = [NSNumber numberWithUnsignedShort:entries[i]]; + } + + id array = [NSArray arrayWithObjects:values count:count]; + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { @"value" : array }); + callback->Cancel(); + delete callback; + }); + } + } + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPDescriptorClientListAttributeCallbackBridge : public Callback::Callback { +public: + CHIPDescriptorClientListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPDescriptorClientListAttributeCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t count, chip::ClusterId * entries) + { + CHIPDescriptorClientListAttributeCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + id values[count]; + for (uint16_t i = 0; i < count; i++) { + values[i] = [NSNumber numberWithUnsignedShort:entries[i]]; + } + + id array = [NSArray arrayWithObjects:values count:count]; + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { @"value" : array }); + callback->Cancel(); + delete callback; + }); + } + } + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPDescriptorPartsListAttributeCallbackBridge : public Callback::Callback { +public: + CHIPDescriptorPartsListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPDescriptorPartsListAttributeCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t count, chip::EndpointId * entries) + { + CHIPDescriptorPartsListAttributeCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + id values[count]; + for (uint16_t i = 0; i < count; i++) { + values[i] = [NSNumber numberWithUnsignedChar:entries[i]]; + } + + id array = [NSArray arrayWithObjects:values count:count]; + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { @"value" : array }); + callback->Cancel(); + delete callback; + }); + } + } + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPGroupKeyManagementGroupsAttributeCallbackBridge + : public Callback::Callback { +public: + CHIPGroupKeyManagementGroupsAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPGroupKeyManagementGroupsAttributeCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t count, _GroupState * entries) + { + CHIPGroupKeyManagementGroupsAttributeCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + id values[count]; + for (uint16_t i = 0; i < count; i++) { + values[i] = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithUnsignedShort:entries[i].VendorId], + @"VendorId", [NSNumber numberWithUnsignedShort:entries[i].VendorGroupId], + @"VendorGroupId", [NSNumber numberWithUnsignedShort:entries[i].GroupKeySetIndex], + @"GroupKeySetIndex", nil]; + } + + id array = [NSArray arrayWithObjects:values count:count]; + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { @"value" : array }); + callback->Cancel(); + delete callback; + }); + } + } + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge + : public Callback::Callback { +public: + CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t count, _GroupKey * entries) + { + CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + id values[count]; + for (uint16_t i = 0; i < count; i++) { + values[i] = [[NSDictionary alloc] + initWithObjectsAndKeys:[NSNumber numberWithUnsignedShort:entries[i].VendorId], @"VendorId", + [NSNumber numberWithUnsignedShort:entries[i].GroupKeyIndex], @"GroupKeyIndex", + [NSData dataWithBytes:entries[i].GroupKeyRoot + 1u length:emberAfStringLength(entries[i].GroupKeyRoot)], + @"GroupKeyRoot", [NSNumber numberWithUnsignedLongLong:entries[i].GroupKeyEpochStartTime], + @"GroupKeyEpochStartTime", [NSNumber numberWithUnsignedChar:entries[i].GroupKeySecurityPolicy], + @"GroupKeySecurityPolicy", nil]; + } + + id array = [NSArray arrayWithObjects:values count:count]; + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { @"value" : array }); + callback->Cancel(); + delete callback; + }); + } + } + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPOperationalCredentialsFabricsListAttributeCallbackBridge + : public Callback::Callback { +public: + CHIPOperationalCredentialsFabricsListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPOperationalCredentialsFabricsListAttributeCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t count, _FabricDescriptor * entries) + { + CHIPOperationalCredentialsFabricsListAttributeCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + id values[count]; + for (uint16_t i = 0; i < count; i++) { + values[i] = + [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithUnsignedLongLong:entries[i].FabricId], + @"FabricId", [NSNumber numberWithUnsignedShort:entries[i].VendorId], @"VendorId", + [NSData dataWithBytes:entries[i].Label + 1u length:emberAfStringLength(entries[i].Label)], + @"Label", [NSNumber numberWithUnsignedLongLong:entries[i].NodeId], @"NodeId", nil]; + } + + id array = [NSArray arrayWithObjects:values count:count]; + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { @"value" : array }); + callback->Cancel(); + delete callback; + }); + } + } + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +@interface CHIPCluster () +@property (readonly, nonatomic) dispatch_queue_t callbackQueue; +- (Controller::ClusterBase *)getCluster; +@end + +@implementation CHIPCluster +- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue +{ + if (self = [super init]) { + Controller::ClusterBase * cppCluster = [self getCluster]; + if (cppCluster == nullptr) { + return nil; + } + + if (device == nullptr) { + return nil; + } + + CHIP_ERROR err = cppCluster->Associate([device internalDevice], endpoint); + if (err != CHIP_NO_ERROR) { + return nil; + } + + _callbackQueue = queue; + } + return self; +} + +- (Controller::ClusterBase *)getCluster +{ + return nullptr; +} +@end + +@interface CHIPAccountLogin () +@property (readonly) Controller::AccountLoginCluster cppCluster; +@end + +@implementation CHIPAccountLogin + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)getSetupPIN:(NSString *)tempAccountIdentifier completionHandler:(ResponseHandler)completionHandler +{ + CHIPAccountLoginClusterGetSetupPINResponseCallbackBridge * onSuccess + = new CHIPAccountLoginClusterGetSetupPINResponseCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.GetSetupPIN(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [tempAccountIdentifier dataUsingEncoding:NSUTF8StringEncoding].bytes, + [tempAccountIdentifier lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} +- (void)login:(NSString *)tempAccountIdentifier setupPIN:(NSString *)setupPIN completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.Login(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [tempAccountIdentifier dataUsingEncoding:NSUTF8StringEncoding].bytes, + [tempAccountIdentifier lengthOfBytesUsingEncoding:NSUTF8StringEncoding]), + chip::ByteSpan((const uint8_t *) [setupPIN dataUsingEncoding:NSUTF8StringEncoding].bytes, + [setupPIN lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +@end + +@interface CHIPApplicationBasic () +@property (readonly) Controller::ApplicationBasicCluster cppCluster; +@end + +@implementation CHIPApplicationBasic + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)readAttributeVendorName:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeVendorName(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeVendorId:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeVendorId(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeApplicationName:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeApplicationName(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeProductId:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeProductId(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeApplicationId:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeApplicationId(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeCatalogVendorId:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeCatalogVendorId(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeApplicationSatus:(ResponseHandler)completionHandler +{ + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeApplicationSatus(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +@end + +@interface CHIPApplicationLauncher () +@property (readonly) Controller::ApplicationLauncherCluster cppCluster; +@end + +@implementation CHIPApplicationLauncher + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)launchApp:(NSString *)data + catalogVendorId:(uint16_t)catalogVendorId + applicationId:(NSString *)applicationId + completionHandler:(ResponseHandler)completionHandler +{ + CHIPApplicationLauncherClusterLaunchAppResponseCallbackBridge * onSuccess + = new CHIPApplicationLauncherClusterLaunchAppResponseCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.LaunchApp(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [data dataUsingEncoding:NSUTF8StringEncoding].bytes, + [data lengthOfBytesUsingEncoding:NSUTF8StringEncoding]), + catalogVendorId, + chip::ByteSpan((const uint8_t *) [applicationId dataUsingEncoding:NSUTF8StringEncoding].bytes, + [applicationId lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeApplicationLauncherList:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeApplicationLauncherList(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +@end + +@interface CHIPAudioOutput () +@property (readonly) Controller::AudioOutputCluster cppCluster; +@end + +@implementation CHIPAudioOutput + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)renameOutput:(uint8_t)index name:(NSString *)name completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.RenameOutput(onSuccess->Cancel(), onFailure->Cancel(), index, + chip::ByteSpan((const uint8_t *) [name dataUsingEncoding:NSUTF8StringEncoding].bytes, + [name lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} +- (void)selectOutput:(uint8_t)index completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.SelectOutput(onSuccess->Cancel(), onFailure->Cancel(), index); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeAudioOutputList:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeAudioOutputList(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +@end + +@interface CHIPBarrierControl () +@property (readonly) Controller::BarrierControlCluster cppCluster; +@end + +@implementation CHIPBarrierControl + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)barrierControlGoToPercent:(uint8_t)percentOpen completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.BarrierControlGoToPercent(onSuccess->Cancel(), onFailure->Cancel(), percentOpen); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} +- (void)barrierControlStop:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.BarrierControlStop(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeBarrierMovingState:(ResponseHandler)completionHandler +{ + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierMovingState(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeBarrierSafetyStatus:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierSafetyStatus(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeBarrierCapabilities:(ResponseHandler)completionHandler +{ + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierCapabilities(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeBarrierPosition:(ResponseHandler)completionHandler +{ + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierPosition(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +@end + +@interface CHIPBasic () +@property (readonly) Controller::BasicCluster cppCluster; +@end + +@implementation CHIPBasic + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)mfgSpecificPing:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.MfgSpecificPing(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeInteractionModelVersion:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeInteractionModelVersion(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeVendorName:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeVendorName(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeVendorID:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeVendorID(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeProductName:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeProductName(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeProductID:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeProductID(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeUserLabel:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeUserLabel(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)writeAttributeUserLabel:(NSString *)value completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + NSData * data = [value dataUsingEncoding:NSUTF8StringEncoding]; + CHIP_ERROR err = self.cppCluster.WriteAttributeUserLabel( + onSuccess->Cancel(), onFailure->Cancel(), chip::ByteSpan((const uint8_t *) data.bytes, data.length)); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeLocation:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeLocation(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)writeAttributeLocation:(NSString *)value completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + NSData * data = [value dataUsingEncoding:NSUTF8StringEncoding]; + CHIP_ERROR err = self.cppCluster.WriteAttributeLocation( + onSuccess->Cancel(), onFailure->Cancel(), chip::ByteSpan((const uint8_t *) data.bytes, data.length)); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeHardwareVersion:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeHardwareVersion(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeHardwareVersionString:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeHardwareVersionString(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeSoftwareVersion:(ResponseHandler)completionHandler +{ + CHIPInt32uAttributeCallbackBridge * onSuccess = new CHIPInt32uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeSoftwareVersion(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeSoftwareVersionString:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeSoftwareVersionString(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeManufacturingDate:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeManufacturingDate(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributePartNumber:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributePartNumber(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeProductURL:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeProductURL(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeProductLabel:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeProductLabel(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeSerialNumber:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeSerialNumber(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeLocalConfigDisabled:(ResponseHandler)completionHandler +{ + CHIPBooleanAttributeCallbackBridge * onSuccess + = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeLocalConfigDisabled(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)writeAttributeLocalConfigDisabled:(uint8_t)value completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.WriteAttributeLocalConfigDisabled(onSuccess->Cancel(), onFailure->Cancel(), value); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +@end + +@interface CHIPBinding () +@property (readonly) Controller::BindingCluster cppCluster; +@end + +@implementation CHIPBinding + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)bind:(uint64_t)nodeId + groupId:(uint16_t)groupId + endpointId:(uint8_t)endpointId + clusterId:(uint16_t)clusterId + completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.Bind(onSuccess->Cancel(), onFailure->Cancel(), nodeId, groupId, endpointId, clusterId); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} +- (void)unbind:(uint64_t)nodeId + groupId:(uint16_t)groupId + endpointId:(uint8_t)endpointId + clusterId:(uint16_t)clusterId + completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2239,7 +4040,7 @@ - (void)readAttributeVendorName:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeVendorName(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.Unbind(onSuccess->Cancel(), onFailure->Cancel(), nodeId, groupId, endpointId, clusterId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2247,7 +4048,7 @@ - (void)readAttributeVendorName:(ResponseHandler)completionHandler } } -- (void)readAttributeVendorId:(ResponseHandler)completionHandler +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -2262,7 +4063,7 @@ - (void)readAttributeVendorId:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeVendorId(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2270,10 +4071,26 @@ - (void)readAttributeVendorId:(ResponseHandler)completionHandler } } -- (void)readAttributeApplicationName:(ResponseHandler)completionHandler +@end + +@interface CHIPColorControl () +@property (readonly) Controller::ColorControlCluster cppCluster; +@end + +@implementation CHIPColorControl + +- (Controller::ClusterBase *)getCluster { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + return &_cppCluster; +} + +- (void)moveColor:(int16_t)rateX + rateY:(int16_t)rateY + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2286,17 +4103,23 @@ - (void)readAttributeApplicationName:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeApplicationName(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.MoveColor(onSuccess->Cancel(), onFailure->Cancel(), rateX, rateY, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeProductId:(ResponseHandler)completionHandler +- (void)moveColorTemperature:(uint8_t)moveMode + rate:(uint16_t)rate + colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum + colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2309,18 +4132,21 @@ - (void)readAttributeProductId:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeProductId(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MoveColorTemperature(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, + colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeApplicationId:(ResponseHandler)completionHandler +- (void)moveHue:(uint8_t)moveMode + rate:(uint8_t)rate + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2333,17 +4159,21 @@ - (void)readAttributeApplicationId:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeApplicationId(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.MoveHue(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeCatalogVendorId:(ResponseHandler)completionHandler +- (void)moveSaturation:(uint8_t)moveMode + rate:(uint8_t)rate + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2356,17 +4186,22 @@ - (void)readAttributeCatalogVendorId:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCatalogVendorId(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.MoveSaturation(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeApplicationSatus:(ResponseHandler)completionHandler +- (void)moveToColor:(uint16_t)colorX + colorY:(uint16_t)colorY + transitionTime:(uint16_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2379,17 +4214,21 @@ - (void)readAttributeApplicationSatus:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeApplicationSatus(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MoveToColor( + onSuccess->Cancel(), onFailure->Cancel(), colorX, colorY, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)moveToColorTemperature:(uint16_t)colorTemperature + transitionTime:(uint16_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2402,28 +4241,20 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MoveToColorTemperature( + onSuccess->Cancel(), onFailure->Cancel(), colorTemperature, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPBarrierControl () -@property (readonly) Controller::BarrierControlCluster cppCluster; -@end - -@implementation CHIPBarrierControl - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)barrierControlGoToPercent:(uint8_t)percentOpen completionHandler:(ResponseHandler)completionHandler +- (void)moveToHue:(uint8_t)hue + direction:(uint8_t)direction + transitionTime:(uint16_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -2438,14 +4269,20 @@ - (void)barrierControlGoToPercent:(uint8_t)percentOpen completionHandler:(Respon return; } - CHIP_ERROR err = self.cppCluster.BarrierControlGoToPercent(onSuccess->Cancel(), onFailure->Cancel(), percentOpen); + CHIP_ERROR err = self.cppCluster.MoveToHue( + onSuccess->Cancel(), onFailure->Cancel(), hue, direction, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)barrierControlStop:(ResponseHandler)completionHandler +- (void)moveToHueAndSaturation:(uint8_t)hue + saturation:(uint8_t)saturation + transitionTime:(uint16_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -2460,17 +4297,21 @@ - (void)barrierControlStop:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.BarrierControlStop(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MoveToHueAndSaturation( + onSuccess->Cancel(), onFailure->Cancel(), hue, saturation, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeBarrierMovingState:(ResponseHandler)completionHandler +- (void)moveToSaturation:(uint8_t)saturation + transitionTime:(uint16_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2483,17 +4324,22 @@ - (void)readAttributeBarrierMovingState:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierMovingState(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MoveToSaturation( + onSuccess->Cancel(), onFailure->Cancel(), saturation, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeBarrierSafetyStatus:(ResponseHandler)completionHandler +- (void)stepColor:(int16_t)stepX + stepY:(int16_t)stepY + transitionTime:(uint16_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2506,17 +4352,24 @@ - (void)readAttributeBarrierSafetyStatus:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierSafetyStatus(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StepColor( + onSuccess->Cancel(), onFailure->Cancel(), stepX, stepY, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeBarrierCapabilities:(ResponseHandler)completionHandler +- (void)stepColorTemperature:(uint8_t)stepMode + stepSize:(uint16_t)stepSize + transitionTime:(uint16_t)transitionTime + colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum + colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2529,17 +4382,22 @@ - (void)readAttributeBarrierCapabilities:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierCapabilities(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StepColorTemperature(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, + transitionTime, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeBarrierPosition:(ResponseHandler)completionHandler +- (void)stepHue:(uint8_t)stepMode + stepSize:(uint8_t)stepSize + transitionTime:(uint8_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2552,17 +4410,22 @@ - (void)readAttributeBarrierPosition:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierPosition(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StepHue( + onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)stepSaturation:(uint8_t)stepMode + stepSize:(uint8_t)stepSize + transitionTime:(uint8_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2575,28 +4438,17 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StepSaturation( + onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPBasic () -@property (readonly) Controller::BasicCluster cppCluster; -@end - -@implementation CHIPBasic - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)mfgSpecificPing:(ResponseHandler)completionHandler +- (void)stopMoveStep:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -2611,7 +4463,7 @@ - (void)mfgSpecificPing:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.MfgSpecificPing(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StopMoveStep(onSuccess->Cancel(), onFailure->Cancel(), optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2619,9 +4471,9 @@ - (void)mfgSpecificPing:(ResponseHandler)completionHandler } } -- (void)readAttributeInteractionModelVersion:(ResponseHandler)completionHandler +- (void)readAttributeCurrentHue:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2634,7 +4486,7 @@ - (void)readAttributeInteractionModelVersion:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeInteractionModelVersion(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentHue(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2642,10 +4494,12 @@ - (void)readAttributeInteractionModelVersion:(ResponseHandler)completionHandler } } -- (void)readAttributeVendorName:(ResponseHandler)completionHandler +- (void)configureAttributeCurrentHue:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(uint8_t)change + completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2658,7 +4512,8 @@ - (void)readAttributeVendorName:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeVendorName(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.ConfigureAttributeCurrentHue(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2666,9 +4521,24 @@ - (void)readAttributeVendorName:(ResponseHandler)completionHandler } } -- (void)readAttributeVendorID:(ResponseHandler)completionHandler +- (void)reportAttributeCurrentHue:(ResponseHandler)reportHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentHue(onReport->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeCurrentSaturation:(ResponseHandler)completionHandler +{ + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2681,7 +4551,7 @@ - (void)readAttributeVendorID:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeVendorID(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentSaturation(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2689,10 +4559,12 @@ - (void)readAttributeVendorID:(ResponseHandler)completionHandler } } -- (void)readAttributeProductName:(ResponseHandler)completionHandler +- (void)configureAttributeCurrentSaturation:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(uint8_t)change + completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2705,7 +4577,8 @@ - (void)readAttributeProductName:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeProductName(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentSaturation( + onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2713,7 +4586,22 @@ - (void)readAttributeProductName:(ResponseHandler)completionHandler } } -- (void)readAttributeProductID:(ResponseHandler)completionHandler +- (void)reportAttributeCurrentSaturation:(ResponseHandler)reportHandler +{ + CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentSaturation(onReport->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeRemainingTime:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -2728,7 +4616,7 @@ - (void)readAttributeProductID:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeProductID(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeRemainingTime(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2736,10 +4624,9 @@ - (void)readAttributeProductID:(ResponseHandler)completionHandler } } -- (void)readAttributeUserLabel:(ResponseHandler)completionHandler +- (void)readAttributeCurrentX:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2752,7 +4639,7 @@ - (void)readAttributeUserLabel:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeUserLabel(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentX(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2760,7 +4647,10 @@ - (void)readAttributeUserLabel:(ResponseHandler)completionHandler } } -- (void)writeAttributeUserLabel:(NSString *)value completionHandler:(ResponseHandler)completionHandler +- (void)configureAttributeCurrentX:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(uint16_t)change + completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -2775,9 +4665,8 @@ - (void)writeAttributeUserLabel:(NSString *)value completionHandler:(ResponseHan return; } - NSData * data = [value dataUsingEncoding:NSUTF8StringEncoding]; - CHIP_ERROR err = self.cppCluster.WriteAttributeUserLabel( - onSuccess->Cancel(), onFailure->Cancel(), chip::ByteSpan((const uint8_t *) data.bytes, data.length)); + CHIP_ERROR err + = self.cppCluster.ConfigureAttributeCurrentX(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2785,10 +4674,24 @@ - (void)writeAttributeUserLabel:(NSString *)value completionHandler:(ResponseHan } } -- (void)readAttributeLocation:(ResponseHandler)completionHandler +- (void)reportAttributeCurrentX:(ResponseHandler)reportHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentX(onReport->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeCurrentY:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2801,7 +4704,7 @@ - (void)readAttributeLocation:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeLocation(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentY(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2809,7 +4712,10 @@ - (void)readAttributeLocation:(ResponseHandler)completionHandler } } -- (void)writeAttributeLocation:(NSString *)value completionHandler:(ResponseHandler)completionHandler +- (void)configureAttributeCurrentY:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(uint16_t)change + completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -2824,9 +4730,8 @@ - (void)writeAttributeLocation:(NSString *)value completionHandler:(ResponseHand return; } - NSData * data = [value dataUsingEncoding:NSUTF8StringEncoding]; - CHIP_ERROR err = self.cppCluster.WriteAttributeLocation( - onSuccess->Cancel(), onFailure->Cancel(), chip::ByteSpan((const uint8_t *) data.bytes, data.length)); + CHIP_ERROR err + = self.cppCluster.ConfigureAttributeCurrentY(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2834,9 +4739,24 @@ - (void)writeAttributeLocation:(NSString *)value completionHandler:(ResponseHand } } -- (void)readAttributeHardwareVersion:(ResponseHandler)completionHandler +- (void)reportAttributeCurrentY:(ResponseHandler)reportHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentY(onReport->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeDriftCompensation:(ResponseHandler)completionHandler +{ + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2849,7 +4769,7 @@ - (void)readAttributeHardwareVersion:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeHardwareVersion(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeDriftCompensation(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2857,7 +4777,7 @@ - (void)readAttributeHardwareVersion:(ResponseHandler)completionHandler } } -- (void)readAttributeHardwareVersionString:(ResponseHandler)completionHandler +- (void)readAttributeCompensationText:(ResponseHandler)completionHandler { CHIPStringAttributeCallbackBridge * onSuccess = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); @@ -2873,7 +4793,7 @@ - (void)readAttributeHardwareVersionString:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeHardwareVersionString(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeCompensationText(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2881,9 +4801,9 @@ - (void)readAttributeHardwareVersionString:(ResponseHandler)completionHandler } } -- (void)readAttributeSoftwareVersion:(ResponseHandler)completionHandler +- (void)readAttributeColorTemperature:(ResponseHandler)completionHandler { - CHIPInt32uAttributeCallbackBridge * onSuccess = new CHIPInt32uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2896,7 +4816,7 @@ - (void)readAttributeSoftwareVersion:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeSoftwareVersion(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorTemperature(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2904,10 +4824,12 @@ - (void)readAttributeSoftwareVersion:(ResponseHandler)completionHandler } } -- (void)readAttributeSoftwareVersionString:(ResponseHandler)completionHandler +- (void)configureAttributeColorTemperature:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(uint16_t)change + completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2920,7 +4842,8 @@ - (void)readAttributeSoftwareVersionString:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeSoftwareVersionString(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ConfigureAttributeColorTemperature( + onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2928,34 +4851,24 @@ - (void)readAttributeSoftwareVersionString:(ResponseHandler)completionHandler } } -- (void)readAttributeManufacturingDate:(ResponseHandler)completionHandler +- (void)reportAttributeColorTemperature:(ResponseHandler)reportHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeManufacturingDate(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReportAttributeColorTemperature(onReport->Cancel()); if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)readAttributePartNumber:(ResponseHandler)completionHandler +- (void)readAttributeColorMode:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2968,7 +4881,7 @@ - (void)readAttributePartNumber:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePartNumber(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorMode(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2976,10 +4889,9 @@ - (void)readAttributePartNumber:(ResponseHandler)completionHandler } } -- (void)readAttributeProductURL:(ResponseHandler)completionHandler +- (void)readAttributeColorControlOptions:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2992,7 +4904,7 @@ - (void)readAttributeProductURL:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeProductURL(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorControlOptions(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3000,10 +4912,9 @@ - (void)readAttributeProductURL:(ResponseHandler)completionHandler } } -- (void)readAttributeProductLabel:(ResponseHandler)completionHandler +- (void)writeAttributeColorControlOptions:(uint8_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3016,7 +4927,7 @@ - (void)readAttributeProductLabel:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeProductLabel(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorControlOptions(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3024,10 +4935,9 @@ - (void)readAttributeProductLabel:(ResponseHandler)completionHandler } } -- (void)readAttributeSerialNumber:(ResponseHandler)completionHandler +- (void)readAttributeNumberOfPrimaries:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3040,7 +4950,7 @@ - (void)readAttributeSerialNumber:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeSerialNumber(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeNumberOfPrimaries(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3048,10 +4958,9 @@ - (void)readAttributeSerialNumber:(ResponseHandler)completionHandler } } -- (void)readAttributeLocalConfigDisabled:(ResponseHandler)completionHandler +- (void)readAttributePrimary1X:(ResponseHandler)completionHandler { - CHIPBooleanAttributeCallbackBridge * onSuccess - = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3064,7 +4973,7 @@ - (void)readAttributeLocalConfigDisabled:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeLocalConfigDisabled(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1X(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3072,9 +4981,9 @@ - (void)readAttributeLocalConfigDisabled:(ResponseHandler)completionHandler } } -- (void)writeAttributeLocalConfigDisabled:(uint8_t)value completionHandler:(ResponseHandler)completionHandler +- (void)readAttributePrimary1Y:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3087,7 +4996,7 @@ - (void)writeAttributeLocalConfigDisabled:(uint8_t)value completionHandler:(Resp return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeLocalConfigDisabled(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Y(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3095,9 +5004,9 @@ - (void)writeAttributeLocalConfigDisabled:(uint8_t)value completionHandler:(Resp } } -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)readAttributePrimary1Intensity:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3110,7 +5019,7 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Intensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3118,26 +5027,9 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler } } -@end - -@interface CHIPBinding () -@property (readonly) Controller::BindingCluster cppCluster; -@end - -@implementation CHIPBinding - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)bind:(uint64_t)nodeId - groupId:(uint16_t)groupId - endpointId:(uint8_t)endpointId - clusterId:(uint16_t)clusterId - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributePrimary2X:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3150,20 +5042,17 @@ - (void)bind:(uint64_t)nodeId return; } - CHIP_ERROR err = self.cppCluster.Bind(onSuccess->Cancel(), onFailure->Cancel(), nodeId, groupId, endpointId, clusterId); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2X(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)unbind:(uint64_t)nodeId - groupId:(uint16_t)groupId - endpointId:(uint8_t)endpointId - clusterId:(uint16_t)clusterId - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary2Y:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3176,7 +5065,7 @@ - (void)unbind:(uint64_t)nodeId return; } - CHIP_ERROR err = self.cppCluster.Unbind(onSuccess->Cancel(), onFailure->Cancel(), nodeId, groupId, endpointId, clusterId); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Y(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3184,9 +5073,9 @@ - (void)unbind:(uint64_t)nodeId } } -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)readAttributePrimary2Intensity:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3199,7 +5088,7 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Intensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3207,26 +5096,9 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler } } -@end - -@interface CHIPColorControl () -@property (readonly) Controller::ColorControlCluster cppCluster; -@end - -@implementation CHIPColorControl - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)moveColor:(int16_t)rateX - rateY:(int16_t)rateY - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributePrimary3X:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3239,23 +5111,17 @@ - (void)moveColor:(int16_t)rateX return; } - CHIP_ERROR err - = self.cppCluster.MoveColor(onSuccess->Cancel(), onFailure->Cancel(), rateX, rateY, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3X(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveColorTemperature:(uint8_t)moveMode - rate:(uint16_t)rate - colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum - colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary3Y:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3268,21 +5134,17 @@ - (void)moveColorTemperature:(uint8_t)moveMode return; } - CHIP_ERROR err = self.cppCluster.MoveColorTemperature(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, - colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Y(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveHue:(uint8_t)moveMode - rate:(uint8_t)rate - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary3Intensity:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3295,21 +5157,17 @@ - (void)moveHue:(uint8_t)moveMode return; } - CHIP_ERROR err - = self.cppCluster.MoveHue(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Intensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveSaturation:(uint8_t)moveMode - rate:(uint8_t)rate - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary4X:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3322,22 +5180,17 @@ - (void)moveSaturation:(uint8_t)moveMode return; } - CHIP_ERROR err - = self.cppCluster.MoveSaturation(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4X(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveToColor:(uint16_t)colorX - colorY:(uint16_t)colorY - transitionTime:(uint16_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary4Y:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3350,21 +5203,17 @@ - (void)moveToColor:(uint16_t)colorX return; } - CHIP_ERROR err = self.cppCluster.MoveToColor( - onSuccess->Cancel(), onFailure->Cancel(), colorX, colorY, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Y(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveToColorTemperature:(uint16_t)colorTemperature - transitionTime:(uint16_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary4Intensity:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3377,22 +5226,17 @@ - (void)moveToColorTemperature:(uint16_t)colorTemperature return; } - CHIP_ERROR err = self.cppCluster.MoveToColorTemperature( - onSuccess->Cancel(), onFailure->Cancel(), colorTemperature, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Intensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveToHue:(uint8_t)hue - direction:(uint8_t)direction - transitionTime:(uint16_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary5X:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3405,22 +5249,17 @@ - (void)moveToHue:(uint8_t)hue return; } - CHIP_ERROR err = self.cppCluster.MoveToHue( - onSuccess->Cancel(), onFailure->Cancel(), hue, direction, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5X(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveToHueAndSaturation:(uint8_t)hue - saturation:(uint8_t)saturation - transitionTime:(uint16_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary5Y:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3433,21 +5272,17 @@ - (void)moveToHueAndSaturation:(uint8_t)hue return; } - CHIP_ERROR err = self.cppCluster.MoveToHueAndSaturation( - onSuccess->Cancel(), onFailure->Cancel(), hue, saturation, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Y(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveToSaturation:(uint8_t)saturation - transitionTime:(uint16_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary5Intensity:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3460,22 +5295,17 @@ - (void)moveToSaturation:(uint8_t)saturation return; } - CHIP_ERROR err = self.cppCluster.MoveToSaturation( - onSuccess->Cancel(), onFailure->Cancel(), saturation, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Intensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stepColor:(int16_t)stepX - stepY:(int16_t)stepY - transitionTime:(uint16_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary6X:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3488,24 +5318,17 @@ - (void)stepColor:(int16_t)stepX return; } - CHIP_ERROR err = self.cppCluster.StepColor( - onSuccess->Cancel(), onFailure->Cancel(), stepX, stepY, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6X(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stepColorTemperature:(uint8_t)stepMode - stepSize:(uint16_t)stepSize - transitionTime:(uint16_t)transitionTime - colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum - colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary6Y:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3518,22 +5341,17 @@ - (void)stepColorTemperature:(uint8_t)stepMode return; } - CHIP_ERROR err = self.cppCluster.StepColorTemperature(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, - transitionTime, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Y(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stepHue:(uint8_t)stepMode - stepSize:(uint8_t)stepSize - transitionTime:(uint8_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary6Intensity:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3546,22 +5364,17 @@ - (void)stepHue:(uint8_t)stepMode return; } - CHIP_ERROR err = self.cppCluster.StepHue( - onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Intensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stepSaturation:(uint8_t)stepMode - stepSize:(uint8_t)stepSize - transitionTime:(uint8_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeWhitePointX:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3574,17 +5387,15 @@ - (void)stepSaturation:(uint8_t)stepMode return; } - CHIP_ERROR err = self.cppCluster.StepSaturation( - onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointX(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stopMoveStep:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)writeAttributeWhitePointX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -3599,7 +5410,7 @@ - (void)stopMoveStep:(uint8_t)optionsMask return; } - CHIP_ERROR err = self.cppCluster.StopMoveStep(onSuccess->Cancel(), onFailure->Cancel(), optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointX(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3607,9 +5418,9 @@ - (void)stopMoveStep:(uint8_t)optionsMask } } -- (void)readAttributeCurrentHue:(ResponseHandler)completionHandler +- (void)readAttributeWhitePointY:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3622,7 +5433,7 @@ - (void)readAttributeCurrentHue:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentHue(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointY(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3630,10 +5441,7 @@ - (void)readAttributeCurrentHue:(ResponseHandler)completionHandler } } -- (void)configureAttributeCurrentHue:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(uint8_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)writeAttributeWhitePointY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -3648,8 +5456,7 @@ - (void)configureAttributeCurrentHue:(uint16_t)minInterval return; } - CHIP_ERROR err - = self.cppCluster.ConfigureAttributeCurrentHue(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointY(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3657,24 +5464,9 @@ - (void)configureAttributeCurrentHue:(uint16_t)minInterval } } -- (void)reportAttributeCurrentHue:(ResponseHandler)reportHandler -{ - CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentHue(onReport->Cancel()); - if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); - } -} - -- (void)readAttributeCurrentSaturation:(ResponseHandler)completionHandler +- (void)readAttributeColorPointRX:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3687,7 +5479,7 @@ - (void)readAttributeCurrentSaturation:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentSaturation(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRX(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3695,10 +5487,7 @@ - (void)readAttributeCurrentSaturation:(ResponseHandler)completionHandler } } -- (void)configureAttributeCurrentSaturation:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(uint8_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointRX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -3713,8 +5502,7 @@ - (void)configureAttributeCurrentSaturation:(uint16_t)minInterval return; } - CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentSaturation( - onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRX(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3722,22 +5510,7 @@ - (void)configureAttributeCurrentSaturation:(uint16_t)minInterval } } -- (void)reportAttributeCurrentSaturation:(ResponseHandler)reportHandler -{ - CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentSaturation(onReport->Cancel()); - if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); - } -} - -- (void)readAttributeRemainingTime:(ResponseHandler)completionHandler +- (void)readAttributeColorPointRY:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -3752,7 +5525,7 @@ - (void)readAttributeRemainingTime:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeRemainingTime(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRY(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3760,9 +5533,9 @@ - (void)readAttributeRemainingTime:(ResponseHandler)completionHandler } } -- (void)readAttributeCurrentX:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointRY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3775,7 +5548,7 @@ - (void)readAttributeCurrentX:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentX(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRY(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3783,12 +5556,9 @@ - (void)readAttributeCurrentX:(ResponseHandler)completionHandler } } -- (void)configureAttributeCurrentX:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(uint16_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeColorPointRIntensity:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3801,8 +5571,7 @@ - (void)configureAttributeCurrentX:(uint16_t)minInterval return; } - CHIP_ERROR err - = self.cppCluster.ConfigureAttributeCurrentX(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRIntensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3810,24 +5579,9 @@ - (void)configureAttributeCurrentX:(uint16_t)minInterval } } -- (void)reportAttributeCurrentX:(ResponseHandler)reportHandler -{ - CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentX(onReport->Cancel()); - if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); - } -} - -- (void)readAttributeCurrentY:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointRIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3840,7 +5594,7 @@ - (void)readAttributeCurrentY:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentY(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRIntensity(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3848,12 +5602,9 @@ - (void)readAttributeCurrentY:(ResponseHandler)completionHandler } } -- (void)configureAttributeCurrentY:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(uint16_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeColorPointGX:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3866,8 +5617,7 @@ - (void)configureAttributeCurrentY:(uint16_t)minInterval return; } - CHIP_ERROR err - = self.cppCluster.ConfigureAttributeCurrentY(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGX(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3875,24 +5625,32 @@ - (void)configureAttributeCurrentY:(uint16_t)minInterval } } -- (void)reportAttributeCurrentY:(ResponseHandler)reportHandler +- (void)writeAttributeColorPointGX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentY(onReport->Cancel()); + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGX(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)readAttributeDriftCompensation:(ResponseHandler)completionHandler +- (void)readAttributeColorPointGY:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3905,7 +5663,7 @@ - (void)readAttributeDriftCompensation:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeDriftCompensation(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGY(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3913,10 +5671,9 @@ - (void)readAttributeDriftCompensation:(ResponseHandler)completionHandler } } -- (void)readAttributeCompensationText:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointGY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3929,7 +5686,7 @@ - (void)readAttributeCompensationText:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCompensationText(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGY(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3937,9 +5694,9 @@ - (void)readAttributeCompensationText:(ResponseHandler)completionHandler } } -- (void)readAttributeColorTemperature:(ResponseHandler)completionHandler +- (void)readAttributeColorPointGIntensity:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3952,7 +5709,7 @@ - (void)readAttributeColorTemperature:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorTemperature(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGIntensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3960,10 +5717,7 @@ - (void)readAttributeColorTemperature:(ResponseHandler)completionHandler } } -- (void)configureAttributeColorTemperature:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(uint16_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointGIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -3978,8 +5732,7 @@ - (void)configureAttributeColorTemperature:(uint16_t)minInterval return; } - CHIP_ERROR err = self.cppCluster.ConfigureAttributeColorTemperature( - onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGIntensity(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3987,24 +5740,32 @@ - (void)configureAttributeColorTemperature:(uint16_t)minInterval } } -- (void)reportAttributeColorTemperature:(ResponseHandler)reportHandler +- (void)readAttributeColorPointBX:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.ReportAttributeColorTemperature(onReport->Cancel()); + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBX(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)readAttributeColorMode:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointBX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4017,7 +5778,7 @@ - (void)readAttributeColorMode:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorMode(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBX(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4025,9 +5786,9 @@ - (void)readAttributeColorMode:(ResponseHandler)completionHandler } } -- (void)readAttributeColorControlOptions:(ResponseHandler)completionHandler +- (void)readAttributeColorPointBY:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4040,7 +5801,7 @@ - (void)readAttributeColorControlOptions:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorControlOptions(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBY(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4048,7 +5809,7 @@ - (void)readAttributeColorControlOptions:(ResponseHandler)completionHandler } } -- (void)writeAttributeColorControlOptions:(uint8_t)value completionHandler:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointBY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4063,7 +5824,7 @@ - (void)writeAttributeColorControlOptions:(uint8_t)value completionHandler:(Resp return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorControlOptions(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBY(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4071,7 +5832,7 @@ - (void)writeAttributeColorControlOptions:(uint8_t)value completionHandler:(Resp } } -- (void)readAttributeNumberOfPrimaries:(ResponseHandler)completionHandler +- (void)readAttributeColorPointBIntensity:(ResponseHandler)completionHandler { CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4086,7 +5847,7 @@ - (void)readAttributeNumberOfPrimaries:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeNumberOfPrimaries(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBIntensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4094,9 +5855,9 @@ - (void)readAttributeNumberOfPrimaries:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary1X:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointBIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4109,7 +5870,7 @@ - (void)readAttributePrimary1X:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1X(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBIntensity(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4117,7 +5878,7 @@ - (void)readAttributePrimary1X:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary1Y:(ResponseHandler)completionHandler +- (void)readAttributeEnhancedCurrentHue:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4132,7 +5893,7 @@ - (void)readAttributePrimary1Y:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Y(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedCurrentHue(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4140,7 +5901,7 @@ - (void)readAttributePrimary1Y:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary1Intensity:(ResponseHandler)completionHandler +- (void)readAttributeEnhancedColorMode:(ResponseHandler)completionHandler { CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4155,7 +5916,7 @@ - (void)readAttributePrimary1Intensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Intensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedColorMode(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4163,9 +5924,9 @@ - (void)readAttributePrimary1Intensity:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary2X:(ResponseHandler)completionHandler +- (void)readAttributeColorLoopActive:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4178,7 +5939,7 @@ - (void)readAttributePrimary2X:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2X(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopActive(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4186,9 +5947,9 @@ - (void)readAttributePrimary2X:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary2Y:(ResponseHandler)completionHandler +- (void)readAttributeColorLoopDirection:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4201,7 +5962,7 @@ - (void)readAttributePrimary2Y:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Y(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopDirection(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4209,9 +5970,9 @@ - (void)readAttributePrimary2Y:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary2Intensity:(ResponseHandler)completionHandler +- (void)readAttributeColorLoopTime:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4224,7 +5985,7 @@ - (void)readAttributePrimary2Intensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Intensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopTime(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4232,7 +5993,7 @@ - (void)readAttributePrimary2Intensity:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary3X:(ResponseHandler)completionHandler +- (void)readAttributeColorCapabilities:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4247,7 +6008,7 @@ - (void)readAttributePrimary3X:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3X(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorCapabilities(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4255,7 +6016,7 @@ - (void)readAttributePrimary3X:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary3Y:(ResponseHandler)completionHandler +- (void)readAttributeColorTempPhysicalMin:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4270,7 +6031,7 @@ - (void)readAttributePrimary3Y:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Y(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMin(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4278,9 +6039,9 @@ - (void)readAttributePrimary3Y:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary3Intensity:(ResponseHandler)completionHandler +- (void)readAttributeColorTempPhysicalMax:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4293,7 +6054,7 @@ - (void)readAttributePrimary3Intensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Intensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMax(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4301,7 +6062,7 @@ - (void)readAttributePrimary3Intensity:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary4X:(ResponseHandler)completionHandler +- (void)readAttributeCoupleColorTempToLevelMinMireds:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4316,7 +6077,7 @@ - (void)readAttributePrimary4X:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4X(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeCoupleColorTempToLevelMinMireds(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4324,7 +6085,7 @@ - (void)readAttributePrimary4X:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary4Y:(ResponseHandler)completionHandler +- (void)readAttributeStartUpColorTemperatureMireds:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4339,7 +6100,7 @@ - (void)readAttributePrimary4Y:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Y(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeStartUpColorTemperatureMireds(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4347,9 +6108,9 @@ - (void)readAttributePrimary4Y:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary4Intensity:(ResponseHandler)completionHandler +- (void)writeAttributeStartUpColorTemperatureMireds:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4362,7 +6123,7 @@ - (void)readAttributePrimary4Intensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Intensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeStartUpColorTemperatureMireds(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4370,7 +6131,7 @@ - (void)readAttributePrimary4Intensity:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary5X:(ResponseHandler)completionHandler +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4385,7 +6146,7 @@ - (void)readAttributePrimary5X:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5X(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4393,9 +6154,23 @@ - (void)readAttributePrimary5X:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary5Y:(ResponseHandler)completionHandler +@end + +@interface CHIPContentLaunch () +@property (readonly) Controller::ContentLaunchCluster cppCluster; +@end + +@implementation CHIPContentLaunch + +- (Controller::ClusterBase *)getCluster { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)launchContent:(uint8_t)autoPlay data:(NSString *)data completionHandler:(ResponseHandler)completionHandler +{ + CHIPContentLaunchClusterLaunchContentResponseCallbackBridge * onSuccess + = new CHIPContentLaunchClusterLaunchContentResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4408,17 +6183,21 @@ - (void)readAttributePrimary5Y:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Y(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.LaunchContent(onSuccess->Cancel(), onFailure->Cancel(), autoPlay, + chip::ByteSpan((const uint8_t *) [data dataUsingEncoding:NSUTF8StringEncoding].bytes, + [data lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributePrimary5Intensity:(ResponseHandler)completionHandler +- (void)launchURL:(NSString *)contentURL + displayString:(NSString *)displayString + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPContentLaunchClusterLaunchURLResponseCallbackBridge * onSuccess + = new CHIPContentLaunchClusterLaunchURLResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4431,7 +6210,11 @@ - (void)readAttributePrimary5Intensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Intensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.LaunchURL(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [contentURL dataUsingEncoding:NSUTF8StringEncoding].bytes, + [contentURL lengthOfBytesUsingEncoding:NSUTF8StringEncoding]), + chip::ByteSpan((const uint8_t *) [displayString dataUsingEncoding:NSUTF8StringEncoding].bytes, + [displayString lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4439,9 +6222,10 @@ - (void)readAttributePrimary5Intensity:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary6X:(ResponseHandler)completionHandler +- (void)readAttributeAcceptsHeaderList:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4454,7 +6238,7 @@ - (void)readAttributePrimary6X:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6X(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeAcceptsHeaderList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4462,9 +6246,10 @@ - (void)readAttributePrimary6X:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary6Y:(ResponseHandler)completionHandler +- (void)readAttributeSupportedStreamingTypes:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4477,7 +6262,7 @@ - (void)readAttributePrimary6Y:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Y(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeSupportedStreamingTypes(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4485,9 +6270,9 @@ - (void)readAttributePrimary6Y:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary6Intensity:(ResponseHandler)completionHandler +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4500,7 +6285,7 @@ - (void)readAttributePrimary6Intensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Intensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4508,9 +6293,23 @@ - (void)readAttributePrimary6Intensity:(ResponseHandler)completionHandler } } -- (void)readAttributeWhitePointX:(ResponseHandler)completionHandler +@end + +@interface CHIPDescriptor () +@property (readonly) Controller::DescriptorCluster cppCluster; +@end + +@implementation CHIPDescriptor + +- (Controller::ClusterBase *)getCluster { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)readAttributeDeviceList:(ResponseHandler)completionHandler +{ + CHIPDescriptorDeviceListAttributeCallbackBridge * onSuccess + = new CHIPDescriptorDeviceListAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4523,7 +6322,7 @@ - (void)readAttributeWhitePointX:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointX(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeDeviceList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4531,9 +6330,10 @@ - (void)readAttributeWhitePointX:(ResponseHandler)completionHandler } } -- (void)writeAttributeWhitePointX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeServerList:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDescriptorServerListAttributeCallbackBridge * onSuccess + = new CHIPDescriptorServerListAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4546,7 +6346,7 @@ - (void)writeAttributeWhitePointX:(uint16_t)value completionHandler:(ResponseHan return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointX(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ReadAttributeServerList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4554,9 +6354,10 @@ - (void)writeAttributeWhitePointX:(uint16_t)value completionHandler:(ResponseHan } } -- (void)readAttributeWhitePointY:(ResponseHandler)completionHandler +- (void)readAttributeClientList:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDescriptorClientListAttributeCallbackBridge * onSuccess + = new CHIPDescriptorClientListAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4569,7 +6370,7 @@ - (void)readAttributeWhitePointY:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointY(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeClientList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4577,9 +6378,10 @@ - (void)readAttributeWhitePointY:(ResponseHandler)completionHandler } } -- (void)writeAttributeWhitePointY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)readAttributePartsList:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDescriptorPartsListAttributeCallbackBridge * onSuccess + = new CHIPDescriptorPartsListAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4592,7 +6394,7 @@ - (void)writeAttributeWhitePointY:(uint16_t)value completionHandler:(ResponseHan return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointY(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ReadAttributePartsList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4600,7 +6402,7 @@ - (void)writeAttributeWhitePointY:(uint16_t)value completionHandler:(ResponseHan } } -- (void)readAttributeColorPointRX:(ResponseHandler)completionHandler +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4615,7 +6417,7 @@ - (void)readAttributeColorPointRX:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRX(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4623,9 +6425,23 @@ - (void)readAttributeColorPointRX:(ResponseHandler)completionHandler } } -- (void)writeAttributeColorPointRX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +@end + +@interface CHIPDoorLock () +@property (readonly) Controller::DoorLockCluster cppCluster; +@end + +@implementation CHIPDoorLock + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)clearAllPins:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterClearAllPinsResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterClearAllPinsResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4638,17 +6454,17 @@ - (void)writeAttributeColorPointRX:(uint16_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRX(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ClearAllPins(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointRY:(ResponseHandler)completionHandler +- (void)clearAllRfids:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4661,17 +6477,17 @@ - (void)readAttributeColorPointRY:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRY(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ClearAllRfids(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointRY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)clearHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4684,17 +6500,17 @@ - (void)writeAttributeColorPointRY:(uint16_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRY(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ClearHolidaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointRIntensity:(ResponseHandler)completionHandler +- (void)clearPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterClearPinResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterClearPinResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4707,17 +6523,17 @@ - (void)readAttributeColorPointRIntensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRIntensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ClearPin(onSuccess->Cancel(), onFailure->Cancel(), userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointRIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler +- (void)clearRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterClearRfidResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterClearRfidResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4730,17 +6546,17 @@ - (void)writeAttributeColorPointRIntensity:(uint8_t)value completionHandler:(Res return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRIntensity(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ClearRfid(onSuccess->Cancel(), onFailure->Cancel(), userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointGX:(ResponseHandler)completionHandler +- (void)clearWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4753,17 +6569,17 @@ - (void)readAttributeColorPointGX:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGX(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ClearWeekdaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointGX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)clearYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4776,17 +6592,17 @@ - (void)writeAttributeColorPointGX:(uint16_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGX(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ClearYeardaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointGY:(ResponseHandler)completionHandler +- (void)getHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4799,17 +6615,17 @@ - (void)readAttributeColorPointGY:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGY(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.GetHolidaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointGY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)getLogRecord:(uint16_t)logIndex completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterGetLogRecordResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterGetLogRecordResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4822,17 +6638,17 @@ - (void)writeAttributeColorPointGY:(uint16_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGY(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.GetLogRecord(onSuccess->Cancel(), onFailure->Cancel(), logIndex); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointGIntensity:(ResponseHandler)completionHandler +- (void)getPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterGetPinResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterGetPinResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4845,17 +6661,17 @@ - (void)readAttributeColorPointGIntensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGIntensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.GetPin(onSuccess->Cancel(), onFailure->Cancel(), userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointGIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler +- (void)getRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterGetRfidResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterGetRfidResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4868,17 +6684,17 @@ - (void)writeAttributeColorPointGIntensity:(uint8_t)value completionHandler:(Res return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGIntensity(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.GetRfid(onSuccess->Cancel(), onFailure->Cancel(), userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointBX:(ResponseHandler)completionHandler +- (void)getUserType:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterGetUserTypeResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterGetUserTypeResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4891,17 +6707,17 @@ - (void)readAttributeColorPointBX:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBX(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.GetUserType(onSuccess->Cancel(), onFailure->Cancel(), userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointBX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)getWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4914,17 +6730,17 @@ - (void)writeAttributeColorPointBX:(uint16_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBX(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.GetWeekdaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointBY:(ResponseHandler)completionHandler +- (void)getYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4937,17 +6753,17 @@ - (void)readAttributeColorPointBY:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBY(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.GetYeardaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointBY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)lockDoor:(NSString *)pin completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterLockDoorResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterLockDoorResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4960,17 +6776,23 @@ - (void)writeAttributeColorPointBY:(uint16_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBY(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.LockDoor(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, + [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointBIntensity:(ResponseHandler)completionHandler +- (void)setHolidaySchedule:(uint8_t)scheduleId + localStartTime:(uint32_t)localStartTime + localEndTime:(uint32_t)localEndTime + operatingModeDuringHoliday:(uint8_t)operatingModeDuringHoliday + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4983,17 +6805,22 @@ - (void)readAttributeColorPointBIntensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBIntensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SetHolidaySchedule( + onSuccess->Cancel(), onFailure->Cancel(), scheduleId, localStartTime, localEndTime, operatingModeDuringHoliday); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointBIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler +- (void)setPin:(uint16_t)userId + userStatus:(uint8_t)userStatus + userType:(uint8_t)userType + pin:(NSString *)pin + completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterSetPinResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterSetPinResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5006,17 +6833,23 @@ - (void)writeAttributeColorPointBIntensity:(uint8_t)value completionHandler:(Res return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBIntensity(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.SetPin(onSuccess->Cancel(), onFailure->Cancel(), userId, userStatus, userType, + chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, + [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeEnhancedCurrentHue:(ResponseHandler)completionHandler +- (void)setRfid:(uint16_t)userId + userStatus:(uint8_t)userStatus + userType:(uint8_t)userType + id:(NSString *)id + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterSetRfidResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterSetRfidResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5029,17 +6862,19 @@ - (void)readAttributeEnhancedCurrentHue:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedCurrentHue(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SetRfid(onSuccess->Cancel(), onFailure->Cancel(), userId, userStatus, userType, + chip::ByteSpan((const uint8_t *) [id dataUsingEncoding:NSUTF8StringEncoding].bytes, + [id lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeEnhancedColorMode:(ResponseHandler)completionHandler +- (void)setUserType:(uint16_t)userId userType:(uint8_t)userType completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterSetUserTypeResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterSetUserTypeResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5052,17 +6887,24 @@ - (void)readAttributeEnhancedColorMode:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedColorMode(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SetUserType(onSuccess->Cancel(), onFailure->Cancel(), userId, userType); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorLoopActive:(ResponseHandler)completionHandler +- (void)setWeekdaySchedule:(uint8_t)scheduleId + userId:(uint16_t)userId + daysMask:(uint8_t)daysMask + startHour:(uint8_t)startHour + startMinute:(uint8_t)startMinute + endHour:(uint8_t)endHour + endMinute:(uint8_t)endMinute + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5075,17 +6917,22 @@ - (void)readAttributeColorLoopActive:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopActive(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SetWeekdaySchedule( + onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId, daysMask, startHour, startMinute, endHour, endMinute); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorLoopDirection:(ResponseHandler)completionHandler +- (void)setYeardaySchedule:(uint8_t)scheduleId + userId:(uint16_t)userId + localStartTime:(uint32_t)localStartTime + localEndTime:(uint32_t)localEndTime + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5098,17 +6945,18 @@ - (void)readAttributeColorLoopDirection:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopDirection(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SetYeardaySchedule( + onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId, localStartTime, localEndTime); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorLoopTime:(ResponseHandler)completionHandler +- (void)unlockDoor:(NSString *)pin completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterUnlockDoorResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterUnlockDoorResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5121,17 +6969,19 @@ - (void)readAttributeColorLoopTime:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopTime(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.UnlockDoor(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, + [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorCapabilities:(ResponseHandler)completionHandler +- (void)unlockWithTimeout:(uint16_t)timeoutInSeconds pin:(NSString *)pin completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5144,7 +6994,9 @@ - (void)readAttributeColorCapabilities:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorCapabilities(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.UnlockWithTimeout(onSuccess->Cancel(), onFailure->Cancel(), timeoutInSeconds, + chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, + [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5152,9 +7004,9 @@ - (void)readAttributeColorCapabilities:(ResponseHandler)completionHandler } } -- (void)readAttributeColorTempPhysicalMin:(ResponseHandler)completionHandler +- (void)readAttributeLockState:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5167,7 +7019,7 @@ - (void)readAttributeColorTempPhysicalMin:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMin(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeLockState(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5175,9 +7027,11 @@ - (void)readAttributeColorTempPhysicalMin:(ResponseHandler)completionHandler } } -- (void)readAttributeColorTempPhysicalMax:(ResponseHandler)completionHandler +- (void)configureAttributeLockState:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5190,7 +7044,8 @@ - (void)readAttributeColorTempPhysicalMax:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMax(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.ConfigureAttributeLockState(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5198,32 +7053,24 @@ - (void)readAttributeColorTempPhysicalMax:(ResponseHandler)completionHandler } } -- (void)readAttributeCoupleColorTempToLevelMinMireds:(ResponseHandler)completionHandler +- (void)reportAttributeLockState:(ResponseHandler)reportHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCoupleColorTempToLevelMinMireds(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReportAttributeLockState(onReport->Cancel()); if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)readAttributeStartUpColorTemperatureMireds:(ResponseHandler)completionHandler +- (void)readAttributeLockType:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5236,7 +7083,7 @@ - (void)readAttributeStartUpColorTemperatureMireds:(ResponseHandler)completionHa return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeStartUpColorTemperatureMireds(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeLockType(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5244,9 +7091,10 @@ - (void)readAttributeStartUpColorTemperatureMireds:(ResponseHandler)completionHa } } -- (void)writeAttributeStartUpColorTemperatureMireds:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeActuatorEnabled:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPBooleanAttributeCallbackBridge * onSuccess + = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5259,7 +7107,7 @@ - (void)writeAttributeStartUpColorTemperatureMireds:(uint16_t)value completionHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeStartUpColorTemperatureMireds(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ReadAttributeActuatorEnabled(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5292,21 +7140,24 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler @end -@interface CHIPDescriptor () -@property (readonly) Controller::DescriptorCluster cppCluster; +@interface CHIPGeneralCommissioning () +@property (readonly) Controller::GeneralCommissioningCluster cppCluster; @end -@implementation CHIPDescriptor +@implementation CHIPGeneralCommissioning - (Controller::ClusterBase *)getCluster { return &_cppCluster; } -- (void)readAttributeDeviceList:(ResponseHandler)completionHandler +- (void)armFailSafe:(uint16_t)expiryLengthSeconds + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPDescriptorDeviceListAttributeCallbackBridge * onSuccess - = new CHIPDescriptorDeviceListAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGeneralCommissioningClusterArmFailSafeResponseCallbackBridge * onSuccess + = new CHIPGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5319,18 +7170,18 @@ - (void)readAttributeDeviceList:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeDeviceList(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.ArmFailSafe(onSuccess->Cancel(), onFailure->Cancel(), expiryLengthSeconds, breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeServerList:(ResponseHandler)completionHandler +- (void)commissioningComplete:(ResponseHandler)completionHandler { - CHIPDescriptorServerListAttributeCallbackBridge * onSuccess - = new CHIPDescriptorServerListAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge * onSuccess + = new CHIPGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5343,18 +7194,21 @@ - (void)readAttributeServerList:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeServerList(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.CommissioningComplete(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClientList:(ResponseHandler)completionHandler +- (void)setRegulatoryConfig:(uint8_t)location + countryCode:(NSString *)countryCode + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPDescriptorClientListAttributeCallbackBridge * onSuccess - = new CHIPDescriptorClientListAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge * onSuccess + = new CHIPGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5367,7 +7221,10 @@ - (void)readAttributeClientList:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClientList(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SetRegulatoryConfig(onSuccess->Cancel(), onFailure->Cancel(), location, + chip::ByteSpan((const uint8_t *) [countryCode dataUsingEncoding:NSUTF8StringEncoding].bytes, + [countryCode lengthOfBytesUsingEncoding:NSUTF8StringEncoding]), + breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5375,10 +7232,10 @@ - (void)readAttributeClientList:(ResponseHandler)completionHandler } } -- (void)readAttributePartsList:(ResponseHandler)completionHandler +- (void)readAttributeFabricId:(ResponseHandler)completionHandler { - CHIPDescriptorPartsListAttributeCallbackBridge * onSuccess - = new CHIPDescriptorPartsListAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5391,7 +7248,7 @@ - (void)readAttributePartsList:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePartsList(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeFabricId(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5399,9 +7256,9 @@ - (void)readAttributePartsList:(ResponseHandler)completionHandler } } -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)readAttributeBreadcrumb:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt64uAttributeCallbackBridge * onSuccess = new CHIPInt64uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5414,7 +7271,7 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeBreadcrumb(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5422,23 +7279,9 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler } } -@end - -@interface CHIPDoorLock () -@property (readonly) Controller::DoorLockCluster cppCluster; -@end - -@implementation CHIPDoorLock - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)clearAllPins:(ResponseHandler)completionHandler +- (void)writeAttributeBreadcrumb:(uint64_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPDoorLockClusterClearAllPinsResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterClearAllPinsResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5451,17 +7294,17 @@ - (void)clearAllPins:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ClearAllPins(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeBreadcrumb(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)clearAllRfids:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5474,40 +7317,31 @@ - (void)clearAllRfids:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ClearAllRfids(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)clearHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler -{ - CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } +@end - CHIP_ERROR err = self.cppCluster.ClearHolidaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId); - if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); - } +@interface CHIPGroupKeyManagement () +@property (readonly) Controller::GroupKeyManagementCluster cppCluster; +@end + +@implementation CHIPGroupKeyManagement + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; } -- (void)clearPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeGroups:(ResponseHandler)completionHandler { - CHIPDoorLockClusterClearPinResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterClearPinResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGroupKeyManagementGroupsAttributeCallbackBridge * onSuccess + = new CHIPGroupKeyManagementGroupsAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5520,17 +7354,18 @@ - (void)clearPin:(uint16_t)userId completionHandler:(ResponseHandler)completionH return; } - CHIP_ERROR err = self.cppCluster.ClearPin(onSuccess->Cancel(), onFailure->Cancel(), userId); + CHIP_ERROR err = self.cppCluster.ReadAttributeGroups(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)clearRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeGroupKeys:(ResponseHandler)completionHandler { - CHIPDoorLockClusterClearRfidResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterClearRfidResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge * onSuccess + = new CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5543,17 +7378,17 @@ - (void)clearRfid:(uint16_t)userId completionHandler:(ResponseHandler)completion return; } - CHIP_ERROR err = self.cppCluster.ClearRfid(onSuccess->Cancel(), onFailure->Cancel(), userId); + CHIP_ERROR err = self.cppCluster.ReadAttributeGroupKeys(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)clearWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5566,40 +7401,31 @@ - (void)clearWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId complet return; } - CHIP_ERROR err = self.cppCluster.ClearWeekdaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)clearYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler -{ - CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } +@end - CHIP_ERROR err = self.cppCluster.ClearYeardaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); - if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); - } +@interface CHIPGroups () +@property (readonly) Controller::GroupsCluster cppCluster; +@end + +@implementation CHIPGroups + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; } -- (void)getHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler + +- (void)addGroup:(uint16_t)groupId groupName:(NSString *)groupName completionHandler:(ResponseHandler)completionHandler { - CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGroupsClusterAddGroupResponseCallbackBridge * onSuccess + = new CHIPGroupsClusterAddGroupResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5612,17 +7438,18 @@ - (void)getHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandle return; } - CHIP_ERROR err = self.cppCluster.GetHolidaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId); + CHIP_ERROR err = self.cppCluster.AddGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId, + chip::ByteSpan((const uint8_t *) [groupName dataUsingEncoding:NSUTF8StringEncoding].bytes, + [groupName lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getLogRecord:(uint16_t)logIndex completionHandler:(ResponseHandler)completionHandler +- (void)addGroupIfIdentifying:(uint16_t)groupId groupName:(NSString *)groupName completionHandler:(ResponseHandler)completionHandler { - CHIPDoorLockClusterGetLogRecordResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterGetLogRecordResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5635,17 +7462,19 @@ - (void)getLogRecord:(uint16_t)logIndex completionHandler:(ResponseHandler)compl return; } - CHIP_ERROR err = self.cppCluster.GetLogRecord(onSuccess->Cancel(), onFailure->Cancel(), logIndex); + CHIP_ERROR err = self.cppCluster.AddGroupIfIdentifying(onSuccess->Cancel(), onFailure->Cancel(), groupId, + chip::ByteSpan((const uint8_t *) [groupName dataUsingEncoding:NSUTF8StringEncoding].bytes, + [groupName lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler +- (void)getGroupMembership:(uint8_t)groupCount groupList:(uint16_t)groupList completionHandler:(ResponseHandler)completionHandler { - CHIPDoorLockClusterGetPinResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterGetPinResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge * onSuccess + = new CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5658,17 +7487,16 @@ - (void)getPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHan return; } - CHIP_ERROR err = self.cppCluster.GetPin(onSuccess->Cancel(), onFailure->Cancel(), userId); + CHIP_ERROR err = self.cppCluster.GetGroupMembership(onSuccess->Cancel(), onFailure->Cancel(), groupCount, groupList); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler +- (void)removeAllGroups:(ResponseHandler)completionHandler { - CHIPDoorLockClusterGetRfidResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterGetRfidResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5681,17 +7509,17 @@ - (void)getRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHa return; } - CHIP_ERROR err = self.cppCluster.GetRfid(onSuccess->Cancel(), onFailure->Cancel(), userId); + CHIP_ERROR err = self.cppCluster.RemoveAllGroups(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getUserType:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler +- (void)removeGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler { - CHIPDoorLockClusterGetUserTypeResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterGetUserTypeResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGroupsClusterRemoveGroupResponseCallbackBridge * onSuccess + = new CHIPGroupsClusterRemoveGroupResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5704,17 +7532,17 @@ - (void)getUserType:(uint16_t)userId completionHandler:(ResponseHandler)completi return; } - CHIP_ERROR err = self.cppCluster.GetUserType(onSuccess->Cancel(), onFailure->Cancel(), userId); + CHIP_ERROR err = self.cppCluster.RemoveGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler +- (void)viewGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler { - CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGroupsClusterViewGroupResponseCallbackBridge * onSuccess + = new CHIPGroupsClusterViewGroupResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5727,17 +7555,17 @@ - (void)getWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completio return; } - CHIP_ERROR err = self.cppCluster.GetWeekdaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); + CHIP_ERROR err = self.cppCluster.ViewGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeNameSupport:(ResponseHandler)completionHandler { - CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5750,17 +7578,17 @@ - (void)getYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completio return; } - CHIP_ERROR err = self.cppCluster.GetYeardaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); + CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)lockDoor:(NSString *)pin completionHandler:(ResponseHandler)completionHandler -{ - CHIPDoorLockClusterLockDoorResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterLockDoorResponseCallbackBridge(completionHandler, [self callbackQueue]); + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5773,23 +7601,30 @@ - (void)lockDoor:(NSString *)pin completionHandler:(ResponseHandler)completionHa return; } - CHIP_ERROR err = self.cppCluster.LockDoor(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, - [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)setHolidaySchedule:(uint8_t)scheduleId - localStartTime:(uint32_t)localStartTime - localEndTime:(uint32_t)localEndTime - operatingModeDuringHoliday:(uint8_t)operatingModeDuringHoliday - completionHandler:(ResponseHandler)completionHandler + +@end + +@interface CHIPIdentify () +@property (readonly) Controller::IdentifyCluster cppCluster; +@end + +@implementation CHIPIdentify + +- (Controller::ClusterBase *)getCluster { - CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)identify:(uint16_t)identifyTime completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5802,22 +7637,17 @@ - (void)setHolidaySchedule:(uint8_t)scheduleId return; } - CHIP_ERROR err = self.cppCluster.SetHolidaySchedule( - onSuccess->Cancel(), onFailure->Cancel(), scheduleId, localStartTime, localEndTime, operatingModeDuringHoliday); + CHIP_ERROR err = self.cppCluster.Identify(onSuccess->Cancel(), onFailure->Cancel(), identifyTime); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)setPin:(uint16_t)userId - userStatus:(uint8_t)userStatus - userType:(uint8_t)userType - pin:(NSString *)pin - completionHandler:(ResponseHandler)completionHandler +- (void)identifyQuery:(ResponseHandler)completionHandler { - CHIPDoorLockClusterSetPinResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterSetPinResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge * onSuccess + = new CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5830,23 +7660,17 @@ - (void)setPin:(uint16_t)userId return; } - CHIP_ERROR err = self.cppCluster.SetPin(onSuccess->Cancel(), onFailure->Cancel(), userId, userStatus, userType, - chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, - [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.IdentifyQuery(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)setRfid:(uint16_t)userId - userStatus:(uint8_t)userStatus - userType:(uint8_t)userType - id:(NSString *)id - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeIdentifyTime:(ResponseHandler)completionHandler { - CHIPDoorLockClusterSetRfidResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterSetRfidResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5859,19 +7683,17 @@ - (void)setRfid:(uint16_t)userId return; } - CHIP_ERROR err = self.cppCluster.SetRfid(onSuccess->Cancel(), onFailure->Cancel(), userId, userStatus, userType, - chip::ByteSpan((const uint8_t *) [id dataUsingEncoding:NSUTF8StringEncoding].bytes, - [id lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.ReadAttributeIdentifyTime(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)setUserType:(uint16_t)userId userType:(uint8_t)userType completionHandler:(ResponseHandler)completionHandler + +- (void)writeAttributeIdentifyTime:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPDoorLockClusterSetUserTypeResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterSetUserTypeResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5884,24 +7706,17 @@ - (void)setUserType:(uint16_t)userId userType:(uint8_t)userType completionHandle return; } - CHIP_ERROR err = self.cppCluster.SetUserType(onSuccess->Cancel(), onFailure->Cancel(), userId, userType); + CHIP_ERROR err = self.cppCluster.WriteAttributeIdentifyTime(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)setWeekdaySchedule:(uint8_t)scheduleId - userId:(uint16_t)userId - daysMask:(uint8_t)daysMask - startHour:(uint8_t)startHour - startMinute:(uint8_t)startMinute - endHour:(uint8_t)endHour - endMinute:(uint8_t)endMinute - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5914,22 +7729,31 @@ - (void)setWeekdaySchedule:(uint8_t)scheduleId return; } - CHIP_ERROR err = self.cppCluster.SetWeekdaySchedule( - onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId, daysMask, startHour, startMinute, endHour, endMinute); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)setYeardaySchedule:(uint8_t)scheduleId - userId:(uint16_t)userId - localStartTime:(uint32_t)localStartTime - localEndTime:(uint32_t)localEndTime - completionHandler:(ResponseHandler)completionHandler + +@end + +@interface CHIPKeypadInput () +@property (readonly) Controller::KeypadInputCluster cppCluster; +@end + +@implementation CHIPKeypadInput + +- (Controller::ClusterBase *)getCluster { - CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)sendKey:(uint8_t)keyCode completionHandler:(ResponseHandler)completionHandler +{ + CHIPKeypadInputClusterSendKeyResponseCallbackBridge * onSuccess + = new CHIPKeypadInputClusterSendKeyResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5942,18 +7766,17 @@ - (void)setYeardaySchedule:(uint8_t)scheduleId return; } - CHIP_ERROR err = self.cppCluster.SetYeardaySchedule( - onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId, localStartTime, localEndTime); + CHIP_ERROR err = self.cppCluster.SendKey(onSuccess->Cancel(), onFailure->Cancel(), keyCode); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)unlockDoor:(NSString *)pin completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPDoorLockClusterUnlockDoorResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterUnlockDoorResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5966,19 +7789,34 @@ - (void)unlockDoor:(NSString *)pin completionHandler:(ResponseHandler)completion return; } - CHIP_ERROR err = self.cppCluster.UnlockDoor(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, - [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)unlockWithTimeout:(uint16_t)timeoutInSeconds pin:(NSString *)pin completionHandler:(ResponseHandler)completionHandler + +@end + +@interface CHIPLevelControl () +@property (readonly) Controller::LevelControlCluster cppCluster; +@end + +@implementation CHIPLevelControl + +- (Controller::ClusterBase *)getCluster { - CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)move:(uint8_t)moveMode + rate:(uint8_t)rate + optionMask:(uint8_t)optionMask + optionOverride:(uint8_t)optionOverride + completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5991,19 +7829,20 @@ - (void)unlockWithTimeout:(uint16_t)timeoutInSeconds pin:(NSString *)pin complet return; } - CHIP_ERROR err = self.cppCluster.UnlockWithTimeout(onSuccess->Cancel(), onFailure->Cancel(), timeoutInSeconds, - chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, - [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.Move(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionMask, optionOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeLockState:(ResponseHandler)completionHandler +- (void)moveToLevel:(uint8_t)level + transitionTime:(uint16_t)transitionTime + optionMask:(uint8_t)optionMask + optionOverride:(uint8_t)optionOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6016,17 +7855,17 @@ - (void)readAttributeLockState:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeLockState(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.MoveToLevel(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime, optionMask, optionOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)configureAttributeLockState:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - completionHandler:(ResponseHandler)completionHandler +- (void)moveToLevelWithOnOff:(uint8_t)level + transitionTime:(uint16_t)transitionTime + completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -6041,33 +7880,16 @@ - (void)configureAttributeLockState:(uint16_t)minInterval return; } - CHIP_ERROR err - = self.cppCluster.ConfigureAttributeLockState(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval); + CHIP_ERROR err = self.cppCluster.MoveToLevelWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)reportAttributeLockState:(ResponseHandler)reportHandler -{ - CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIP_ERROR err = self.cppCluster.ReportAttributeLockState(onReport->Cancel()); - if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); - } -} - -- (void)readAttributeLockType:(ResponseHandler)completionHandler +- (void)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6080,18 +7902,21 @@ - (void)readAttributeLockType:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeLockType(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MoveWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeActuatorEnabled:(ResponseHandler)completionHandler +- (void)step:(uint8_t)stepMode + stepSize:(uint8_t)stepSize + transitionTime:(uint16_t)transitionTime + optionMask:(uint8_t)optionMask + optionOverride:(uint8_t)optionOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPBooleanAttributeCallbackBridge * onSuccess - = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6104,17 +7929,20 @@ - (void)readAttributeActuatorEnabled:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeActuatorEnabled(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.Step( + onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionMask, optionOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)stepWithOnOff:(uint8_t)stepMode + stepSize:(uint8_t)stepSize + transitionTime:(uint16_t)transitionTime + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6127,34 +7955,16 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StepWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPGeneralCommissioning () -@property (readonly) Controller::GeneralCommissioningCluster cppCluster; -@end - -@implementation CHIPGeneralCommissioning - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)armFailSafe:(uint16_t)expiryLengthSeconds - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler +- (void)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completionHandler:(ResponseHandler)completionHandler { - CHIPGeneralCommissioningClusterArmFailSafeResponseCallbackBridge * onSuccess - = new CHIPGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6167,18 +7977,16 @@ - (void)armFailSafe:(uint16_t)expiryLengthSeconds return; } - CHIP_ERROR err - = self.cppCluster.ArmFailSafe(onSuccess->Cancel(), onFailure->Cancel(), expiryLengthSeconds, breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.Stop(onSuccess->Cancel(), onFailure->Cancel(), optionMask, optionOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)commissioningComplete:(ResponseHandler)completionHandler +- (void)stopWithOnOff:(ResponseHandler)completionHandler { - CHIPGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge * onSuccess - = new CHIPGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6191,21 +7999,17 @@ - (void)commissioningComplete:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.CommissioningComplete(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StopWithOnOff(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)setRegulatoryConfig:(uint8_t)location - countryCode:(NSString *)countryCode - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeCurrentLevel:(ResponseHandler)completionHandler { - CHIPGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge * onSuccess - = new CHIPGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6217,11 +8021,8 @@ - (void)setRegulatoryConfig:(uint8_t)location completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - - CHIP_ERROR err = self.cppCluster.SetRegulatoryConfig(onSuccess->Cancel(), onFailure->Cancel(), location, - chip::ByteSpan((const uint8_t *) [countryCode dataUsingEncoding:NSUTF8StringEncoding].bytes, - [countryCode lengthOfBytesUsingEncoding:NSUTF8StringEncoding]), - breadcrumb, timeoutMs); + + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentLevel(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -6229,10 +8030,12 @@ - (void)setRegulatoryConfig:(uint8_t)location } } -- (void)readAttributeFabricId:(ResponseHandler)completionHandler +- (void)configureAttributeCurrentLevel:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(uint8_t)change + completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6245,7 +8048,8 @@ - (void)readAttributeFabricId:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeFabricId(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentLevel( + onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -6253,9 +8057,24 @@ - (void)readAttributeFabricId:(ResponseHandler)completionHandler } } -- (void)readAttributeBreadcrumb:(ResponseHandler)completionHandler +- (void)reportAttributeCurrentLevel:(ResponseHandler)reportHandler { - CHIPInt64uAttributeCallbackBridge * onSuccess = new CHIPInt64uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentLevel(onReport->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6268,7 +8087,7 @@ - (void)readAttributeBreadcrumb:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeBreadcrumb(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -6276,7 +8095,20 @@ - (void)readAttributeBreadcrumb:(ResponseHandler)completionHandler } } -- (void)writeAttributeBreadcrumb:(uint64_t)value completionHandler:(ResponseHandler)completionHandler +@end + +@interface CHIPLowPower () +@property (readonly) Controller::LowPowerCluster cppCluster; +@end + +@implementation CHIPLowPower + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)sleep:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -6291,7 +8123,7 @@ - (void)writeAttributeBreadcrumb:(uint64_t)value completionHandler:(ResponseHand return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeBreadcrumb(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.Sleep(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -6324,21 +8156,20 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler @end -@interface CHIPGroupKeyManagement () -@property (readonly) Controller::GroupKeyManagementCluster cppCluster; +@interface CHIPMediaInput () +@property (readonly) Controller::MediaInputCluster cppCluster; @end -@implementation CHIPGroupKeyManagement +@implementation CHIPMediaInput - (Controller::ClusterBase *)getCluster { return &_cppCluster; } -- (void)readAttributeGroups:(ResponseHandler)completionHandler +- (void)hideInputStatus:(ResponseHandler)completionHandler { - CHIPGroupKeyManagementGroupsAttributeCallbackBridge * onSuccess - = new CHIPGroupKeyManagementGroupsAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6351,18 +8182,16 @@ - (void)readAttributeGroups:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeGroups(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.HideInputStatus(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeGroupKeys:(ResponseHandler)completionHandler +- (void)renameInput:(uint8_t)index name:(NSString *)name completionHandler:(ResponseHandler)completionHandler { - CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge * onSuccess - = new CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6375,17 +8204,18 @@ - (void)readAttributeGroupKeys:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeGroupKeys(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.RenameInput(onSuccess->Cancel(), onFailure->Cancel(), index, + chip::ByteSpan((const uint8_t *) [name dataUsingEncoding:NSUTF8StringEncoding].bytes, + [name lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)selectInput:(uint8_t)index completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6398,31 +8228,16 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SelectInput(onSuccess->Cancel(), onFailure->Cancel(), index); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPGroups () -@property (readonly) Controller::GroupsCluster cppCluster; -@end - -@implementation CHIPGroups - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)addGroup:(uint16_t)groupId groupName:(NSString *)groupName completionHandler:(ResponseHandler)completionHandler +- (void)showInputStatus:(ResponseHandler)completionHandler { - CHIPGroupsClusterAddGroupResponseCallbackBridge * onSuccess - = new CHIPGroupsClusterAddGroupResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6435,18 +8250,18 @@ - (void)addGroup:(uint16_t)groupId groupName:(NSString *)groupName completionHan return; } - CHIP_ERROR err = self.cppCluster.AddGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId, - chip::ByteSpan((const uint8_t *) [groupName dataUsingEncoding:NSUTF8StringEncoding].bytes, - [groupName lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.ShowInputStatus(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)addGroupIfIdentifying:(uint16_t)groupId groupName:(NSString *)groupName completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeMediaInputList:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6459,19 +8274,17 @@ - (void)addGroupIfIdentifying:(uint16_t)groupId groupName:(NSString *)groupName return; } - CHIP_ERROR err = self.cppCluster.AddGroupIfIdentifying(onSuccess->Cancel(), onFailure->Cancel(), groupId, - chip::ByteSpan((const uint8_t *) [groupName dataUsingEncoding:NSUTF8StringEncoding].bytes, - [groupName lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.ReadAttributeMediaInputList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getGroupMembership:(uint8_t)groupCount groupList:(uint16_t)groupList completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge * onSuccess - = new CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6484,16 +8297,31 @@ - (void)getGroupMembership:(uint8_t)groupCount groupList:(uint16_t)groupList com return; } - CHIP_ERROR err = self.cppCluster.GetGroupMembership(onSuccess->Cancel(), onFailure->Cancel(), groupCount, groupList); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)removeAllGroups:(ResponseHandler)completionHandler + +@end + +@interface CHIPMediaPlayback () +@property (readonly) Controller::MediaPlaybackCluster cppCluster; +@end + +@implementation CHIPMediaPlayback + +- (Controller::ClusterBase *)getCluster { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)mediaFastForward:(ResponseHandler)completionHandler +{ + CHIPMediaPlaybackClusterMediaFastForwardResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaFastForwardResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6506,17 +8334,17 @@ - (void)removeAllGroups:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.RemoveAllGroups(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MediaFastForward(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)removeGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler +- (void)mediaNext:(ResponseHandler)completionHandler { - CHIPGroupsClusterRemoveGroupResponseCallbackBridge * onSuccess - = new CHIPGroupsClusterRemoveGroupResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaNextResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaNextResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6529,17 +8357,17 @@ - (void)removeGroup:(uint16_t)groupId completionHandler:(ResponseHandler)complet return; } - CHIP_ERROR err = self.cppCluster.RemoveGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId); + CHIP_ERROR err = self.cppCluster.MediaNext(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)viewGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler +- (void)mediaPause:(ResponseHandler)completionHandler { - CHIPGroupsClusterViewGroupResponseCallbackBridge * onSuccess - = new CHIPGroupsClusterViewGroupResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaPauseResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaPauseResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6552,17 +8380,17 @@ - (void)viewGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completio return; } - CHIP_ERROR err = self.cppCluster.ViewGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId); + CHIP_ERROR err = self.cppCluster.MediaPause(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeNameSupport:(ResponseHandler)completionHandler +- (void)mediaPlay:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaPlayResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaPlayResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6575,17 +8403,17 @@ - (void)readAttributeNameSupport:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MediaPlay(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)mediaPrevious:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaPreviousResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaPreviousResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6598,30 +8426,17 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MediaPrevious(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPIdentify () -@property (readonly) Controller::IdentifyCluster cppCluster; -@end - -@implementation CHIPIdentify - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)identify:(uint16_t)identifyTime completionHandler:(ResponseHandler)completionHandler +- (void)mediaRewind:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaRewindResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaRewindResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6634,17 +8449,17 @@ - (void)identify:(uint16_t)identifyTime completionHandler:(ResponseHandler)compl return; } - CHIP_ERROR err = self.cppCluster.Identify(onSuccess->Cancel(), onFailure->Cancel(), identifyTime); + CHIP_ERROR err = self.cppCluster.MediaRewind(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)identifyQuery:(ResponseHandler)completionHandler +- (void)mediaSkipBackward:(uint64_t)deltaPositionMilliseconds completionHandler:(ResponseHandler)completionHandler { - CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge * onSuccess - = new CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaSkipBackwardResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaSkipBackwardResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6657,17 +8472,17 @@ - (void)identifyQuery:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.IdentifyQuery(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MediaSkipBackward(onSuccess->Cancel(), onFailure->Cancel(), deltaPositionMilliseconds); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeIdentifyTime:(ResponseHandler)completionHandler +- (void)mediaSkipForward:(uint64_t)deltaPositionMilliseconds completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaSkipForwardResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaSkipForwardResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6680,17 +8495,17 @@ - (void)readAttributeIdentifyTime:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeIdentifyTime(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MediaSkipForward(onSuccess->Cancel(), onFailure->Cancel(), deltaPositionMilliseconds); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeIdentifyTime:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)mediaSkipSeek:(uint64_t)position completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaSkipSeekResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaSkipSeekResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6703,17 +8518,17 @@ - (void)writeAttributeIdentifyTime:(uint16_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeIdentifyTime(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.MediaSkipSeek(onSuccess->Cancel(), onFailure->Cancel(), position); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)mediaStartOver:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaStartOverResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaStartOverResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6726,34 +8541,17 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MediaStartOver(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPLevelControl () -@property (readonly) Controller::LevelControlCluster cppCluster; -@end - -@implementation CHIPLevelControl - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)move:(uint8_t)moveMode - rate:(uint8_t)rate - optionMask:(uint8_t)optionMask - optionOverride:(uint8_t)optionOverride - completionHandler:(ResponseHandler)completionHandler +- (void)mediaStop:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaStopResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaStopResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6766,20 +8564,17 @@ - (void)move:(uint8_t)moveMode return; } - CHIP_ERROR err = self.cppCluster.Move(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionMask, optionOverride); + CHIP_ERROR err = self.cppCluster.MediaStop(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveToLevel:(uint8_t)level - transitionTime:(uint16_t)transitionTime - optionMask:(uint8_t)optionMask - optionOverride:(uint8_t)optionOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6792,19 +8587,34 @@ - (void)moveToLevel:(uint8_t)level return; } - CHIP_ERROR err - = self.cppCluster.MoveToLevel(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime, optionMask, optionOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveToLevelWithOnOff:(uint8_t)level - transitionTime:(uint16_t)transitionTime - completionHandler:(ResponseHandler)completionHandler + +@end + +@interface CHIPNetworkCommissioning () +@property (readonly) Controller::NetworkCommissioningCluster cppCluster; +@end + +@implementation CHIPNetworkCommissioning + +- (Controller::ClusterBase *)getCluster { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)addThreadNetwork:(NSData *)operationalDataset + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler +{ + CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6817,16 +8627,22 @@ - (void)moveToLevelWithOnOff:(uint8_t)level return; } - CHIP_ERROR err = self.cppCluster.MoveToLevelWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime); + CHIP_ERROR err = self.cppCluster.AddThreadNetwork(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) operationalDataset.bytes, operationalDataset.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(ResponseHandler)completionHandler +- (void)addWiFiNetwork:(NSData *)ssid + credentials:(NSData *)credentials + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6839,21 +8655,22 @@ - (void)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(Re return; } - CHIP_ERROR err = self.cppCluster.MoveWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate); + CHIP_ERROR err = self.cppCluster.AddWiFiNetwork(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) ssid.bytes, ssid.length), + chip::ByteSpan((const uint8_t *) credentials.bytes, credentials.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)step:(uint8_t)stepMode - stepSize:(uint8_t)stepSize - transitionTime:(uint16_t)transitionTime - optionMask:(uint8_t)optionMask - optionOverride:(uint8_t)optionOverride - completionHandler:(ResponseHandler)completionHandler +- (void)disableNetwork:(NSData *)networkID + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6866,20 +8683,21 @@ - (void)step:(uint8_t)stepMode return; } - CHIP_ERROR err = self.cppCluster.Step( - onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionMask, optionOverride); + CHIP_ERROR err = self.cppCluster.DisableNetwork(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) networkID.bytes, networkID.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stepWithOnOff:(uint8_t)stepMode - stepSize:(uint8_t)stepSize - transitionTime:(uint16_t)transitionTime +- (void)enableNetwork:(NSData *)networkID + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6892,14 +8710,15 @@ - (void)stepWithOnOff:(uint8_t)stepMode return; } - CHIP_ERROR err = self.cppCluster.StepWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime); + CHIP_ERROR err = self.cppCluster.EnableNetwork(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) networkID.bytes, networkID.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completionHandler:(ResponseHandler)completionHandler +- (void)getLastNetworkCommissioningResult:(uint32_t)timeoutMs completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -6914,16 +8733,20 @@ - (void)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completi return; } - CHIP_ERROR err = self.cppCluster.Stop(onSuccess->Cancel(), onFailure->Cancel(), optionMask, optionOverride); + CHIP_ERROR err = self.cppCluster.GetLastNetworkCommissioningResult(onSuccess->Cancel(), onFailure->Cancel(), timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stopWithOnOff:(ResponseHandler)completionHandler +- (void)removeNetwork:(NSData *)networkID + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6936,17 +8759,21 @@ - (void)stopWithOnOff:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.StopWithOnOff(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.RemoveNetwork(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) networkID.bytes, networkID.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeCurrentLevel:(ResponseHandler)completionHandler +- (void)scanNetworks:(NSData *)ssid + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6959,20 +8786,21 @@ - (void)readAttributeCurrentLevel:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentLevel(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ScanNetworks( + onSuccess->Cancel(), onFailure->Cancel(), chip::ByteSpan((const uint8_t *) ssid.bytes, ssid.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)configureAttributeCurrentLevel:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(uint8_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)updateThreadNetwork:(NSData *)operationalDataset + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6985,27 +8813,41 @@ - (void)configureAttributeCurrentLevel:(uint16_t)minInterval return; } - CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentLevel( - onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.UpdateThreadNetwork(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) operationalDataset.bytes, operationalDataset.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)reportAttributeCurrentLevel:(ResponseHandler)reportHandler +- (void)updateWiFiNetwork:(NSData *)ssid + credentials:(NSData *)credentials + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentLevel(onReport->Cancel()); + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.UpdateWiFiNetwork(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) ssid.bytes, ssid.length), + chip::ByteSpan((const uint8_t *) credentials.bytes, credentials.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } @@ -7034,18 +8876,18 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler @end -@interface CHIPLowPower () -@property (readonly) Controller::LowPowerCluster cppCluster; +@interface CHIPOnOff () +@property (readonly) Controller::OnOffCluster cppCluster; @end -@implementation CHIPLowPower +@implementation CHIPOnOff - (Controller::ClusterBase *)getCluster { return &_cppCluster; } -- (void)sleep:(ResponseHandler)completionHandler +- (void)off:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -7060,17 +8902,16 @@ - (void)sleep:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.Sleep(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.Off(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)on:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7083,34 +8924,16 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.On(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPNetworkCommissioning () -@property (readonly) Controller::NetworkCommissioningCluster cppCluster; -@end - -@implementation CHIPNetworkCommissioning - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)addThreadNetwork:(NSData *)operationalDataset - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler +- (void)toggle:(ResponseHandler)completionHandler { - CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7123,22 +8946,18 @@ - (void)addThreadNetwork:(NSData *)operationalDataset return; } - CHIP_ERROR err = self.cppCluster.AddThreadNetwork(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) operationalDataset.bytes, operationalDataset.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.Toggle(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)addWiFiNetwork:(NSData *)ssid - credentials:(NSData *)credentials - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeOnOff:(ResponseHandler)completionHandler { - CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPBooleanAttributeCallbackBridge * onSuccess + = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7151,22 +8970,19 @@ - (void)addWiFiNetwork:(NSData *)ssid return; } - CHIP_ERROR err = self.cppCluster.AddWiFiNetwork(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) ssid.bytes, ssid.length), - chip::ByteSpan((const uint8_t *) credentials.bytes, credentials.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.ReadAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)disableNetwork:(NSData *)networkID - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler + +- (void)configureAttributeOnOff:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + completionHandler:(ResponseHandler)completionHandler { - CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7179,44 +8995,33 @@ - (void)disableNetwork:(NSData *)networkID return; } - CHIP_ERROR err = self.cppCluster.DisableNetwork(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) networkID.bytes, networkID.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.ConfigureAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)enableNetwork:(NSData *)networkID - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler -{ - CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); +- (void)reportAttributeOnOff:(ResponseHandler)reportHandler +{ + CHIPBooleanAttributeCallbackBridge * onReport + = new CHIPBooleanAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.EnableNetwork(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) networkID.bytes, networkID.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.ReportAttributeOnOff(onReport->Cancel()); if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getLastNetworkCommissioningResult:(uint32_t)timeoutMs completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7229,20 +9034,31 @@ - (void)getLastNetworkCommissioningResult:(uint32_t)timeoutMs completionHandler: return; } - CHIP_ERROR err = self.cppCluster.GetLastNetworkCommissioningResult(onSuccess->Cancel(), onFailure->Cancel(), timeoutMs); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)removeNetwork:(NSData *)networkID - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler + +@end + +@interface CHIPOperationalCredentials () +@property (readonly) Controller::OperationalCredentialsCluster cppCluster; +@end + +@implementation CHIPOperationalCredentials + +- (Controller::ClusterBase *)getCluster { - CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)getFabricId:(ResponseHandler)completionHandler +{ + CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge * onSuccess + = new CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7255,21 +9071,19 @@ - (void)removeNetwork:(NSData *)networkID return; } - CHIP_ERROR err = self.cppCluster.RemoveNetwork(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) networkID.bytes, networkID.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.GetFabricId(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)scanNetworks:(NSData *)ssid - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs +- (void)removeFabric:(uint64_t)fabricId + nodeId:(uint64_t)nodeId + vendorId:(uint16_t)vendorId completionHandler:(ResponseHandler)completionHandler { - CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7282,21 +9096,16 @@ - (void)scanNetworks:(NSData *)ssid return; } - CHIP_ERROR err = self.cppCluster.ScanNetworks( - onSuccess->Cancel(), onFailure->Cancel(), chip::ByteSpan((const uint8_t *) ssid.bytes, ssid.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.RemoveFabric(onSuccess->Cancel(), onFailure->Cancel(), fabricId, nodeId, vendorId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)updateThreadNetwork:(NSData *)operationalDataset - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler +- (void)updateFabricLabel:(NSString *)label completionHandler:(ResponseHandler)completionHandler { - CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7309,22 +9118,20 @@ - (void)updateThreadNetwork:(NSData *)operationalDataset return; } - CHIP_ERROR err = self.cppCluster.UpdateThreadNetwork(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) operationalDataset.bytes, operationalDataset.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.UpdateFabricLabel(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [label dataUsingEncoding:NSUTF8StringEncoding].bytes, + [label lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)updateWiFiNetwork:(NSData *)ssid - credentials:(NSData *)credentials - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeFabricsList:(ResponseHandler)completionHandler { - CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPOperationalCredentialsFabricsListAttributeCallbackBridge * onSuccess + = new CHIPOperationalCredentialsFabricsListAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7337,9 +9144,7 @@ - (void)updateWiFiNetwork:(NSData *)ssid return; } - CHIP_ERROR err = self.cppCluster.UpdateWiFiNetwork(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) ssid.bytes, ssid.length), - chip::ByteSpan((const uint8_t *) credentials.bytes, credentials.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.ReadAttributeFabricsList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7372,20 +9177,20 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler @end -@interface CHIPOnOff () -@property (readonly) Controller::OnOffCluster cppCluster; +@interface CHIPPumpConfigurationAndControl () +@property (readonly) Controller::PumpConfigurationAndControlCluster cppCluster; @end -@implementation CHIPOnOff +@implementation CHIPPumpConfigurationAndControl - (Controller::ClusterBase *)getCluster { return &_cppCluster; } -- (void)off:(ResponseHandler)completionHandler +- (void)readAttributeMaxPressure:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7398,16 +9203,17 @@ - (void)off:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.Off(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeMaxPressure(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)on:(ResponseHandler)completionHandler + +- (void)readAttributeMaxSpeed:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7420,16 +9226,17 @@ - (void)on:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.On(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeMaxSpeed(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)toggle:(ResponseHandler)completionHandler + +- (void)readAttributeMaxFlow:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7442,7 +9249,7 @@ - (void)toggle:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.Toggle(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeMaxFlow(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7450,10 +9257,9 @@ - (void)toggle:(ResponseHandler)completionHandler } } -- (void)readAttributeOnOff:(ResponseHandler)completionHandler +- (void)readAttributeEffectiveOperationMode:(ResponseHandler)completionHandler { - CHIPBooleanAttributeCallbackBridge * onSuccess - = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7466,7 +9272,7 @@ - (void)readAttributeOnOff:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeEffectiveOperationMode(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7474,11 +9280,9 @@ - (void)readAttributeOnOff:(ResponseHandler)completionHandler } } -- (void)configureAttributeOnOff:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeEffectiveControlMode:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7491,7 +9295,7 @@ - (void)configureAttributeOnOff:(uint16_t)minInterval return; } - CHIP_ERROR err = self.cppCluster.ConfigureAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval); + CHIP_ERROR err = self.cppCluster.ReadAttributeEffectiveControlMode(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7499,25 +9303,35 @@ - (void)configureAttributeOnOff:(uint16_t)minInterval } } -- (void)reportAttributeOnOff:(ResponseHandler)reportHandler +- (void)readAttributeCapacity:(ResponseHandler)completionHandler { - CHIPBooleanAttributeCallbackBridge * onReport - = new CHIPBooleanAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.ReportAttributeOnOff(onReport->Cancel()); + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeCapacity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)configureAttributeCapacity:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(int16_t)change + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7530,7 +9344,8 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.ConfigureAttributeCapacity(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7538,23 +9353,24 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler } } -@end - -@interface CHIPOperationalCredentials () -@property (readonly) Controller::OperationalCredentialsCluster cppCluster; -@end - -@implementation CHIPOperationalCredentials - -- (Controller::ClusterBase *)getCluster +- (void)reportAttributeCapacity:(ResponseHandler)reportHandler { - return &_cppCluster; + CHIPInt16sAttributeCallbackBridge * onReport = new CHIPInt16sAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReportAttributeCapacity(onReport->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + } } -- (void)getFabricId:(ResponseHandler)completionHandler +- (void)readAttributeOperationMode:(ResponseHandler)completionHandler { - CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge * onSuccess - = new CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7567,17 +9383,15 @@ - (void)getFabricId:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.GetFabricId(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeOperationMode(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)removeFabric:(uint64_t)fabricId - nodeId:(uint64_t)nodeId - vendorId:(uint16_t)vendorId - completionHandler:(ResponseHandler)completionHandler + +- (void)writeAttributeOperationMode:(uint8_t)value completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -7592,16 +9406,17 @@ - (void)removeFabric:(uint64_t)fabricId return; } - CHIP_ERROR err = self.cppCluster.RemoveFabric(onSuccess->Cancel(), onFailure->Cancel(), fabricId, nodeId, vendorId); + CHIP_ERROR err = self.cppCluster.WriteAttributeOperationMode(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)updateFabricLabel:(NSString *)label completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7614,9 +9429,7 @@ - (void)updateFabricLabel:(NSString *)label completionHandler:(ResponseHandler)c return; } - CHIP_ERROR err = self.cppCluster.UpdateFabricLabel(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) [label dataUsingEncoding:NSUTF8StringEncoding].bytes, - [label lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7624,10 +9437,30 @@ - (void)updateFabricLabel:(NSString *)label completionHandler:(ResponseHandler)c } } -- (void)readAttributeFabricsList:(ResponseHandler)completionHandler +@end + +@interface CHIPScenes () +@property (readonly) Controller::ScenesCluster cppCluster; +@end + +@implementation CHIPScenes + +- (Controller::ClusterBase *)getCluster { - CHIPOperationalCredentialsFabricsListAttributeCallbackBridge * onSuccess - = new CHIPOperationalCredentialsFabricsListAttributeCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)addScene:(uint16_t)groupId + sceneId:(uint8_t)sceneId + transitionTime:(uint16_t)transitionTime + sceneName:(NSString *)sceneName + clusterId:(uint16_t)clusterId + length:(uint8_t)length + value:(uint8_t)value + completionHandler:(ResponseHandler)completionHandler +{ + CHIPScenesClusterAddSceneResponseCallbackBridge * onSuccess + = new CHIPScenesClusterAddSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7640,17 +9473,20 @@ - (void)readAttributeFabricsList:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeFabricsList(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.AddScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId, transitionTime, + chip::ByteSpan((const uint8_t *) [sceneName dataUsingEncoding:NSUTF8StringEncoding].bytes, + [sceneName lengthOfBytesUsingEncoding:NSUTF8StringEncoding]), + clusterId, length, value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)getSceneMembership:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPScenesClusterGetSceneMembershipResponseCallbackBridge * onSuccess + = new CHIPScenesClusterGetSceneMembershipResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7663,30 +9499,19 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.GetSceneMembership(onSuccess->Cancel(), onFailure->Cancel(), groupId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPPumpConfigurationAndControl () -@property (readonly) Controller::PumpConfigurationAndControlCluster cppCluster; -@end - -@implementation CHIPPumpConfigurationAndControl - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)readAttributeMaxPressure:(ResponseHandler)completionHandler +- (void)recallScene:(uint16_t)groupId + sceneId:(uint8_t)sceneId + transitionTime:(uint16_t)transitionTime + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7699,17 +9524,17 @@ - (void)readAttributeMaxPressure:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeMaxPressure(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.RecallScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId, transitionTime); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeMaxSpeed:(ResponseHandler)completionHandler +- (void)removeAllScenes:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPScenesClusterRemoveAllScenesResponseCallbackBridge * onSuccess + = new CHIPScenesClusterRemoveAllScenesResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7722,17 +9547,17 @@ - (void)readAttributeMaxSpeed:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeMaxSpeed(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.RemoveAllScenes(onSuccess->Cancel(), onFailure->Cancel(), groupId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeMaxFlow:(ResponseHandler)completionHandler +- (void)removeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPScenesClusterRemoveSceneResponseCallbackBridge * onSuccess + = new CHIPScenesClusterRemoveSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7745,17 +9570,17 @@ - (void)readAttributeMaxFlow:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeMaxFlow(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.RemoveScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeEffectiveOperationMode:(ResponseHandler)completionHandler +- (void)storeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPScenesClusterStoreSceneResponseCallbackBridge * onSuccess + = new CHIPScenesClusterStoreSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7768,17 +9593,17 @@ - (void)readAttributeEffectiveOperationMode:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeEffectiveOperationMode(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StoreScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeEffectiveControlMode:(ResponseHandler)completionHandler +- (void)viewScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPScenesClusterViewSceneResponseCallbackBridge * onSuccess + = new CHIPScenesClusterViewSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7791,7 +9616,7 @@ - (void)readAttributeEffectiveControlMode:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeEffectiveControlMode(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ViewScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7799,9 +9624,9 @@ - (void)readAttributeEffectiveControlMode:(ResponseHandler)completionHandler } } -- (void)readAttributeCapacity:(ResponseHandler)completionHandler +- (void)readAttributeSceneCount:(ResponseHandler)completionHandler { - CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7814,7 +9639,7 @@ - (void)readAttributeCapacity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCapacity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeSceneCount(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7822,12 +9647,9 @@ - (void)readAttributeCapacity:(ResponseHandler)completionHandler } } -- (void)configureAttributeCapacity:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(int16_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeCurrentScene:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7840,8 +9662,7 @@ - (void)configureAttributeCapacity:(uint16_t)minInterval return; } - CHIP_ERROR err - = self.cppCluster.ConfigureAttributeCapacity(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentScene(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7849,24 +9670,33 @@ - (void)configureAttributeCapacity:(uint16_t)minInterval } } -- (void)reportAttributeCapacity:(ResponseHandler)reportHandler +- (void)readAttributeCurrentGroup:(ResponseHandler)completionHandler { - CHIPInt16sAttributeCallbackBridge * onReport = new CHIPInt16sAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.ReportAttributeCapacity(onReport->Cancel()); + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentGroup(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)readAttributeOperationMode:(ResponseHandler)completionHandler +- (void)readAttributeSceneValid:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPBooleanAttributeCallbackBridge * onSuccess + = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7879,7 +9709,7 @@ - (void)readAttributeOperationMode:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeOperationMode(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeSceneValid(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7887,9 +9717,9 @@ - (void)readAttributeOperationMode:(ResponseHandler)completionHandler } } -- (void)writeAttributeOperationMode:(uint8_t)value completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeNameSupport:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7902,7 +9732,7 @@ - (void)writeAttributeOperationMode:(uint8_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeOperationMode(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7935,28 +9765,20 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler @end -@interface CHIPScenes () -@property (readonly) Controller::ScenesCluster cppCluster; +@interface CHIPSwitch () +@property (readonly) Controller::SwitchCluster cppCluster; @end -@implementation CHIPScenes +@implementation CHIPSwitch - (Controller::ClusterBase *)getCluster { return &_cppCluster; } -- (void)addScene:(uint16_t)groupId - sceneId:(uint8_t)sceneId - transitionTime:(uint16_t)transitionTime - sceneName:(NSString *)sceneName - clusterId:(uint16_t)clusterId - length:(uint8_t)length - value:(uint8_t)value - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeNumberOfPositions:(ResponseHandler)completionHandler { - CHIPScenesClusterAddSceneResponseCallbackBridge * onSuccess - = new CHIPScenesClusterAddSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7969,20 +9791,17 @@ - (void)addScene:(uint16_t)groupId return; } - CHIP_ERROR err = self.cppCluster.AddScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId, transitionTime, - chip::ByteSpan((const uint8_t *) [sceneName dataUsingEncoding:NSUTF8StringEncoding].bytes, - [sceneName lengthOfBytesUsingEncoding:NSUTF8StringEncoding]), - clusterId, length, value); + CHIP_ERROR err = self.cppCluster.ReadAttributeNumberOfPositions(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getSceneMembership:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeCurrentPosition:(ResponseHandler)completionHandler { - CHIPScenesClusterGetSceneMembershipResponseCallbackBridge * onSuccess - = new CHIPScenesClusterGetSceneMembershipResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7995,17 +9814,18 @@ - (void)getSceneMembership:(uint16_t)groupId completionHandler:(ResponseHandler) return; } - CHIP_ERROR err = self.cppCluster.GetSceneMembership(onSuccess->Cancel(), onFailure->Cancel(), groupId); + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentPosition(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)recallScene:(uint16_t)groupId - sceneId:(uint8_t)sceneId - transitionTime:(uint16_t)transitionTime - completionHandler:(ResponseHandler)completionHandler + +- (void)configureAttributeCurrentPosition:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(uint8_t)change + completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -8020,40 +9840,33 @@ - (void)recallScene:(uint16_t)groupId return; } - CHIP_ERROR err = self.cppCluster.RecallScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId, transitionTime); + CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentPosition( + onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)removeAllScenes:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler -{ - CHIPScenesClusterRemoveAllScenesResponseCallbackBridge * onSuccess - = new CHIPScenesClusterRemoveAllScenesResponseCallbackBridge(completionHandler, [self callbackQueue]); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); +- (void)reportAttributeCurrentPosition:(ResponseHandler)reportHandler +{ + CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.RemoveAllScenes(onSuccess->Cancel(), onFailure->Cancel(), groupId); + CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentPosition(onReport->Cancel()); if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)removeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPScenesClusterRemoveSceneResponseCallbackBridge * onSuccess - = new CHIPScenesClusterRemoveSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8066,40 +9879,31 @@ - (void)removeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler return; } - CHIP_ERROR err = self.cppCluster.RemoveScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)storeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler -{ - CHIPScenesClusterStoreSceneResponseCallbackBridge * onSuccess - = new CHIPScenesClusterStoreSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } +@end - CHIP_ERROR err = self.cppCluster.StoreScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId); - if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); - } +@interface CHIPTvChannel () +@property (readonly) Controller::TvChannelCluster cppCluster; +@end + +@implementation CHIPTvChannel + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; } -- (void)viewScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler + +- (void)changeChannel:(NSString *)match completionHandler:(ResponseHandler)completionHandler { - CHIPScenesClusterViewSceneResponseCallbackBridge * onSuccess - = new CHIPScenesClusterViewSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPTvChannelClusterChangeChannelResponseCallbackBridge * onSuccess + = new CHIPTvChannelClusterChangeChannelResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8112,17 +9916,20 @@ - (void)viewScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:( return; } - CHIP_ERROR err = self.cppCluster.ViewScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId); + CHIP_ERROR err = self.cppCluster.ChangeChannel(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [match dataUsingEncoding:NSUTF8StringEncoding].bytes, + [match lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeSceneCount:(ResponseHandler)completionHandler +- (void)changeChannelByNumber:(uint16_t)majorNumber + minorNumber:(uint16_t)minorNumber + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8135,17 +9942,16 @@ - (void)readAttributeSceneCount:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeSceneCount(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ChangeChannelByNumber(onSuccess->Cancel(), onFailure->Cancel(), majorNumber, minorNumber); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeCurrentScene:(ResponseHandler)completionHandler +- (void)skipChannel:(uint16_t)count completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8158,7 +9964,7 @@ - (void)readAttributeCurrentScene:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentScene(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SkipChannel(onSuccess->Cancel(), onFailure->Cancel(), count); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -8166,9 +9972,10 @@ - (void)readAttributeCurrentScene:(ResponseHandler)completionHandler } } -- (void)readAttributeCurrentGroup:(ResponseHandler)completionHandler +- (void)readAttributeTvChannelList:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8181,7 +9988,7 @@ - (void)readAttributeCurrentGroup:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentGroup(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeTvChannelList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -8189,10 +9996,10 @@ - (void)readAttributeCurrentGroup:(ResponseHandler)completionHandler } } -- (void)readAttributeSceneValid:(ResponseHandler)completionHandler +- (void)readAttributeTvChannelLineup:(ResponseHandler)completionHandler { - CHIPBooleanAttributeCallbackBridge * onSuccess - = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8205,7 +10012,7 @@ - (void)readAttributeSceneValid:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeSceneValid(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeTvChannelLineup(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -8213,9 +10020,10 @@ - (void)readAttributeSceneValid:(ResponseHandler)completionHandler } } -- (void)readAttributeNameSupport:(ResponseHandler)completionHandler +- (void)readAttributeCurrentTvChannel:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8228,7 +10036,7 @@ - (void)readAttributeNameSupport:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentTvChannel(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -8261,43 +10069,21 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler @end -@interface CHIPSwitch () -@property (readonly) Controller::SwitchCluster cppCluster; +@interface CHIPTargetNavigator () +@property (readonly) Controller::TargetNavigatorCluster cppCluster; @end -@implementation CHIPSwitch +@implementation CHIPTargetNavigator - (Controller::ClusterBase *)getCluster { return &_cppCluster; } -- (void)readAttributeNumberOfPositions:(ResponseHandler)completionHandler -{ - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIP_ERROR err = self.cppCluster.ReadAttributeNumberOfPositions(onSuccess->Cancel(), onFailure->Cancel()); - if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); - } -} - -- (void)readAttributeCurrentPosition:(ResponseHandler)completionHandler +- (void)navigateTarget:(uint8_t)target data:(NSString *)data completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPTargetNavigatorClusterNavigateTargetResponseCallbackBridge * onSuccess + = new CHIPTargetNavigatorClusterNavigateTargetResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8310,7 +10096,9 @@ - (void)readAttributeCurrentPosition:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentPosition(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.NavigateTarget(onSuccess->Cancel(), onFailure->Cancel(), target, + chip::ByteSpan((const uint8_t *) [data dataUsingEncoding:NSUTF8StringEncoding].bytes, + [data lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -8318,12 +10106,10 @@ - (void)readAttributeCurrentPosition:(ResponseHandler)completionHandler } } -- (void)configureAttributeCurrentPosition:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(uint8_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeTargetNavigatorList:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8336,8 +10122,7 @@ - (void)configureAttributeCurrentPosition:(uint16_t)minInterval return; } - CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentPosition( - onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.ReadAttributeTargetNavigatorList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -8345,21 +10130,6 @@ - (void)configureAttributeCurrentPosition:(uint16_t)minInterval } } -- (void)reportAttributeCurrentPosition:(ResponseHandler)reportHandler -{ - CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentPosition(onReport->Cancel()); - if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); - } -} - - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); @@ -8934,3 +10704,63 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler } @end + +@interface CHIPWakeOnLan () +@property (readonly) Controller::WakeOnLanCluster cppCluster; +@end + +@implementation CHIPWakeOnLan + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)readAttributeWakeOnLanMacAddress:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeWakeOnLanMacAddress(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +@end diff --git a/examples/chip-tool/gen/IMClusterCommandHandler.cpp b/examples/chip-tool/gen/IMClusterCommandHandler.cpp index 943a2f7974f848..1d6fcffd5c1921 100644 --- a/examples/chip-tool/gen/IMClusterCommandHandler.cpp +++ b/examples/chip-tool/gen/IMClusterCommandHandler.cpp @@ -39,21 +39,21 @@ namespace app { namespace clusters { -namespace DoorLock { +namespace AccountLogin { void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) { { switch (aCommandId) { - case ZCL_CLEAR_ALL_PINS_RESPONSE_COMMAND_ID: { + case ZCL_GET_SETUP_PIN_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; + const uint8_t * setupPIN; + bool setupPINExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -61,16 +61,17 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (setupPINExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(setupPIN); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + setupPINExists = true; validArgumentCount++; } break; @@ -101,7 +102,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearAllPinsResponseCallback(apCommandObj, status); + emberAfAccountLoginClusterGetSetupPINResponseCallback(apCommandObj, const_cast(setupPIN)); } else { @@ -113,14 +114,36 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_CLEAR_ALL_RFIDS_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_ACCOUNT_LOGIN_CLUSTER_ID); + break; + } + } + } +} + +} // namespace AccountLogin + +namespace ApplicationLauncher { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_LAUNCH_APP_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; uint8_t status; - bool statusExists = false; + bool statusExists = false; + const uint8_t * data; + bool dataExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -141,6 +164,21 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; + case 1: + if (dataExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(data); + if (CHIP_NO_ERROR == TLVUnpackError) + { + dataExists = true; + validArgumentCount++; + } + break; default: // Unsupported tag, ignore it. ChipLogProgress(Zcl, "Unknown TLV tag during processing."); @@ -165,10 +203,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearAllRfidsResponseCallback(apCommandObj, status); + emberAfApplicationLauncherClusterLaunchAppResponseCallback(apCommandObj, status, const_cast(data)); } else { @@ -176,35 +214,72 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_CLEAR_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_APPLICATION_LAUNCHER_CLUSTER_ID); + break; + } + } + } +} + +} // namespace ApplicationLauncher + +namespace ContentLaunch { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_LAUNCH_CONTENT_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint32_t validArgumentCount = 0; + const uint8_t * data; + bool dataExists = false; + uint8_t contentLaunchStatus; + bool contentLaunchStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (dataExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(data); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + dataExists = true; + validArgumentCount++; + } + break; + case 1: + if (contentLaunchStatusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(contentLaunchStatus); + if (CHIP_NO_ERROR == TLVUnpackError) + { + contentLaunchStatusExists = true; validArgumentCount++; } break; @@ -232,10 +307,11 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearHolidayScheduleResponseCallback(apCommandObj, status); + emberAfContentLaunchClusterLaunchContentResponseCallback(apCommandObj, const_cast(data), + contentLaunchStatus); } else { @@ -243,35 +319,52 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_CLEAR_PIN_RESPONSE_COMMAND_ID: { + case ZCL_LAUNCH_URL_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint32_t validArgumentCount = 0; + const uint8_t * data; + bool dataExists = false; + uint8_t contentLaunchStatus; + bool contentLaunchStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (dataExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(data); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + dataExists = true; + validArgumentCount++; + } + break; + case 1: + if (contentLaunchStatusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(contentLaunchStatus); + if (CHIP_NO_ERROR == TLVUnpackError) + { + contentLaunchStatusExists = true; validArgumentCount++; } break; @@ -299,10 +392,11 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearPinResponseCallback(apCommandObj, status); + emberAfContentLaunchClusterLaunchURLResponseCallback(apCommandObj, const_cast(data), + contentLaunchStatus); } else { @@ -310,11 +404,31 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_CLEAR_RFID_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_CONTENT_LAUNCH_CLUSTER_ID); + break; + } + } + } +} + +} // namespace ContentLaunch + +namespace DoorLock { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_CLEAR_ALL_PINS_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. @@ -369,7 +483,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearRfidResponseCallback(apCommandObj, status); + emberAfDoorLockClusterClearAllPinsResponseCallback(apCommandObj, status); } else { @@ -381,7 +495,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_CLEAR_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + case ZCL_CLEAR_ALL_RFIDS_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. @@ -436,7 +550,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearWeekdayScheduleResponseCallback(apCommandObj, status); + emberAfDoorLockClusterClearAllRfidsResponseCallback(apCommandObj, status); } else { @@ -448,7 +562,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_CLEAR_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + case ZCL_CLEAR_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. @@ -503,7 +617,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearYeardayScheduleResponseCallback(apCommandObj, status); + emberAfDoorLockClusterClearHolidayScheduleResponseCallback(apCommandObj, status); } else { @@ -515,43 +629,21 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_GET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + case ZCL_CLEAR_PIN_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t scheduleId; - bool scheduleIdExists = false; uint8_t status; - bool statusExists = false; - uint32_t localStartTime; - bool localStartTimeExists = false; - uint32_t localEndTime; - bool localEndTimeExists = false; - uint8_t operatingModeDuringHoliday; - bool operatingModeDuringHolidayExists = false; - uint32_t validArgumentCount = 0; + bool statusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (scheduleIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(scheduleId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - scheduleIdExists = true; - validArgumentCount++; - } - break; - case 1: if (statusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); @@ -565,48 +657,6 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; - case 2: - if (localStartTimeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(localStartTime); - if (CHIP_NO_ERROR == TLVUnpackError) - { - localStartTimeExists = true; - validArgumentCount++; - } - break; - case 3: - if (localEndTimeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(localEndTime); - if (CHIP_NO_ERROR == TLVUnpackError) - { - localEndTimeExists = true; - validArgumentCount++; - } - break; - case 4: - if (operatingModeDuringHolidayExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(operatingModeDuringHoliday); - if (CHIP_NO_ERROR == TLVUnpackError) - { - operatingModeDuringHolidayExists = true; - validArgumentCount++; - } - break; default: // Unsupported tag, ignore it. ChipLogProgress(Zcl, "Unknown TLV tag during processing."); @@ -631,11 +681,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 5 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterGetHolidayScheduleResponseCallback(apCommandObj, scheduleId, status, localStartTime, - localEndTime, operatingModeDuringHoliday); + emberAfDoorLockClusterClearPinResponseCallback(apCommandObj, status); } else { @@ -643,30 +692,18 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 5, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_GET_LOG_RECORD_RESPONSE_COMMAND_ID: { + case ZCL_CLEAR_RFID_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t logEntryId; - bool logEntryIdExists = false; - uint32_t timestamp; - bool timestampExists = false; - uint8_t eventType; - bool eventTypeExists = false; - uint8_t source; - bool sourceExists = false; - uint8_t eventIdOrAlarmCode; - bool eventIdOrAlarmCodeExists = false; - uint16_t userId; - bool userIdExists = false; - const uint8_t * pin; - bool pinExists = false; + uint8_t status; + bool statusExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -674,101 +711,150 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (logEntryIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(logEntryId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - logEntryIdExists = true; - validArgumentCount++; - } - break; - case 1: - if (timestampExists) + if (statusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(timestamp); + TLVUnpackError = aDataTlv.Get(status); if (CHIP_NO_ERROR == TLVUnpackError) { - timestampExists = true; + statusExists = true; validArgumentCount++; } break; - case 2: - if (eventTypeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(eventType); - if (CHIP_NO_ERROR == TLVUnpackError) - { - eventTypeExists = true; - validArgumentCount++; - } + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); break; - case 3: - if (sourceExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(source); - if (CHIP_NO_ERROR == TLVUnpackError) - { - sourceExists = true; - validArgumentCount++; - } + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); break; - case 4: - if (eventIdOrAlarmCodeExists) + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterClearRfidResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_CLEAR_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(eventIdOrAlarmCode); + TLVUnpackError = aDataTlv.Get(status); if (CHIP_NO_ERROR == TLVUnpackError) { - eventIdOrAlarmCodeExists = true; + statusExists = true; validArgumentCount++; } break; - case 5: - if (userIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(userId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - userIdExists = true; - validArgumentCount++; - } + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); break; - case 6: - if (pinExists) + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterClearWeekdayScheduleResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_CLEAR_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(pin); + TLVUnpackError = aDataTlv.Get(status); if (CHIP_NO_ERROR == TLVUnpackError) { - pinExists = true; + statusExists = true; validArgumentCount++; } break; @@ -796,11 +882,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 7 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterGetLogRecordResponseCallback(apCommandObj, logEntryId, timestamp, eventType, source, - eventIdOrAlarmCode, userId, const_cast(pin)); + emberAfDoorLockClusterClearYeardayScheduleResponseCallback(apCommandObj, status); } else { @@ -808,84 +893,99 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 7, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_GET_PIN_RESPONSE_COMMAND_ID: { + case ZCL_GET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t userId; - bool userIdExists = false; - uint8_t userStatus; - bool userStatusExists = false; - uint8_t userType; - bool userTypeExists = false; - const uint8_t * pin; - bool pinExists = false; - uint32_t validArgumentCount = 0; + uint8_t scheduleId; + bool scheduleIdExists = false; + uint8_t status; + bool statusExists = false; + uint32_t localStartTime; + bool localStartTimeExists = false; + uint32_t localEndTime; + bool localEndTimeExists = false; + uint8_t operatingModeDuringHoliday; + bool operatingModeDuringHolidayExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (userIdExists) + if (scheduleIdExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(userId); + TLVUnpackError = aDataTlv.Get(scheduleId); if (CHIP_NO_ERROR == TLVUnpackError) { - userIdExists = true; + scheduleIdExists = true; validArgumentCount++; } break; case 1: - if (userStatusExists) + if (statusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(userStatus); + TLVUnpackError = aDataTlv.Get(status); if (CHIP_NO_ERROR == TLVUnpackError) { - userStatusExists = true; + statusExists = true; validArgumentCount++; } break; case 2: - if (userTypeExists) + if (localStartTimeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(userType); + TLVUnpackError = aDataTlv.Get(localStartTime); if (CHIP_NO_ERROR == TLVUnpackError) { - userTypeExists = true; + localStartTimeExists = true; validArgumentCount++; } break; case 3: - if (pinExists) + if (localEndTimeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(pin); + TLVUnpackError = aDataTlv.Get(localEndTime); if (CHIP_NO_ERROR == TLVUnpackError) { - pinExists = true; + localEndTimeExists = true; + validArgumentCount++; + } + break; + case 4: + if (operatingModeDuringHolidayExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(operatingModeDuringHoliday); + if (CHIP_NO_ERROR == TLVUnpackError) + { + operatingModeDuringHolidayExists = true; validArgumentCount++; } break; @@ -913,11 +1013,11 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 5 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterGetPinResponseCallback(apCommandObj, userId, userStatus, userType, - const_cast(pin)); + emberAfDoorLockClusterGetHolidayScheduleResponseCallback(apCommandObj, scheduleId, status, localStartTime, + localEndTime, operatingModeDuringHoliday); } else { @@ -925,24 +1025,30 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 4, validArgumentCount, TLVError, TLVUnpackError); + 5, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_GET_RFID_RESPONSE_COMMAND_ID: { + case ZCL_GET_LOG_RECORD_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint16_t logEntryId; + bool logEntryIdExists = false; + uint32_t timestamp; + bool timestampExists = false; + uint8_t eventType; + bool eventTypeExists = false; + uint8_t source; + bool sourceExists = false; + uint8_t eventIdOrAlarmCode; + bool eventIdOrAlarmCodeExists = false; uint16_t userId; bool userIdExists = false; - uint8_t userStatus; - bool userStatusExists = false; - uint8_t userType; - bool userTypeExists = false; - const uint8_t * rfid; - bool rfidExists = false; + const uint8_t * pin; + bool pinExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -950,7 +1056,166 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (userIdExists) + if (logEntryIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(logEntryId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + logEntryIdExists = true; + validArgumentCount++; + } + break; + case 1: + if (timestampExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(timestamp); + if (CHIP_NO_ERROR == TLVUnpackError) + { + timestampExists = true; + validArgumentCount++; + } + break; + case 2: + if (eventTypeExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(eventType); + if (CHIP_NO_ERROR == TLVUnpackError) + { + eventTypeExists = true; + validArgumentCount++; + } + break; + case 3: + if (sourceExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(source); + if (CHIP_NO_ERROR == TLVUnpackError) + { + sourceExists = true; + validArgumentCount++; + } + break; + case 4: + if (eventIdOrAlarmCodeExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(eventIdOrAlarmCode); + if (CHIP_NO_ERROR == TLVUnpackError) + { + eventIdOrAlarmCodeExists = true; + validArgumentCount++; + } + break; + case 5: + if (userIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userIdExists = true; + validArgumentCount++; + } + break; + case 6: + if (pinExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(pin); + if (CHIP_NO_ERROR == TLVUnpackError) + { + pinExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 7 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterGetLogRecordResponseCallback(apCommandObj, logEntryId, timestamp, eventType, source, + eventIdOrAlarmCode, userId, const_cast(pin)); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 7, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_GET_PIN_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint16_t userId; + bool userIdExists = false; + uint8_t userStatus; + bool userStatusExists = false; + uint8_t userType; + bool userTypeExists = false; + const uint8_t * pin; + bool pinExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (userIdExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; @@ -992,17 +1257,1133 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; case 3: - if (rfidExists) + if (pinExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(rfid); + TLVUnpackError = aDataTlv.GetDataPtr(pin); if (CHIP_NO_ERROR == TLVUnpackError) { - rfidExists = true; + pinExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterGetPinResponseCallback(apCommandObj, userId, userStatus, userType, + const_cast(pin)); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 4, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_GET_RFID_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint16_t userId; + bool userIdExists = false; + uint8_t userStatus; + bool userStatusExists = false; + uint8_t userType; + bool userTypeExists = false; + const uint8_t * rfid; + bool rfidExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (userIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userIdExists = true; + validArgumentCount++; + } + break; + case 1: + if (userStatusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userStatus); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userStatusExists = true; + validArgumentCount++; + } + break; + case 2: + if (userTypeExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userType); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userTypeExists = true; + validArgumentCount++; + } + break; + case 3: + if (rfidExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(rfid); + if (CHIP_NO_ERROR == TLVUnpackError) + { + rfidExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterGetRfidResponseCallback(apCommandObj, userId, userStatus, userType, + const_cast(rfid)); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 4, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_GET_USER_TYPE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint16_t userId; + bool userIdExists = false; + uint8_t userType; + bool userTypeExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (userIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userIdExists = true; + validArgumentCount++; + } + break; + case 1: + if (userTypeExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userType); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userTypeExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterGetUserTypeResponseCallback(apCommandObj, userId, userType); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 2, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_GET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t scheduleId; + bool scheduleIdExists = false; + uint16_t userId; + bool userIdExists = false; + uint8_t status; + bool statusExists = false; + uint8_t daysMask; + bool daysMaskExists = false; + uint8_t startHour; + bool startHourExists = false; + uint8_t startMinute; + bool startMinuteExists = false; + uint8_t endHour; + bool endHourExists = false; + uint8_t endMinute; + bool endMinuteExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (scheduleIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(scheduleId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + scheduleIdExists = true; + validArgumentCount++; + } + break; + case 1: + if (userIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userIdExists = true; + validArgumentCount++; + } + break; + case 2: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + case 3: + if (daysMaskExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(daysMask); + if (CHIP_NO_ERROR == TLVUnpackError) + { + daysMaskExists = true; + validArgumentCount++; + } + break; + case 4: + if (startHourExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(startHour); + if (CHIP_NO_ERROR == TLVUnpackError) + { + startHourExists = true; + validArgumentCount++; + } + break; + case 5: + if (startMinuteExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(startMinute); + if (CHIP_NO_ERROR == TLVUnpackError) + { + startMinuteExists = true; + validArgumentCount++; + } + break; + case 6: + if (endHourExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(endHour); + if (CHIP_NO_ERROR == TLVUnpackError) + { + endHourExists = true; + validArgumentCount++; + } + break; + case 7: + if (endMinuteExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(endMinute); + if (CHIP_NO_ERROR == TLVUnpackError) + { + endMinuteExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 8 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterGetWeekdayScheduleResponseCallback(apCommandObj, scheduleId, userId, status, daysMask, + startHour, startMinute, endHour, endMinute); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 8, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_GET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t scheduleId; + bool scheduleIdExists = false; + uint16_t userId; + bool userIdExists = false; + uint8_t status; + bool statusExists = false; + uint32_t localStartTime; + bool localStartTimeExists = false; + uint32_t localEndTime; + bool localEndTimeExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (scheduleIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(scheduleId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + scheduleIdExists = true; + validArgumentCount++; + } + break; + case 1: + if (userIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userIdExists = true; + validArgumentCount++; + } + break; + case 2: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + case 3: + if (localStartTimeExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(localStartTime); + if (CHIP_NO_ERROR == TLVUnpackError) + { + localStartTimeExists = true; + validArgumentCount++; + } + break; + case 4: + if (localEndTimeExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(localEndTime); + if (CHIP_NO_ERROR == TLVUnpackError) + { + localEndTimeExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 5 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterGetYeardayScheduleResponseCallback(apCommandObj, scheduleId, userId, status, localStartTime, + localEndTime); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 5, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_LOCK_DOOR_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterLockDoorResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_SET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterSetHolidayScheduleResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_SET_PIN_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterSetPinResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_SET_RFID_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterSetRfidResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_SET_USER_TYPE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterSetUserTypeResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_SET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterSetWeekdayScheduleResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_SET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterSetYeardayScheduleResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_UNLOCK_DOOR_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterUnlockDoorResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_UNLOCK_WITH_TIMEOUT_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; validArgumentCount++; } break; @@ -1030,11 +2411,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterGetRfidResponseCallback(apCommandObj, userId, userStatus, userType, - const_cast(rfid)); + emberAfDoorLockClusterUnlockWithTimeoutResponseCallback(apCommandObj, status); } else { @@ -1042,20 +2422,40 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 4, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_GET_USER_TYPE_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_DOOR_LOCK_CLUSTER_ID); + break; + } + } + } +} + +} // namespace DoorLock + +namespace GeneralCommissioning { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_ARM_FAIL_SAFE_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t userId; - bool userIdExists = false; - uint8_t userType; - bool userTypeExists = false; + uint8_t errorCode; + bool errorCodeExists = false; + const uint8_t * debugText; + bool debugTextExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1063,30 +2463,31 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (userIdExists) + if (errorCodeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(userId); + TLVUnpackError = aDataTlv.Get(errorCode); if (CHIP_NO_ERROR == TLVUnpackError) { - userIdExists = true; + errorCodeExists = true; validArgumentCount++; } break; case 1: - if (userTypeExists) + if (debugTextExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(userType); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(debugText); if (CHIP_NO_ERROR == TLVUnpackError) { - userTypeExists = true; + debugTextExists = true; validArgumentCount++; } break; @@ -1117,7 +2518,8 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterGetUserTypeResponseCallback(apCommandObj, userId, userType); + emberAfGeneralCommissioningClusterArmFailSafeResponseCallback(apCommandObj, errorCode, + const_cast(debugText)); } else { @@ -1129,28 +2531,16 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_GET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + case ZCL_COMMISSIONING_COMPLETE_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t scheduleId; - bool scheduleIdExists = false; - uint16_t userId; - bool userIdExists = false; - uint8_t status; - bool statusExists = false; - uint8_t daysMask; - bool daysMaskExists = false; - uint8_t startHour; - bool startHourExists = false; - uint8_t startMinute; - bool startMinuteExists = false; - uint8_t endHour; - bool endHourExists = false; - uint8_t endMinute; - bool endMinuteExists = false; + uint8_t errorCode; + bool errorCodeExists = false; + const uint8_t * debugText; + bool debugTextExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1158,114 +2548,31 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (scheduleIdExists) + if (errorCodeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(scheduleId); + TLVUnpackError = aDataTlv.Get(errorCode); if (CHIP_NO_ERROR == TLVUnpackError) { - scheduleIdExists = true; + errorCodeExists = true; validArgumentCount++; } break; case 1: - if (userIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(userId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - userIdExists = true; - validArgumentCount++; - } - break; - case 2: - if (statusExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(status); - if (CHIP_NO_ERROR == TLVUnpackError) - { - statusExists = true; - validArgumentCount++; - } - break; - case 3: - if (daysMaskExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(daysMask); - if (CHIP_NO_ERROR == TLVUnpackError) - { - daysMaskExists = true; - validArgumentCount++; - } - break; - case 4: - if (startHourExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(startHour); - if (CHIP_NO_ERROR == TLVUnpackError) - { - startHourExists = true; - validArgumentCount++; - } - break; - case 5: - if (startMinuteExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(startMinute); - if (CHIP_NO_ERROR == TLVUnpackError) - { - startMinuteExists = true; - validArgumentCount++; - } - break; - case 6: - if (endHourExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(endHour); - if (CHIP_NO_ERROR == TLVUnpackError) - { - endHourExists = true; - validArgumentCount++; - } - break; - case 7: - if (endMinuteExists) + if (debugTextExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(endMinute); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(debugText); if (CHIP_NO_ERROR == TLVUnpackError) { - endMinuteExists = true; + debugTextExists = true; validArgumentCount++; } break; @@ -1293,11 +2600,11 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 8 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterGetWeekdayScheduleResponseCallback(apCommandObj, scheduleId, userId, status, daysMask, - startHour, startMinute, endHour, endMinute); + emberAfGeneralCommissioningClusterCommissioningCompleteResponseCallback(apCommandObj, errorCode, + const_cast(debugText)); } else { @@ -1305,26 +2612,20 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 8, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_GET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + case ZCL_SET_REGULATORY_CONFIG_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t scheduleId; - bool scheduleIdExists = false; - uint16_t userId; - bool userIdExists = false; - uint8_t status; - bool statusExists = false; - uint32_t localStartTime; - bool localStartTimeExists = false; - uint32_t localEndTime; - bool localEndTimeExists = false; + uint8_t errorCode; + bool errorCodeExists = false; + const uint8_t * debugText; + bool debugTextExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1332,72 +2633,31 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (scheduleIdExists) + if (errorCodeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(scheduleId); + TLVUnpackError = aDataTlv.Get(errorCode); if (CHIP_NO_ERROR == TLVUnpackError) { - scheduleIdExists = true; + errorCodeExists = true; validArgumentCount++; } break; case 1: - if (userIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(userId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - userIdExists = true; - validArgumentCount++; - } - break; - case 2: - if (statusExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(status); - if (CHIP_NO_ERROR == TLVUnpackError) - { - statusExists = true; - validArgumentCount++; - } - break; - case 3: - if (localStartTimeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(localStartTime); - if (CHIP_NO_ERROR == TLVUnpackError) - { - localStartTimeExists = true; - validArgumentCount++; - } - break; - case 4: - if (localEndTimeExists) + if (debugTextExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(localEndTime); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(debugText); if (CHIP_NO_ERROR == TLVUnpackError) { - localEndTimeExists = true; + debugTextExists = true; validArgumentCount++; } break; @@ -1425,11 +2685,11 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 5 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterGetYeardayScheduleResponseCallback(apCommandObj, scheduleId, userId, status, localStartTime, - localEndTime); + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfGeneralCommissioningClusterSetRegulatoryConfigResponseCallback(apCommandObj, errorCode, + const_cast(debugText)); } else { @@ -1437,18 +2697,40 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 5, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_LOCK_DOOR_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_GENERAL_COMMISSIONING_CLUSTER_ID); + break; + } + } + } +} + +} // namespace GeneralCommissioning + +namespace Groups { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_ADD_GROUP_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; uint8_t status; - bool statusExists = false; + bool statusExists = false; + uint16_t groupId; + bool groupIdExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1469,6 +2751,20 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; + case 1: + if (groupIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(groupId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + groupIdExists = true; + validArgumentCount++; + } + break; default: // Unsupported tag, ignore it. ChipLogProgress(Zcl, "Unknown TLV tag during processing."); @@ -1493,10 +2789,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterLockDoorResponseCallback(apCommandObj, status); + emberAfGroupsClusterAddGroupResponseCallback(apCommandObj, status, groupId); } else { @@ -1504,18 +2800,22 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_SET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + case ZCL_GET_GROUP_MEMBERSHIP_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; + uint8_t capacity; + bool capacityExists = false; + uint8_t groupCount; + bool groupCountExists = false; + /* TYPE WARNING: array array defaults to */ uint8_t * groupList; + bool groupListExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1523,16 +2823,45 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (capacityExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + TLVUnpackError = aDataTlv.Get(capacity); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + capacityExists = true; + validArgumentCount++; + } + break; + case 1: + if (groupCountExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(groupCount); + if (CHIP_NO_ERROR == TLVUnpackError) + { + groupCountExists = true; + validArgumentCount++; + } + break; + case 2: + if (groupListExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // Just for compatibility, we will add array type support in IM later. + TLVUnpackError = aDataTlv.GetDataPtr(const_cast(groupList)); + if (CHIP_NO_ERROR == TLVUnpackError) + { + groupListExists = true; validArgumentCount++; } break; @@ -1560,10 +2889,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 3 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterSetHolidayScheduleResponseCallback(apCommandObj, status); + emberAfGroupsClusterGetGroupMembershipResponseCallback(apCommandObj, capacity, groupCount, groupList); } else { @@ -1571,18 +2900,20 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); + 3, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_SET_PIN_RESPONSE_COMMAND_ID: { + case ZCL_REMOVE_GROUP_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; uint8_t status; - bool statusExists = false; + bool statusExists = false; + uint16_t groupId; + bool groupIdExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1603,6 +2934,20 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; + case 1: + if (groupIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(groupId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + groupIdExists = true; + validArgumentCount++; + } + break; default: // Unsupported tag, ignore it. ChipLogProgress(Zcl, "Unknown TLV tag during processing."); @@ -1627,10 +2972,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterSetPinResponseCallback(apCommandObj, status); + emberAfGroupsClusterRemoveGroupResponseCallback(apCommandObj, status, groupId); } else { @@ -1638,18 +2983,22 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_SET_RFID_RESPONSE_COMMAND_ID: { + case ZCL_VIEW_GROUP_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; uint8_t status; - bool statusExists = false; + bool statusExists = false; + uint16_t groupId; + bool groupIdExists = false; + const uint8_t * groupName; + bool groupNameExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1670,6 +3019,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; + case 1: + if (groupIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(groupId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + groupIdExists = true; + validArgumentCount++; + } + break; + case 2: + if (groupNameExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(groupName); + if (CHIP_NO_ERROR == TLVUnpackError) + { + groupNameExists = true; + validArgumentCount++; + } + break; default: // Unsupported tag, ignore it. ChipLogProgress(Zcl, "Unknown TLV tag during processing."); @@ -1694,10 +3072,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 3 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterSetRfidResponseCallback(apCommandObj, status); + emberAfGroupsClusterViewGroupResponseCallback(apCommandObj, status, groupId, const_cast(groupName)); } else { @@ -1705,18 +3083,38 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); + 3, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_SET_USER_TYPE_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_GROUPS_CLUSTER_ID); + break; + } + } + } +} + +} // namespace Groups + +namespace Identify { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_IDENTIFY_QUERY_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; + uint16_t timeout; + bool timeoutExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1724,16 +3122,16 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (timeoutExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + TLVUnpackError = aDataTlv.Get(timeout); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + timeoutExists = true; validArgumentCount++; } break; @@ -1764,7 +3162,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterSetUserTypeResponseCallback(apCommandObj, status); + emberAfIdentifyClusterIdentifyQueryResponseCallback(apCommandObj, timeout); } else { @@ -1776,7 +3174,27 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_SET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_IDENTIFY_CLUSTER_ID); + break; + } + } + } +} + +} // namespace Identify + +namespace KeypadInput { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_SEND_KEY_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. @@ -1831,7 +3249,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterSetWeekdayScheduleResponseCallback(apCommandObj, status); + emberAfKeypadInputClusterSendKeyResponseCallback(apCommandObj, status); } else { @@ -1843,31 +3261,51 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_SET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_KEYPAD_INPUT_CLUSTER_ID); + break; + } + } + } +} + +} // namespace KeypadInput + +namespace MediaPlayback { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_MEDIA_FAST_FORWARD_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -1898,7 +3336,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterSetYeardayScheduleResponseCallback(apCommandObj, status); + emberAfMediaPlaybackClusterMediaFastForwardResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -1910,31 +3348,31 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_UNLOCK_DOOR_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_NEXT_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -1965,7 +3403,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterUnlockDoorResponseCallback(apCommandObj, status); + emberAfMediaPlaybackClusterMediaNextResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -1977,31 +3415,31 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_UNLOCK_WITH_TIMEOUT_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_PAUSE_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2032,7 +3470,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterUnlockWithTimeoutResponseCallback(apCommandObj, status); + emberAfMediaPlaybackClusterMediaPauseResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2044,68 +3482,31 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_DOOR_LOCK_CLUSTER_ID); - break; - } - } - } -} - -} // namespace DoorLock - -namespace GeneralCommissioning { - -void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - case ZCL_ARM_FAIL_SAFE_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_PLAY_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t errorCode; - bool errorCodeExists = false; - const uint8_t * debugText; - bool debugTextExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (errorCodeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(errorCode); - if (CHIP_NO_ERROR == TLVUnpackError) - { - errorCodeExists = true; - validArgumentCount++; - } - break; - case 1: - if (debugTextExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(debugText); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - debugTextExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2133,11 +3534,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGeneralCommissioningClusterArmFailSafeResponseCallback(apCommandObj, errorCode, - const_cast(debugText)); + emberAfMediaPlaybackClusterMediaPlayResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2145,52 +3545,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_COMMISSIONING_COMPLETE_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_PREVIOUS_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t errorCode; - bool errorCodeExists = false; - const uint8_t * debugText; - bool debugTextExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (errorCodeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(errorCode); - if (CHIP_NO_ERROR == TLVUnpackError) - { - errorCodeExists = true; - validArgumentCount++; - } - break; - case 1: - if (debugTextExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(debugText); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - debugTextExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2218,11 +3601,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGeneralCommissioningClusterCommissioningCompleteResponseCallback(apCommandObj, errorCode, - const_cast(debugText)); + emberAfMediaPlaybackClusterMediaPreviousResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2230,52 +3612,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_SET_REGULATORY_CONFIG_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_REWIND_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t errorCode; - bool errorCodeExists = false; - const uint8_t * debugText; - bool debugTextExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (errorCodeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(errorCode); - if (CHIP_NO_ERROR == TLVUnpackError) - { - errorCodeExists = true; - validArgumentCount++; - } - break; - case 1: - if (debugTextExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(debugText); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - debugTextExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2303,11 +3668,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGeneralCommissioningClusterSetRegulatoryConfigResponseCallback(apCommandObj, errorCode, - const_cast(debugText)); + emberAfMediaPlaybackClusterMediaRewindResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2315,71 +3679,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_GENERAL_COMMISSIONING_CLUSTER_ID); - break; - } - } - } -} - -} // namespace GeneralCommissioning - -namespace Groups { - -void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - case ZCL_ADD_GROUP_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_SKIP_BACKWARD_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint16_t groupId; - bool groupIdExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(status); - if (CHIP_NO_ERROR == TLVUnpackError) - { - statusExists = true; - validArgumentCount++; - } - break; - case 1: - if (groupIdExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(groupId); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - groupIdExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2407,10 +3735,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGroupsClusterAddGroupResponseCallback(apCommandObj, status, groupId); + emberAfMediaPlaybackClusterMediaSkipBackwardResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2418,68 +3746,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_GET_GROUP_MEMBERSHIP_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t capacity; - bool capacityExists = false; - uint8_t groupCount; - bool groupCountExists = false; - /* TYPE WARNING: array array defaults to */ uint8_t * groupList; - bool groupListExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (capacityExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(capacity); - if (CHIP_NO_ERROR == TLVUnpackError) - { - capacityExists = true; - validArgumentCount++; - } - break; - case 1: - if (groupCountExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(groupCount); - if (CHIP_NO_ERROR == TLVUnpackError) - { - groupCountExists = true; - validArgumentCount++; - } - break; - case 2: - if (groupListExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - // Just for compatibility, we will add array type support in IM later. - TLVUnpackError = aDataTlv.GetDataPtr(const_cast(groupList)); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - groupListExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2507,10 +3802,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 3 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGroupsClusterGetGroupMembershipResponseCallback(apCommandObj, capacity, groupCount, groupList); + emberAfMediaPlaybackClusterMediaSkipForwardResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2518,51 +3813,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 3, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_REMOVE_GROUP_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_SKIP_SEEK_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint16_t groupId; - bool groupIdExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(status); - if (CHIP_NO_ERROR == TLVUnpackError) - { - statusExists = true; - validArgumentCount++; - } - break; - case 1: - if (groupIdExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(groupId); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - groupIdExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2590,10 +3869,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGroupsClusterRemoveGroupResponseCallback(apCommandObj, status, groupId); + emberAfMediaPlaybackClusterMediaSkipSeekResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2601,68 +3880,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; - } - case ZCL_VIEW_GROUP_RESPONSE_COMMAND_ID: { - // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV - // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. - // Any error value TLVUnpackError means we have received an illegal value. - CHIP_ERROR TLVError = CHIP_NO_ERROR; - CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint16_t groupId; - bool groupIdExists = false; - const uint8_t * groupName; - bool groupNameExists = false; - uint32_t validArgumentCount = 0; + } + case ZCL_MEDIA_START_OVER_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(status); - if (CHIP_NO_ERROR == TLVUnpackError) - { - statusExists = true; - validArgumentCount++; - } - break; - case 1: - if (groupIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(groupId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - groupIdExists = true; - validArgumentCount++; - } - break; - case 2: - if (groupNameExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(groupName); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - groupNameExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2690,10 +3936,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 3 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGroupsClusterViewGroupResponseCallback(apCommandObj, status, groupId, const_cast(groupName)); + emberAfMediaPlaybackClusterMediaStartOverResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2701,55 +3947,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 3, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_GROUPS_CLUSTER_ID); - break; - } - } - } -} - -} // namespace Groups - -namespace Identify { - -void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - case ZCL_IDENTIFY_QUERY_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_STOP_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t timeout; - bool timeoutExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (timeoutExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(timeout); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - timeoutExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2780,7 +4006,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfIdentifyClusterIdentifyQueryResponseCallback(apCommandObj, timeout); + emberAfMediaPlaybackClusterMediaStopResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2796,14 +4022,14 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En // Unrecognized command ID, error status will apply. apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_IDENTIFY_CLUSTER_ID); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_MEDIA_PLAYBACK_CLUSTER_ID); break; } } } } -} // namespace Identify +} // namespace MediaPlayback namespace NetworkCommissioning { @@ -4310,6 +5536,214 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // namespace Scenes +namespace TvChannel { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_CHANGE_CHANNEL_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + /* TYPE WARNING: array array defaults to */ uint8_t * ChannelMatch; + bool ChannelMatchExists = false; + uint8_t ErrorType; + bool ErrorTypeExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (ChannelMatchExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // Just for compatibility, we will add array type support in IM later. + TLVUnpackError = aDataTlv.GetDataPtr(const_cast(ChannelMatch)); + if (CHIP_NO_ERROR == TLVUnpackError) + { + ChannelMatchExists = true; + validArgumentCount++; + } + break; + case 1: + if (ErrorTypeExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(ErrorType); + if (CHIP_NO_ERROR == TLVUnpackError) + { + ErrorTypeExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfTvChannelClusterChangeChannelResponseCallback(apCommandObj, ChannelMatch, ErrorType); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 2, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_TV_CHANNEL_CLUSTER_ID); + break; + } + } + } +} + +} // namespace TvChannel + +namespace TargetNavigator { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_NAVIGATE_TARGET_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + const uint8_t * data; + bool dataExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + case 1: + if (dataExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(data); + if (CHIP_NO_ERROR == TLVUnpackError) + { + dataExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfTargetNavigatorClusterNavigateTargetResponseCallback(apCommandObj, status, const_cast(data)); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 2, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_TARGET_NAVIGATOR_CLUSTER_ID); + break; + } + } + } +} + +} // namespace TargetNavigator + namespace Thermostat { void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) diff --git a/examples/chip-tool/gen/af-structs.h b/examples/chip-tool/gen/af-structs.h index b19ca54657a27a..16a5ef656d51ef 100644 --- a/examples/chip-tool/gen/af-structs.h +++ b/examples/chip-tool/gen/af-structs.h @@ -34,9 +34,9 @@ typedef struct _ApplicationLauncherApp // Struct for AudioOutputInfo typedef struct _AudioOutputInfo { - uint8_t Index; - uint8_t OutputType; - uint8_t * Name; + uint8_t index; + uint8_t outputType; + uint8_t * name; } EmberAfAudioOutputInfo; // Struct for BasicCommissioningInfoType @@ -100,17 +100,44 @@ typedef struct _ConfigureReportingStatusRecord // Struct for ContentLaunchAdditionalInfo typedef struct _ContentLaunchAdditionalInfo { - uint8_t * Name; - uint8_t * Value; + uint8_t * name; + uint8_t * value; } EmberAfContentLaunchAdditionalInfo; -// Struct for ContentLaunchSearch -typedef struct _ContentLaunchSearch +// Struct for ContentLaunchBrandingInformation +typedef struct _ContentLaunchBrandingInformation +{ + uint8_t * providerName; + uint8_t background; + uint8_t logo; + uint8_t progressBar; + uint8_t splash; + uint8_t waterMark; +} EmberAfContentLaunchBrandingInformation; + +// Struct for ContentLaunchDimension +typedef struct _ContentLaunchDimension +{ + uint8_t * width; + uint8_t * height; + uint8_t metric; +} EmberAfContentLaunchDimension; + +// Struct for ContentLaunchParamater +typedef struct _ContentLaunchParamater { - uint8_t EntitiesList; - uint8_t * searchWindowStart; - uint8_t * searchWindowEnd; -} EmberAfContentLaunchSearch; + uint8_t Type; + uint8_t * Value; + /* TYPE WARNING: array array defaults to */ uint8_t * ExternalIDList; +} EmberAfContentLaunchParamater; + +// Struct for ContentLaunchStyleInformation +typedef struct _ContentLaunchStyleInformation +{ + uint8_t * imageUrl; + uint8_t * color; + uint8_t size; +} EmberAfContentLaunchStyleInformation; // Struct for DebtPayload typedef struct _DebtPayload @@ -253,12 +280,19 @@ typedef uint8_t EmberAfIdentity; // Struct for MediaInputInfo typedef struct _MediaInputInfo { - uint8_t Index; - uint8_t InputType; - uint8_t * Name; - uint8_t * Description; + uint8_t index; + uint8_t inputType; + uint8_t * name; + uint8_t * description; } EmberAfMediaInputInfo; +// Struct for MediaPlaybackPosition +typedef struct _MediaPlaybackPosition +{ + uint64_t updatedAt; + uint64_t position; +} EmberAfMediaPlaybackPosition; + // Struct for NavigateTargetTargetInfo typedef struct _NavigateTargetTargetInfo { @@ -485,20 +519,20 @@ typedef struct _TransferredPhase // Struct for TvChannelInfo typedef struct _TvChannelInfo { - uint16_t MajorNumber; - uint16_t MinorNumber; - uint8_t * Name; - uint8_t * CallSign; - uint8_t * AffiliateCallSign; + uint16_t majorNumber; + uint16_t minorNumber; + uint8_t * name; + uint8_t * callSign; + uint8_t * affiliateCallSign; } EmberAfTvChannelInfo; // Struct for TvChannelLineupInfo typedef struct _TvChannelLineupInfo { - uint8_t * OperatorName; - uint8_t * LineupName; - uint8_t * PostalCode; - uint8_t LineupInfoType; + uint8_t * operatorName; + uint8_t * lineupName; + uint8_t * postalCode; + uint8_t lineupInfoType; } EmberAfTvChannelLineupInfo; // Struct for WiFiInterfaceScanResult diff --git a/examples/chip-tool/gen/attribute-id.h b/examples/chip-tool/gen/attribute-id.h index 6c224f5faf016e..8e7aa393464caf 100644 --- a/examples/chip-tool/gen/attribute-id.h +++ b/examples/chip-tool/gen/attribute-id.h @@ -1167,7 +1167,14 @@ // Client attributes // Server attributes -#define ZCL_CURRENT_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_START_TIME_ATTRIBUTE_ID (0x0001) +#define ZCL_MEDIA_PLAYBACK_DURATION_ATTRIBUTE_ID (0x0002) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_UPDATED_AT_ATTRIBUTE_ID (0x0003) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_ATTRIBUTE_ID (0x0004) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SPEED_ATTRIBUTE_ID (0x0005) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_END_ATTRIBUTE_ID (0x0006) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_START_ATTRIBUTE_ID (0x0007) // Attribute ids for cluster: Media Input @@ -1194,6 +1201,8 @@ // Client attributes // Server attributes +#define ZCL_CONTENT_LAUNCHER_ACCEPTS_HEADER_ATTRIBUTE_ID (0x0000) +#define ZCL_CONTENT_LAUNCHER_SUPPORTED_STREAMING_TYPES_ATTRIBUTE_ID (0x0001) // Attribute ids for cluster: Audio Output @@ -1209,7 +1218,8 @@ // Server attributes #define ZCL_APPLICATION_LAUNCHER_LIST_ATTRIBUTE_ID (0x0000) -#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_CATALOG_VENDOR_ID_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_APPLICATION_ID_ATTRIBUTE_ID (0x0002) // Attribute ids for cluster: Application Basic diff --git a/examples/chip-tool/gen/call-command-handler.cpp b/examples/chip-tool/gen/call-command-handler.cpp index 8444c3e05ff17f..92e652ab2e04cf 100644 --- a/examples/chip-tool/gen/call-command-handler.cpp +++ b/examples/chip-tool/gen/call-command-handler.cpp @@ -28,27 +28,37 @@ using namespace chip; +EmberAfStatus emberAfAccountLoginClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfApplicationBasicClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfApplicationLauncherClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfAudioOutputClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfBarrierControlClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfBasicClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfBindingClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfColorControlClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfContentLaunchClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfDescriptorClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfDoorLockClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfGeneralCommissioningClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfGroupKeyManagementClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfGroupsClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfIdentifyClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfKeypadInputClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfLevelControlClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfLowPowerClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfMediaInputClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfMediaPlaybackClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfNetworkCommissioningClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfOnOffClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfOperationalCredentialsClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfPumpConfigurationAndControlClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfScenesClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfSwitchClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfTvChannelClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfTargetNavigatorClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfTemperatureMeasurementClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfThermostatClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfWakeOnLanClusterClientCommandParse(EmberAfClusterCommand * cmd); static EmberAfStatus status(bool wasHandled, bool clusterExists, bool mfgSpecific) { @@ -79,10 +89,20 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) { switch (cmd->apsFrame->clusterId) { + case ZCL_ACCOUNT_LOGIN_CLUSTER_ID: + result = emberAfAccountLoginClusterClientCommandParse(cmd); + break; case ZCL_APPLICATION_BASIC_CLUSTER_ID: // No commands are enabled for cluster Application Basic result = status(false, true, cmd->mfgSpecific); break; + case ZCL_APPLICATION_LAUNCHER_CLUSTER_ID: + result = emberAfApplicationLauncherClusterClientCommandParse(cmd); + break; + case ZCL_AUDIO_OUTPUT_CLUSTER_ID: + // No commands are enabled for cluster Audio Output + result = status(false, true, cmd->mfgSpecific); + break; case ZCL_BARRIER_CONTROL_CLUSTER_ID: // No commands are enabled for cluster Barrier Control result = status(false, true, cmd->mfgSpecific); @@ -99,6 +119,9 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) // No commands are enabled for cluster Color Control result = status(false, true, cmd->mfgSpecific); break; + case ZCL_CONTENT_LAUNCH_CLUSTER_ID: + result = emberAfContentLaunchClusterClientCommandParse(cmd); + break; case ZCL_DESCRIPTOR_CLUSTER_ID: // No commands are enabled for cluster Descriptor result = status(false, true, cmd->mfgSpecific); @@ -119,6 +142,9 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) case ZCL_IDENTIFY_CLUSTER_ID: result = emberAfIdentifyClusterClientCommandParse(cmd); break; + case ZCL_KEYPAD_INPUT_CLUSTER_ID: + result = emberAfKeypadInputClusterClientCommandParse(cmd); + break; case ZCL_LEVEL_CONTROL_CLUSTER_ID: // No commands are enabled for cluster Level Control result = status(false, true, cmd->mfgSpecific); @@ -127,6 +153,13 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) // No commands are enabled for cluster Low Power result = status(false, true, cmd->mfgSpecific); break; + case ZCL_MEDIA_INPUT_CLUSTER_ID: + // No commands are enabled for cluster Media Input + result = status(false, true, cmd->mfgSpecific); + break; + case ZCL_MEDIA_PLAYBACK_CLUSTER_ID: + result = emberAfMediaPlaybackClusterClientCommandParse(cmd); + break; case ZCL_NETWORK_COMMISSIONING_CLUSTER_ID: result = emberAfNetworkCommissioningClusterClientCommandParse(cmd); break; @@ -148,6 +181,12 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) // No commands are enabled for cluster Switch result = status(false, true, cmd->mfgSpecific); break; + case ZCL_TV_CHANNEL_CLUSTER_ID: + result = emberAfTvChannelClusterClientCommandParse(cmd); + break; + case ZCL_TARGET_NAVIGATOR_CLUSTER_ID: + result = emberAfTargetNavigatorClusterClientCommandParse(cmd); + break; case ZCL_TEMP_MEASUREMENT_CLUSTER_ID: // No commands are enabled for cluster Temperature Measurement result = status(false, true, cmd->mfgSpecific); @@ -155,6 +194,10 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) case ZCL_THERMOSTAT_CLUSTER_ID: result = emberAfThermostatClusterClientCommandParse(cmd); break; + case ZCL_WAKE_ON_LAN_CLUSTER_ID: + // No commands are enabled for cluster Wake on LAN + result = status(false, true, cmd->mfgSpecific); + break; default: // Unrecognized cluster ID, error status will apply. break; @@ -175,6 +218,127 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) // Cluster specific command parsing +EmberAfStatus emberAfAccountLoginClusterClientCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_GET_SETUP_PIN_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t * setupPIN; + + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + setupPIN = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfAccountLoginClusterGetSetupPINResponseCallback(nullptr, setupPIN); + break; + } + default: { + // Unrecognized command ID, error status will apply. + break; + } + } + } + return status(wasHandled, true, cmd->mfgSpecific); +} +EmberAfStatus emberAfApplicationLauncherClusterClientCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_LAUNCH_APP_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t status; + uint8_t * data; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + 1); + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + data = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfApplicationLauncherClusterLaunchAppResponseCallback(nullptr, status, data); + break; + } + default: { + // Unrecognized command ID, error status will apply. + break; + } + } + } + return status(wasHandled, true, cmd->mfgSpecific); +} +EmberAfStatus emberAfContentLaunchClusterClientCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_LAUNCH_CONTENT_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t * data; + uint8_t contentLaunchStatus; + + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + data = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + emberAfStringLength(data) + 1u); + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + contentLaunchStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfContentLaunchClusterLaunchContentResponseCallback(nullptr, data, contentLaunchStatus); + break; + } + case ZCL_LAUNCH_URL_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t * data; + uint8_t contentLaunchStatus; + + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + data = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + emberAfStringLength(data) + 1u); + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + contentLaunchStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfContentLaunchClusterLaunchURLResponseCallback(nullptr, data, contentLaunchStatus); + break; + } + default: { + // Unrecognized command ID, error status will apply. + break; + } + } + } + return status(wasHandled, true, cmd->mfgSpecific); +} EmberAfStatus emberAfDoorLockClusterClientCommandParse(EmberAfClusterCommand * cmd) { bool wasHandled = false; @@ -901,6 +1065,194 @@ EmberAfStatus emberAfIdentifyClusterClientCommandParse(EmberAfClusterCommand * c } return status(wasHandled, true, cmd->mfgSpecific); } +EmberAfStatus emberAfKeypadInputClusterClientCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_SEND_KEY_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t status; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfKeypadInputClusterSendKeyResponseCallback(nullptr, status); + break; + } + default: { + // Unrecognized command ID, error status will apply. + break; + } + } + } + return status(wasHandled, true, cmd->mfgSpecific); +} +EmberAfStatus emberAfMediaPlaybackClusterClientCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_MEDIA_FAST_FORWARD_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaFastForwardResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_NEXT_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaNextResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_PAUSE_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaPauseResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_PLAY_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaPlayResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_PREVIOUS_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaPreviousResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_REWIND_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaRewindResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_SKIP_BACKWARD_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaSkipBackwardResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaSkipForwardResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_SKIP_SEEK_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaSkipSeekResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_START_OVER_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaStartOverResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_STOP_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaStopResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + default: { + // Unrecognized command ID, error status will apply. + break; + } + } + } + return status(wasHandled, true, cmd->mfgSpecific); +} EmberAfStatus emberAfNetworkCommissioningClusterClientCommandParse(EmberAfClusterCommand * cmd) { bool wasHandled = false; @@ -1347,6 +1699,73 @@ EmberAfStatus emberAfScenesClusterClientCommandParse(EmberAfClusterCommand * cmd } return status(wasHandled, true, cmd->mfgSpecific); } +EmberAfStatus emberAfTvChannelClusterClientCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_CHANGE_CHANNEL_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + /* TYPE WARNING: array array defaults to */ uint8_t * ChannelMatch; + uint8_t ErrorType; + + ChannelMatch = cmd->buffer + payloadOffset; + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + ErrorType = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfTvChannelClusterChangeChannelResponseCallback(nullptr, ChannelMatch, ErrorType); + break; + } + default: { + // Unrecognized command ID, error status will apply. + break; + } + } + } + return status(wasHandled, true, cmd->mfgSpecific); +} +EmberAfStatus emberAfTargetNavigatorClusterClientCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_NAVIGATE_TARGET_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t status; + uint8_t * data; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + 1); + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + data = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfTargetNavigatorClusterNavigateTargetResponseCallback(nullptr, status, data); + break; + } + default: { + // Unrecognized command ID, error status will apply. + break; + } + } + } + return status(wasHandled, true, cmd->mfgSpecific); +} EmberAfStatus emberAfThermostatClusterClientCommandParse(EmberAfClusterCommand * cmd) { bool wasHandled = false; diff --git a/examples/chip-tool/gen/callback-stub.cpp b/examples/chip-tool/gen/callback-stub.cpp index 33666ecc7a520a..e09564d69d338a 100644 --- a/examples/chip-tool/gen/callback-stub.cpp +++ b/examples/chip-tool/gen/callback-stub.cpp @@ -29,9 +29,18 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId) { switch (clusterId) { + case ZCL_ACCOUNT_LOGIN_CLUSTER_ID: + emberAfAccountLoginClusterInitCallback(endpoint); + break; case ZCL_APPLICATION_BASIC_CLUSTER_ID: emberAfApplicationBasicClusterInitCallback(endpoint); break; + case ZCL_APPLICATION_LAUNCHER_CLUSTER_ID: + emberAfApplicationLauncherClusterInitCallback(endpoint); + break; + case ZCL_AUDIO_OUTPUT_CLUSTER_ID: + emberAfAudioOutputClusterInitCallback(endpoint); + break; case ZCL_BARRIER_CONTROL_CLUSTER_ID: emberAfBarrierControlClusterInitCallback(endpoint); break; @@ -44,6 +53,9 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId) case ZCL_COLOR_CONTROL_CLUSTER_ID: emberAfColorControlClusterInitCallback(endpoint); break; + case ZCL_CONTENT_LAUNCH_CLUSTER_ID: + emberAfContentLaunchClusterInitCallback(endpoint); + break; case ZCL_DESCRIPTOR_CLUSTER_ID: emberAfDescriptorClusterInitCallback(endpoint); break; @@ -62,12 +74,21 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId) case ZCL_IDENTIFY_CLUSTER_ID: emberAfIdentifyClusterInitCallback(endpoint); break; + case ZCL_KEYPAD_INPUT_CLUSTER_ID: + emberAfKeypadInputClusterInitCallback(endpoint); + break; case ZCL_LEVEL_CONTROL_CLUSTER_ID: emberAfLevelControlClusterInitCallback(endpoint); break; case ZCL_LOW_POWER_CLUSTER_ID: emberAfLowPowerClusterInitCallback(endpoint); break; + case ZCL_MEDIA_INPUT_CLUSTER_ID: + emberAfMediaInputClusterInitCallback(endpoint); + break; + case ZCL_MEDIA_PLAYBACK_CLUSTER_ID: + emberAfMediaPlaybackClusterInitCallback(endpoint); + break; case ZCL_NETWORK_COMMISSIONING_CLUSTER_ID: emberAfNetworkCommissioningClusterInitCallback(endpoint); break; @@ -86,23 +107,47 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId) case ZCL_SWITCH_CLUSTER_ID: emberAfSwitchClusterInitCallback(endpoint); break; + case ZCL_TV_CHANNEL_CLUSTER_ID: + emberAfTvChannelClusterInitCallback(endpoint); + break; + case ZCL_TARGET_NAVIGATOR_CLUSTER_ID: + emberAfTargetNavigatorClusterInitCallback(endpoint); + break; case ZCL_TEMP_MEASUREMENT_CLUSTER_ID: emberAfTemperatureMeasurementClusterInitCallback(endpoint); break; case ZCL_THERMOSTAT_CLUSTER_ID: emberAfThermostatClusterInitCallback(endpoint); break; + case ZCL_WAKE_ON_LAN_CLUSTER_ID: + emberAfWakeOnLanClusterInitCallback(endpoint); + break; default: // Unrecognized cluster ID break; } } +void __attribute__((weak)) emberAfAccountLoginClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfApplicationBasicClusterInitCallback(EndpointId endpoint) { // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfApplicationLauncherClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} +void __attribute__((weak)) emberAfAudioOutputClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfBarrierControlClusterInitCallback(EndpointId endpoint) { // To prevent warning @@ -123,6 +168,11 @@ void __attribute__((weak)) emberAfColorControlClusterInitCallback(EndpointId end // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfContentLaunchClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfDescriptorClusterInitCallback(EndpointId endpoint) { // To prevent warning @@ -153,6 +203,11 @@ void __attribute__((weak)) emberAfIdentifyClusterInitCallback(EndpointId endpoin // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfKeypadInputClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfLevelControlClusterInitCallback(EndpointId endpoint) { // To prevent warning @@ -163,6 +218,16 @@ void __attribute__((weak)) emberAfLowPowerClusterInitCallback(EndpointId endpoin // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfMediaInputClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} +void __attribute__((weak)) emberAfMediaPlaybackClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfNetworkCommissioningClusterInitCallback(EndpointId endpoint) { // To prevent warning @@ -193,6 +258,16 @@ void __attribute__((weak)) emberAfSwitchClusterInitCallback(EndpointId endpoint) // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfTvChannelClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} +void __attribute__((weak)) emberAfTargetNavigatorClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfTemperatureMeasurementClusterInitCallback(EndpointId endpoint) { // To prevent warning @@ -203,6 +278,11 @@ void __attribute__((weak)) emberAfThermostatClusterInitCallback(EndpointId endpo // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfWakeOnLanClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} // // Non-Cluster Related Callbacks diff --git a/examples/chip-tool/gen/callback.h b/examples/chip-tool/gen/callback.h index 0b3b59cb0f9dd7..7fedf9b6c00cf8 100644 --- a/examples/chip-tool/gen/callback.h +++ b/examples/chip-tool/gen/callback.h @@ -40,6 +40,14 @@ void emberAfClusterInitCallback(chip::EndpointId endpoint, chip::ClusterId clust // Cluster Init Functions +/** @brief Account Login Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfAccountLoginClusterInitCallback(chip::EndpointId endpoint); + /** @brief Application Basic Cluster Init * * Cluster Init @@ -48,6 +56,22 @@ void emberAfClusterInitCallback(chip::EndpointId endpoint, chip::ClusterId clust */ void emberAfApplicationBasicClusterInitCallback(chip::EndpointId endpoint); +/** @brief Application Launcher Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfApplicationLauncherClusterInitCallback(chip::EndpointId endpoint); + +/** @brief Audio Output Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfAudioOutputClusterInitCallback(chip::EndpointId endpoint); + /** @brief Barrier Control Cluster Init * * Cluster Init @@ -80,6 +104,14 @@ void emberAfBindingClusterInitCallback(chip::EndpointId endpoint); */ void emberAfColorControlClusterInitCallback(chip::EndpointId endpoint); +/** @brief Content Launch Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfContentLaunchClusterInitCallback(chip::EndpointId endpoint); + /** @brief Descriptor Cluster Init * * Cluster Init @@ -128,6 +160,14 @@ void emberAfGroupsClusterInitCallback(chip::EndpointId endpoint); */ void emberAfIdentifyClusterInitCallback(chip::EndpointId endpoint); +/** @brief Keypad Input Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfKeypadInputClusterInitCallback(chip::EndpointId endpoint); + /** @brief Level Control Cluster Init * * Cluster Init @@ -144,6 +184,22 @@ void emberAfLevelControlClusterInitCallback(chip::EndpointId endpoint); */ void emberAfLowPowerClusterInitCallback(chip::EndpointId endpoint); +/** @brief Media Input Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfMediaInputClusterInitCallback(chip::EndpointId endpoint); + +/** @brief Media Playback Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfMediaPlaybackClusterInitCallback(chip::EndpointId endpoint); + /** @brief Network Commissioning Cluster Init * * Cluster Init @@ -192,6 +248,22 @@ void emberAfScenesClusterInitCallback(chip::EndpointId endpoint); */ void emberAfSwitchClusterInitCallback(chip::EndpointId endpoint); +/** @brief TV Channel Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfTvChannelClusterInitCallback(chip::EndpointId endpoint); + +/** @brief Target Navigator Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfTargetNavigatorClusterInitCallback(chip::EndpointId endpoint); + /** @brief Temperature Measurement Cluster Init * * Cluster Init @@ -208,8 +280,86 @@ void emberAfTemperatureMeasurementClusterInitCallback(chip::EndpointId endpoint) */ void emberAfThermostatClusterInitCallback(chip::EndpointId endpoint); +/** @brief Wake on LAN Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfWakeOnLanClusterInitCallback(chip::EndpointId endpoint); + // Cluster Server/Client Init Functions +// +// Account Login Cluster client +// + +/** @brief Account Login Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfAccountLoginClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Account Login Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfAccountLoginClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Account Login Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfAccountLoginClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Account Login Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfAccountLoginClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Account Login Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfAccountLoginClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Account Login Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfAccountLoginClusterClientTickCallback(chip::EndpointId endpoint); + // // Application Basic Cluster client // @@ -281,6 +431,147 @@ EmberAfStatus emberAfApplicationBasicClusterClientPreAttributeChangedCallback(ch */ void emberAfApplicationBasicClusterClientTickCallback(chip::EndpointId endpoint); +// +// Application Launcher Cluster client +// + +/** @brief Application Launcher Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfApplicationLauncherClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Application Launcher Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfApplicationLauncherClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Application Launcher Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfApplicationLauncherClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Application Launcher Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfApplicationLauncherClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Application Launcher Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfApplicationLauncherClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Application Launcher Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfApplicationLauncherClusterClientTickCallback(chip::EndpointId endpoint); + +// +// Audio Output Cluster client +// + +/** @brief Audio Output Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfAudioOutputClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Audio Output Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfAudioOutputClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Audio Output Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfAudioOutputClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Audio Output Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfAudioOutputClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Audio Output Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfAudioOutputClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Audio Output Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfAudioOutputClusterClientTickCallback(chip::EndpointId endpoint); + // // Barrier Control Cluster client // @@ -560,6 +851,76 @@ EmberAfStatus emberAfColorControlClusterClientPreAttributeChangedCallback(chip:: */ void emberAfColorControlClusterClientTickCallback(chip::EndpointId endpoint); +// +// Content Launch Cluster client +// + +/** @brief Content Launch Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfContentLaunchClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Content Launch Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfContentLaunchClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Content Launch Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfContentLaunchClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Content Launch Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfContentLaunchClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Content Launch Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfContentLaunchClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Content Launch Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfContentLaunchClusterClientTickCallback(chip::EndpointId endpoint); + // // Descriptor Cluster client // @@ -982,6 +1343,76 @@ EmberAfStatus emberAfIdentifyClusterClientPreAttributeChangedCallback(chip::Endp */ void emberAfIdentifyClusterClientTickCallback(chip::EndpointId endpoint); +// +// Keypad Input Cluster client +// + +/** @brief Keypad Input Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfKeypadInputClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Keypad Input Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfKeypadInputClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Keypad Input Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfKeypadInputClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Keypad Input Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfKeypadInputClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Keypad Input Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfKeypadInputClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Keypad Input Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfKeypadInputClusterClientTickCallback(chip::EndpointId endpoint); + // // Level Control Cluster client // @@ -1030,7 +1461,147 @@ void emberAfLevelControlClusterClientMessageSentCallback(EmberOutgoingMessageTyp EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, EmberStatus status); -/** @brief Level Control Cluster Client Pre Attribute Changed +/** @brief Level Control Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfLevelControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Level Control Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfLevelControlClusterClientTickCallback(chip::EndpointId endpoint); + +// +// Low Power Cluster client +// + +/** @brief Low Power Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfLowPowerClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Low Power Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfLowPowerClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Low Power Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfLowPowerClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Low Power Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfLowPowerClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Low Power Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfLowPowerClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Low Power Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfLowPowerClusterClientTickCallback(chip::EndpointId endpoint); + +// +// Media Input Cluster client +// + +/** @brief Media Input Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfMediaInputClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Media Input Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfMediaInputClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Media Input Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfMediaInputClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Media Input Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfMediaInputClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Media Input Cluster Client Pre Attribute Changed * * client Pre Attribute Changed * @@ -1040,40 +1611,40 @@ void emberAfLevelControlClusterClientMessageSentCallback(EmberOutgoingMessageTyp * @param size Attribute size * @param value Attribute value */ -EmberAfStatus emberAfLevelControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, - EmberAfAttributeType attributeType, uint8_t size, - uint8_t * value); +EmberAfStatus emberAfMediaInputClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); -/** @brief Level Control Cluster Client Tick +/** @brief Media Input Cluster Client Tick * * client Tick * * @param endpoint Endpoint that is being served */ -void emberAfLevelControlClusterClientTickCallback(chip::EndpointId endpoint); +void emberAfMediaInputClusterClientTickCallback(chip::EndpointId endpoint); // -// Low Power Cluster client +// Media Playback Cluster client // -/** @brief Low Power Cluster Client Init +/** @brief Media Playback Cluster Client Init * * Client Init * * @param endpoint Endpoint that is being initialized */ -void emberAfLowPowerClusterClientInitCallback(chip::EndpointId endpoint); +void emberAfMediaPlaybackClusterClientInitCallback(chip::EndpointId endpoint); -/** @brief Low Power Cluster Client Attribute Changed +/** @brief Media Playback Cluster Client Attribute Changed * * Client Attribute Changed * * @param endpoint Endpoint that is being initialized * @param attributeId Attribute that changed */ -void emberAfLowPowerClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); +void emberAfMediaPlaybackClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); -/** @brief Low Power Cluster Client Manufacturer Specific Attribute Changed +/** @brief Media Playback Cluster Client Manufacturer Specific Attribute Changed * * Client Manufacturer Specific Attribute Changed * @@ -1081,11 +1652,11 @@ void emberAfLowPowerClusterClientAttributeChangedCallback(chip::EndpointId endpo * @param attributeId Attribute that changed * @param manufacturerCode Manufacturer Code of the attribute that changed */ -void emberAfLowPowerClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, - chip::AttributeId attributeId, - uint16_t manufacturerCode); +void emberAfMediaPlaybackClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); -/** @brief Low Power Cluster Client Message Sent +/** @brief Media Playback Cluster Client Message Sent * * Client Message Sent * @@ -1096,11 +1667,11 @@ void emberAfLowPowerClusterClientManufacturerSpecificAttributeChangedCallback(ch * @param message The message that was sent * @param status The status of the sent message */ -void emberAfLowPowerClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, - EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, - EmberStatus status); +void emberAfMediaPlaybackClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); -/** @brief Low Power Cluster Client Pre Attribute Changed +/** @brief Media Playback Cluster Client Pre Attribute Changed * * client Pre Attribute Changed * @@ -1110,17 +1681,17 @@ void emberAfLowPowerClusterClientMessageSentCallback(EmberOutgoingMessageType ty * @param size Attribute size * @param value Attribute value */ -EmberAfStatus emberAfLowPowerClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, - EmberAfAttributeType attributeType, uint8_t size, - uint8_t * value); +EmberAfStatus emberAfMediaPlaybackClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); -/** @brief Low Power Cluster Client Tick +/** @brief Media Playback Cluster Client Tick * * client Tick * * @param endpoint Endpoint that is being served */ -void emberAfLowPowerClusterClientTickCallback(chip::EndpointId endpoint); +void emberAfMediaPlaybackClusterClientTickCallback(chip::EndpointId endpoint); // // Network Commissioning Cluster client @@ -1544,6 +2115,147 @@ EmberAfStatus emberAfSwitchClusterClientPreAttributeChangedCallback(chip::Endpoi */ void emberAfSwitchClusterClientTickCallback(chip::EndpointId endpoint); +// +// TV Channel Cluster client +// + +/** @brief TV Channel Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfTvChannelClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief TV Channel Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfTvChannelClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief TV Channel Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfTvChannelClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief TV Channel Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfTvChannelClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief TV Channel Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfTvChannelClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief TV Channel Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfTvChannelClusterClientTickCallback(chip::EndpointId endpoint); + +// +// Target Navigator Cluster client +// + +/** @brief Target Navigator Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfTargetNavigatorClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Target Navigator Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfTargetNavigatorClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Target Navigator Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfTargetNavigatorClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Target Navigator Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfTargetNavigatorClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Target Navigator Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfTargetNavigatorClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Target Navigator Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfTargetNavigatorClusterClientTickCallback(chip::EndpointId endpoint); + // // Temperature Measurement Cluster client // @@ -1685,8 +2397,111 @@ EmberAfStatus emberAfThermostatClusterClientPreAttributeChangedCallback(chip::En */ void emberAfThermostatClusterClientTickCallback(chip::EndpointId endpoint); +// +// Wake on LAN Cluster client +// + +/** @brief Wake on LAN Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfWakeOnLanClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Wake on LAN Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfWakeOnLanClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Wake on LAN Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfWakeOnLanClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Wake on LAN Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfWakeOnLanClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Wake on LAN Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfWakeOnLanClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Wake on LAN Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfWakeOnLanClusterClientTickCallback(chip::EndpointId endpoint); + // Cluster Commands Callback +/** + * @brief Account Login Cluster GetSetupPINResponse Command callback + * @param setupPIN + */ + +bool emberAfAccountLoginClusterGetSetupPINResponseCallback(chip::app::Command * commandObj, uint8_t * setupPIN); + +/** + * @brief Application Launcher Cluster LaunchAppResponse Command callback + * @param status + * @param data + */ + +bool emberAfApplicationLauncherClusterLaunchAppResponseCallback(chip::app::Command * commandObj, uint8_t status, uint8_t * data); + +/** + * @brief Content Launch Cluster LaunchContentResponse Command callback + * @param data + * @param contentLaunchStatus + */ + +bool emberAfContentLaunchClusterLaunchContentResponseCallback(chip::app::Command * commandObj, uint8_t * data, + uint8_t contentLaunchStatus); + +/** + * @brief Content Launch Cluster LaunchURLResponse Command callback + * @param data + * @param contentLaunchStatus + */ + +bool emberAfContentLaunchClusterLaunchURLResponseCallback(chip::app::Command * commandObj, uint8_t * data, + uint8_t contentLaunchStatus); + /** * @brief Door Lock Cluster ClearAllPinsResponse Command callback * @param status @@ -1955,6 +2770,90 @@ bool emberAfGroupsClusterViewGroupResponseCallback(chip::app::Command * commandO bool emberAfIdentifyClusterIdentifyQueryResponseCallback(chip::app::Command * commandObj, uint16_t timeout); +/** + * @brief Keypad Input Cluster SendKeyResponse Command callback + * @param status + */ + +bool emberAfKeypadInputClusterSendKeyResponseCallback(chip::app::Command * commandObj, uint8_t status); + +/** + * @brief Media Playback Cluster MediaFastForwardResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaFastForwardResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaNextResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaNextResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaPauseResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaPauseResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaPlayResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaPlayResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaPreviousResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaPreviousResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaRewindResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaRewindResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaSkipBackwardResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaSkipBackwardResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaSkipForwardResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaSkipForwardResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaSkipSeekResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaSkipSeekResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaStartOverResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaStartOverResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaStopResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaStopResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + /** * @brief Network Commissioning Cluster AddThreadNetworkResponse Command callback * @param errorCode @@ -2103,6 +3002,24 @@ bool emberAfScenesClusterViewSceneResponseCallback(chip::app::Command * commandO uint8_t sceneId, uint16_t transitionTime, uint8_t * sceneName, /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets); +/** + * @brief TV Channel Cluster ChangeChannelResponse Command callback + * @param channelMatch + * @param errorType + */ + +bool emberAfTvChannelClusterChangeChannelResponseCallback(chip::app::Command * commandObj, + /* TYPE WARNING: array array defaults to */ uint8_t * ChannelMatch, + uint8_t ErrorType); + +/** + * @brief Target Navigator Cluster NavigateTargetResponse Command callback + * @param status + * @param data + */ + +bool emberAfTargetNavigatorClusterNavigateTargetResponseCallback(chip::app::Command * commandObj, uint8_t status, uint8_t * data); + /** * @brief Thermostat Cluster CurrentWeeklySchedule Command callback * @param numberOfTransitionsForSequence diff --git a/examples/chip-tool/gen/client-command-macro.h b/examples/chip-tool/gen/client-command-macro.h index c976129992f7e6..1cfc06d80ce7c2 100644 --- a/examples/chip-tool/gen/client-command-macro.h +++ b/examples/chip-tool/gen/client-command-macro.h @@ -3361,95 +3361,126 @@ \ ZCL_NAVIGATE_TARGET_COMMAND_ID, "uuuu", target, status, data, data); -/** @brief Command description for PlayRequest +/** @brief Command description for MediaPlay * - * Command: PlayRequest + * Command: MediaPlay + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPlayRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPlay(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_PLAY_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PLAY_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PauseRequest +/** @brief Command description for MediaPause * - * Command: PauseRequest + * Command: MediaPause + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPauseRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPause(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PAUSE_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PAUSE_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StopRequest +/** @brief Command description for MediaStop * - * Command: StopRequest + * Command: MediaStop + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStopRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStop(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_STOP_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_STOP_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StartOverRequest +/** @brief Command description for MediaStartOver * - * Command: StartOverRequest + * Command: MediaStartOver + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStartOverRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStartOver(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_START_OVER_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_START_OVER_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PreviousRequest +/** @brief Command description for MediaPrevious * - * Command: PreviousRequest + * Command: MediaPrevious + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPreviousRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPrevious(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PREVIOUS_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PREVIOUS_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for NextRequest +/** @brief Command description for MediaNext * - * Command: NextRequest + * Command: MediaNext + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterNextRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaNext(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_NEXT_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_NEXT_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for RewindRequest +/** @brief Command description for MediaRewind * - * Command: RewindRequest + * Command: MediaRewind + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterRewindRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaRewind(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_REWIND_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_REWIND_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for FastForwardRequest +/** @brief Command description for MediaFastForward * - * Command: FastForwardRequest + * Command: MediaFastForward + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterFastForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaFastForward(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_FAST_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_FAST_FORWARD_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for SkipForwardRequest +/** @brief Command description for MediaSkipForward * - * Command: SkipForwardRequest + * Command: MediaSkipForward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipForward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); -/** @brief Command description for SkipBackwardRequest +/** @brief Command description for MediaSkipBackward * - * Command: SkipBackwardRequest + * Command: MediaSkipBackward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipBackwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipBackward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); + +/** @brief Command description for MediaSkipSeek + * + * Command: MediaSkipSeek + * @param position INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus + */ +#define emberAfFillCommandMedia \ + PlaybackClusterMediaSkipSeek(position, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ + \ + ZCL_MEDIA_SKIP_SEEK_COMMAND_ID, "uu", position, mediaPlaybackStatus); /** @brief Command description for SelectInput * @@ -3502,7 +3533,7 @@ /** @brief Command description for SendKey * * Command: SendKey - * @param keyCode INT8U + * @param keyCode KeypadInputCecKeyCode * @param status KeypadInputStatus */ #define emberAfFillCommandKeypad \ @@ -3513,23 +3544,30 @@ /** @brief Command description for LaunchContent * * Command: LaunchContent + * @param autoPlay BOOLEAN + * @param data CHAR_STRING + * @param data CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchContent(contentLaunchStatus) \ + LaunchClusterLaunchContent(autoPlay, data, data, contentLaunchStatus) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_CONTENT_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_CONTENT_COMMAND_ID, "uuuu", autoPlay, data, data, contentLaunchStatus); /** @brief Command description for LaunchURL * * Command: LaunchURL + * @param contentURL CHAR_STRING + * @param data CHAR_STRING + * @param displayString CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchURL(contentLaunchStatus) emberAfFillExternalBuffer(mask, \ + LaunchClusterLaunchURL(contentURL, data, displayString, contentLaunchStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_URL_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_URL_COMMAND_ID, "uuuu", contentURL, data, displayString, contentLaunchStatus); /** @brief Command description for SelectOutput * @@ -3555,17 +3593,17 @@ /** @brief Command description for LaunchApp * * Command: LaunchApp + * @param data CHAR_STRING + * @param status ApplicationLauncherStatus * @param application ApplicationLauncherApp [] * @param applicationLen int - * @param status ApplicationLauncherStatus - * @param data CHAR_STRING * @param data CHAR_STRING */ #define emberAfFillCommandApplication \ - LauncherClusterLaunchApp(application, applicationLen, status, data, data) \ + LauncherClusterLaunchApp(data, status, application, applicationLen, data) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_APP_COMMAND_ID, "buuu", application, applicationLen, status, data, data); + ZCL_LAUNCH_APP_COMMAND_ID, "uubu", data, status, application, applicationLen, data); /** @brief Command description for GetSetupPIN * diff --git a/examples/chip-tool/gen/command-id.h b/examples/chip-tool/gen/command-id.h index e3c8f93cadb923..25ee08826f030c 100644 --- a/examples/chip-tool/gen/command-id.h +++ b/examples/chip-tool/gen/command-id.h @@ -415,17 +415,28 @@ #define ZCL_NAVIGATE_TARGET_RESPONSE_COMMAND_ID (0x00) // Commands for cluster: Media Playback -#define ZCL_PLAY_REQUEST_COMMAND_ID (0x00) -#define ZCL_PLAYBACK_COMMAND_ID (0x00) -#define ZCL_PAUSE_REQUEST_COMMAND_ID (0x01) -#define ZCL_STOP_REQUEST_COMMAND_ID (0x02) -#define ZCL_START_OVER_REQUEST_COMMAND_ID (0x03) -#define ZCL_PREVIOUS_REQUEST_COMMAND_ID (0x04) -#define ZCL_NEXT_REQUEST_COMMAND_ID (0x05) -#define ZCL_REWIND_REQUEST_COMMAND_ID (0x06) -#define ZCL_FAST_FORWARD_REQUEST_COMMAND_ID (0x07) -#define ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID (0x08) -#define ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID (0x09) +#define ZCL_MEDIA_PLAY_COMMAND_ID (0x00) +#define ZCL_MEDIA_PLAY_RESPONSE_COMMAND_ID (0x00) +#define ZCL_MEDIA_PAUSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_PAUSE_RESPONSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_STOP_COMMAND_ID (0x02) +#define ZCL_MEDIA_STOP_RESPONSE_COMMAND_ID (0x02) +#define ZCL_MEDIA_START_OVER_COMMAND_ID (0x03) +#define ZCL_MEDIA_START_OVER_RESPONSE_COMMAND_ID (0x03) +#define ZCL_MEDIA_PREVIOUS_COMMAND_ID (0x04) +#define ZCL_MEDIA_PREVIOUS_RESPONSE_COMMAND_ID (0x04) +#define ZCL_MEDIA_NEXT_COMMAND_ID (0x05) +#define ZCL_MEDIA_NEXT_RESPONSE_COMMAND_ID (0x05) +#define ZCL_MEDIA_REWIND_COMMAND_ID (0x06) +#define ZCL_MEDIA_REWIND_RESPONSE_COMMAND_ID (0x06) +#define ZCL_MEDIA_FAST_FORWARD_COMMAND_ID (0x07) +#define ZCL_MEDIA_FAST_FORWARD_RESPONSE_COMMAND_ID (0x07) +#define ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_BACKWARD_RESPONSE_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_SEEK_COMMAND_ID (0x0A) +#define ZCL_MEDIA_SKIP_SEEK_RESPONSE_COMMAND_ID (0x0A) // Commands for cluster: Media Input #define ZCL_SELECT_INPUT_COMMAND_ID (0x00) diff --git a/examples/chip-tool/gen/endpoint_config.h b/examples/chip-tool/gen/endpoint_config.h index 5d7aa618a861c8..6f7149a6451d71 100644 --- a/examples/chip-tool/gen/endpoint_config.h +++ b/examples/chip-tool/gen/endpoint_config.h @@ -63,7 +63,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 21 +#define GENERATED_ATTRIBUTE_COUNT 31 #define GENERATED_ATTRIBUTES \ { \ \ @@ -119,10 +119,40 @@ /* Endpoint: 1, Cluster: Temperature Measurement (client) */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(3) }, /* cluster revision */ \ \ + /* Endpoint: 1, Cluster: Wake on LAN (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: TV Channel (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Target Navigator (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Media Playback (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Media Input (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ /* Endpoint: 1, Cluster: Low Power (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Keypad Input (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Content Launch (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Audio Output (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Application Launcher (client) */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ /* Endpoint: 1, Cluster: Application Basic (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Account Login (client) */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ /* Endpoint: 1, Cluster: Binding (client) */ \ @@ -139,7 +169,7 @@ #define GENERATED_FUNCTION_ARRAYS #define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask -#define GENERATED_CLUSTER_COUNT 21 +#define GENERATED_CLUSTER_COUNT 31 #define GENERATED_CLUSTERS \ { \ { 0x0003, ZAP_ATTRIBUTE_INDEX(0), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Identify (client) */ \ @@ -182,16 +212,46 @@ 0x0402, ZAP_ATTRIBUTE_INDEX(16), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ }, /* Endpoint: 1, Cluster: Temperature Measurement (client) */ \ { \ - 0x0508, ZAP_ATTRIBUTE_INDEX(17), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + 0x0503, ZAP_ATTRIBUTE_INDEX(17), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Wake on LAN (client) */ \ + { \ + 0x0504, ZAP_ATTRIBUTE_INDEX(18), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: TV Channel (client) */ \ + { \ + 0x0505, ZAP_ATTRIBUTE_INDEX(19), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Target Navigator (client) */ \ + { \ + 0x0506, ZAP_ATTRIBUTE_INDEX(20), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Media Playback (client) */ \ + { \ + 0x0507, ZAP_ATTRIBUTE_INDEX(21), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Media Input (client) */ \ + { \ + 0x0508, ZAP_ATTRIBUTE_INDEX(22), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ }, /* Endpoint: 1, Cluster: Low Power (client) */ \ { \ - 0x050D, ZAP_ATTRIBUTE_INDEX(18), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + 0x0509, ZAP_ATTRIBUTE_INDEX(23), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Keypad Input (client) */ \ + { \ + 0x050A, ZAP_ATTRIBUTE_INDEX(24), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Content Launch (client) */ \ + { \ + 0x050B, ZAP_ATTRIBUTE_INDEX(25), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Audio Output (client) */ \ + { \ + 0x050C, ZAP_ATTRIBUTE_INDEX(26), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Application Launcher (client) */ \ + { \ + 0x050D, ZAP_ATTRIBUTE_INDEX(27), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ }, /* Endpoint: 1, Cluster: Application Basic (client) */ \ { \ - 0xF000, ZAP_ATTRIBUTE_INDEX(19), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + 0x050E, ZAP_ATTRIBUTE_INDEX(28), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Account Login (client) */ \ + { \ + 0xF000, ZAP_ATTRIBUTE_INDEX(29), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ }, /* Endpoint: 1, Cluster: Binding (client) */ \ { \ - 0xF004, ZAP_ATTRIBUTE_INDEX(20), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + 0xF004, ZAP_ATTRIBUTE_INDEX(30), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ }, /* Endpoint: 1, Cluster: Group Key Management (client) */ \ } @@ -200,7 +260,7 @@ // This is an array of EmberAfEndpointType structures. #define GENERATED_ENDPOINT_TYPES \ { \ - { ZAP_CLUSTER_INDEX(0), 21, 42 }, \ + { ZAP_CLUSTER_INDEX(0), 31, 62 }, \ } // Largest attribute size is needed for various buffers @@ -210,7 +270,7 @@ #define ATTRIBUTE_SINGLETONS_SIZE (2) // Total size of attribute storage -#define ATTRIBUTE_MAX_SIZE (42) +#define ATTRIBUTE_MAX_SIZE (62) // Number of fixed endpoints #define FIXED_ENDPOINT_COUNT (1) @@ -254,7 +314,7 @@ // Array of EmberAfCommandMetadata structs. #define ZAP_COMMAND_MASK(mask) COMMAND_MASK_##mask -#define EMBER_AF_GENERATED_COMMAND_COUNT (142) +#define EMBER_AF_GENERATED_COMMAND_COUNT (187) #define GENERATED_COMMANDS \ { \ \ @@ -434,9 +494,72 @@ { 0x0300, 0x4B, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* MoveColorTemperature */ \ { 0x0300, 0x4C, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* StepColorTemperature */ \ \ + /* Endpoint: 1, Cluster: TV Channel (client) */ \ + { 0x0504, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ChangeChannel */ \ + { 0x0504, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* ChangeChannelResponse */ \ + { 0x0504, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ChangeChannelByNumber */ \ + { 0x0504, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* SkipChannel */ \ + \ + /* Endpoint: 1, Cluster: Target Navigator (client) */ \ + { 0x0505, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* NavigateTarget */ \ + { 0x0505, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* NavigateTargetResponse */ \ + \ + /* Endpoint: 1, Cluster: Media Playback (client) */ \ + { 0x0506, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaPlay */ \ + { 0x0506, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaPlayResponse */ \ + { 0x0506, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaPause */ \ + { 0x0506, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaPauseResponse */ \ + { 0x0506, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaStop */ \ + { 0x0506, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaStopResponse */ \ + { 0x0506, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaStartOver */ \ + { 0x0506, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaStartOverResponse */ \ + { 0x0506, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaPrevious */ \ + { 0x0506, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaPreviousResponse */ \ + { 0x0506, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaNext */ \ + { 0x0506, 0x05, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaNextResponse */ \ + { 0x0506, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaRewind */ \ + { 0x0506, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaRewindResponse */ \ + { 0x0506, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaFastForward */ \ + { 0x0506, 0x07, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaFastForwardResponse */ \ + { 0x0506, 0x08, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaSkipForward */ \ + { 0x0506, 0x08, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaSkipForwardResponse */ \ + { 0x0506, 0x09, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaSkipBackward */ \ + { 0x0506, 0x09, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaSkipBackwardResponse */ \ + { 0x0506, 0x0A, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaSkipSeek */ \ + { 0x0506, 0x0A, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaSkipSeekResponse */ \ + \ + /* Endpoint: 1, Cluster: Media Input (client) */ \ + { 0x0507, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* SelectInput */ \ + { 0x0507, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ShowInputStatus */ \ + { 0x0507, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* HideInputStatus */ \ + { 0x0507, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* RenameInput */ \ + \ /* Endpoint: 1, Cluster: Low Power (client) */ \ { 0x0508, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Sleep */ \ \ + /* Endpoint: 1, Cluster: Keypad Input (client) */ \ + { 0x0509, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* SendKey */ \ + { 0x0509, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* SendKeyResponse */ \ + \ + /* Endpoint: 1, Cluster: Content Launch (client) */ \ + { 0x050A, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* LaunchContent */ \ + { 0x050A, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* LaunchContentResponse */ \ + { 0x050A, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* LaunchURL */ \ + { 0x050A, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* LaunchURLResponse */ \ + \ + /* Endpoint: 1, Cluster: Audio Output (client) */ \ + { 0x050B, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* SelectOutput */ \ + { 0x050B, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* RenameOutput */ \ + \ + /* Endpoint: 1, Cluster: Application Launcher (client) */ \ + { 0x050C, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* LaunchApp */ \ + { 0x050C, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* LaunchAppResponse */ \ + \ + /* Endpoint: 1, Cluster: Account Login (client) */ \ + { 0x050E, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* GetSetupPIN */ \ + { 0x050E, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* GetSetupPINResponse */ \ + { 0x050E, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Login */ \ + \ /* Endpoint: 1, Cluster: Binding (client) */ \ { 0xF000, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Bind */ \ { 0xF000, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Unbind */ \ diff --git a/examples/chip-tool/gen/enums.h b/examples/chip-tool/gen/enums.h index f006d55171bec8..c14422f16eb01d 100644 --- a/examples/chip-tool/gen/enums.h +++ b/examples/chip-tool/gen/enums.h @@ -462,6 +462,29 @@ typedef enum EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT3 = 15, } EmberAfCommodityType; +// Enum for ContentLaunchMetricType +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PIXELS = 0, + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PERCENTAGE = 1, +} EmberAfContentLaunchMetricType; + +// Enum for ContentLaunchParameterEnum +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_ACTOR = 0, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHANNEL = 1, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHARACTER = 2, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_EVENT = 3, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_FRANCHISE = 4, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_GENRE = 5, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_LEAGUE = 6, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_POPULARITY = 7, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORT = 8, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORTS_TEAM = 9, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_VIDEO = 10, +} EmberAfContentLaunchParameterEnum; + // Enum for ContentLaunchStatus typedef enum { @@ -470,21 +493,12 @@ typedef enum EMBER_ZCL_CONTENT_LAUNCH_STATUS_AUTH_FAILED = 2, } EmberAfContentLaunchStatus; -// Enum for ContentLaunchType +// Enum for ContentLaunchStreamingType typedef enum { - EMBER_ZCL_CONTENT_LAUNCH_TYPE_ACTOR = 0, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHANNEL = 1, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHARACTER = 2, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_EVENT = 3, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_FRANCHISE = 4, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_GENRE = 5, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_LEAGUE = 6, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_POPULARITY = 7, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORT = 8, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORTS_TEAM = 9, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_VIDEO = 10, -} EmberAfContentLaunchType; + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_DASH = 0, + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_HLS = 1, +} EmberAfContentLaunchStreamingType; // Enum for CppEventResponseCppAuth typedef enum @@ -1617,6 +1631,97 @@ typedef enum EMBER_ZCL_KEY_INDEX_CERTIFICATION = 15, } EmberAfKeyIndex; +// Enum for KeypadInputCecKeyCode +typedef enum +{ + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT = 0, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_UP = 1, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOWN = 2, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT = 3, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT = 4, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_UP = 5, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_DOWN = 6, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_UP = 7, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_DOWN = 8, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ROOT_MENU = 9, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SETUP_MENU = 10, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CONTENTS_MENU = 11, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAVORITE_MENU = 12, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EXIT = 13, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_TOP_MENU = 16, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_CONTEXT_SENSITIVE_MENU = 17, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER_ENTRY_MODE = 29, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER11 = 30, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER12 = 31, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER0_OR_NUMBER10 = 32, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS1 = 33, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS2 = 34, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS3 = 35, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS4 = 36, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS5 = 37, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS6 = 38, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS7 = 39, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS8 = 40, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS9 = 41, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOT = 42, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ENTER = 43, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CLEAR = 44, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NEXT_FAVORITE = 47, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_UP = 48, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_DOWN = 49, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PREVIOUS_CHANNEL = 50, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SOUND_SELECT = 51, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INPUT_SELECT = 52, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DISPLAY_INFORMATION = 53, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_HELP = 54, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_UP = 55, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_DOWN = 56, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER = 64, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_UP = 65, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_DOWN = 66, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE = 67, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY = 68, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP = 69, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE = 70, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD = 71, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_REWIND = 72, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAST_FORWARD = 73, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EJECT = 74, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FORWARD = 75, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_BACKWARD = 76, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_RECORD = 77, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD = 78, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESERVED = 79, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ANGLE = 80, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SUB_PICTURE = 81, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VIDEO_ON_DEMAND = 82, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ELECTRONIC_PROGRAM_GUIDE = 83, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TIMER_PROGRAMMING = 84, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INITIAL_CONFIGURATION = 85, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_BROADCAST_TYPE = 86, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_SOUND_PRESENTATION = 87, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY_FUNCTION = 96, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_PLAY_FUNCTION = 97, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD_FUNCTION = 98, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD_FUNCTION = 99, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_FUNCTION = 100, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE_FUNCTION = 101, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESTORE_VOLUME_FUNCTION = 102, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TUNE_FUNCTION = 103, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_MEDIA_FUNCTION = 104, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AV_INPUT_FUNCTION = 105, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AUDIO_INPUT_FUNCTION = 106, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_TOGGLE_FUNCTION = 107, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_OFF_FUNCTION = 108, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_ON_FUNCTION = 109, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F1_BLUE = 113, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F2_RED = 114, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F3_GREEN = 115, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F4_YELLOW = 116, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F5 = 117, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DATA = 118, +} EmberAfKeypadInputCecKeyCode; + // Enum for KeypadInputStatus typedef enum { @@ -1698,6 +1803,26 @@ typedef enum EMBER_ZCL_MEDIA_INPUT_TYPE_OTHER = 11, } EmberAfMediaInputType; +// Enum for MediaPlaybackState +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PLAYING = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PAUSED = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_NOT_PLAYING = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_BUFFERING = 3, +} EmberAfMediaPlaybackState; + +// Enum for MediaPlaybackStatus +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SUCCESS = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_INVALID_STATE_FOR_COMMAND = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ALLOWED = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ACTIVE = 3, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SPEED_OUT_OF_RANGE = 4, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SEEK_OUT_OF_RANGE = 5, +} EmberAfMediaPlaybackStatus; + // Enum for MessagingControlConfirmation typedef enum { diff --git a/examples/chip-tool/gen/gen_config.h b/examples/chip-tool/gen/gen_config.h index e0854ebb074057..8c614ed0219acd 100644 --- a/examples/chip-tool/gen/gen_config.h +++ b/examples/chip-tool/gen/gen_config.h @@ -29,34 +29,56 @@ #define EMBER_APS_UNICAST_MESSAGE_COUNT 10 /**** Cluster endpoint counts ****/ +#define EMBER_AF_ACCOUNT_LOGIN_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_APPLICATION_BASIC_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_APPLICATION_LAUNCHER_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_AUDIO_OUTPUT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_BARRIER_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_BASIC_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_COLOR_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_CONTENT_LAUNCH_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_DESCRIPTOR_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_DOOR_LOCK_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_GENERAL_COMMISSIONING_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_GROUP_KEY_MANAGEMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_GROUPS_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_IDENTIFY_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_KEYPAD_INPUT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_LEVEL_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_LOW_POWER_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_MEDIA_INPUT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_MEDIA_PLAYBACK_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_NETWORK_COMMISSIONING_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_ON_OFF_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_OPERATIONAL_CREDENTIALS_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_PUMP_CONFIG_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_SCENES_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_SWITCH_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_TV_CHANNEL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_TARGET_NAVIGATOR_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_TEMP_MEASUREMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_THERMOSTAT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_WAKE_ON_LAN_CLUSTER_CLIENT_ENDPOINT_COUNT (1) /**** Cluster Plugins ****/ +// Use this macro to check if the client side of the Account Login cluster is included +#define ZCL_USING_ACCOUNT_LOGIN_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_ACCOUNT_LOGIN_CLIENT + // Use this macro to check if the client side of the Application Basic cluster is included #define ZCL_USING_APPLICATION_BASIC_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_APPLICATION_BASIC_CLIENT +// Use this macro to check if the client side of the Application Launcher cluster is included +#define ZCL_USING_APPLICATION_LAUNCHER_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_APPLICATION_LAUNCHER_CLIENT + +// Use this macro to check if the client side of the Audio Output cluster is included +#define ZCL_USING_AUDIO_OUTPUT_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_AUDIO_OUTPUT_CLIENT + // Use this macro to check if the client side of the Barrier Control cluster is included #define ZCL_USING_BARRIER_CONTROL_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_BARRIER_CONTROL_CLIENT @@ -73,6 +95,10 @@ #define ZCL_USING_COLOR_CONTROL_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_COLOR_CONTROL_CLIENT +// Use this macro to check if the client side of the Content Launch cluster is included +#define ZCL_USING_CONTENT_LAUNCH_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_CONTENT_LAUNCH_CLIENT + // Use this macro to check if the client side of the Descriptor cluster is included #define ZCL_USING_DESCRIPTOR_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_DESCRIPTOR_CLIENT @@ -97,6 +123,10 @@ #define ZCL_USING_IDENTIFY_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_IDENTIFY_CLIENT +// Use this macro to check if the client side of the Keypad Input cluster is included +#define ZCL_USING_KEYPAD_INPUT_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_KEYPAD_INPUT_CLIENT + // Use this macro to check if the client side of the Level Control cluster is included #define ZCL_USING_LEVEL_CONTROL_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_LEVEL_CONTROL_CLIENT @@ -105,6 +135,14 @@ #define ZCL_USING_LOW_POWER_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_LOW_POWER_CLIENT +// Use this macro to check if the client side of the Media Input cluster is included +#define ZCL_USING_MEDIA_INPUT_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_MEDIA_INPUT_CLIENT + +// Use this macro to check if the client side of the Media Playback cluster is included +#define ZCL_USING_MEDIA_PLAYBACK_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_MEDIA_PLAYBACK_CLIENT + // Use this macro to check if the client side of the Network Commissioning cluster is included #define ZCL_USING_NETWORK_COMMISSIONING_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_NETWORK_COMMISSIONING_CLIENT @@ -129,6 +167,14 @@ #define ZCL_USING_SWITCH_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_SWITCH_CLIENT +// Use this macro to check if the client side of the TV Channel cluster is included +#define ZCL_USING_TV_CHANNEL_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_TV_CHANNEL_CLIENT + +// Use this macro to check if the client side of the Target Navigator cluster is included +#define ZCL_USING_TARGET_NAVIGATOR_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_TARGET_NAVIGATOR_CLIENT + // Use this macro to check if the client side of the Temperature Measurement cluster is included #define ZCL_USING_TEMP_MEASUREMENT_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_TEMPERATURE_MEASUREMENT_CLIENT @@ -136,3 +182,7 @@ // Use this macro to check if the client side of the Thermostat cluster is included #define ZCL_USING_THERMOSTAT_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_THERMOSTAT_CLIENT + +// Use this macro to check if the client side of the Wake on LAN cluster is included +#define ZCL_USING_WAKE_ON_LAN_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_WAKE_ON_LAN_CLIENT diff --git a/examples/lighting-app/lighting-common/gen/af-structs.h b/examples/lighting-app/lighting-common/gen/af-structs.h index b19ca54657a27a..16a5ef656d51ef 100644 --- a/examples/lighting-app/lighting-common/gen/af-structs.h +++ b/examples/lighting-app/lighting-common/gen/af-structs.h @@ -34,9 +34,9 @@ typedef struct _ApplicationLauncherApp // Struct for AudioOutputInfo typedef struct _AudioOutputInfo { - uint8_t Index; - uint8_t OutputType; - uint8_t * Name; + uint8_t index; + uint8_t outputType; + uint8_t * name; } EmberAfAudioOutputInfo; // Struct for BasicCommissioningInfoType @@ -100,17 +100,44 @@ typedef struct _ConfigureReportingStatusRecord // Struct for ContentLaunchAdditionalInfo typedef struct _ContentLaunchAdditionalInfo { - uint8_t * Name; - uint8_t * Value; + uint8_t * name; + uint8_t * value; } EmberAfContentLaunchAdditionalInfo; -// Struct for ContentLaunchSearch -typedef struct _ContentLaunchSearch +// Struct for ContentLaunchBrandingInformation +typedef struct _ContentLaunchBrandingInformation +{ + uint8_t * providerName; + uint8_t background; + uint8_t logo; + uint8_t progressBar; + uint8_t splash; + uint8_t waterMark; +} EmberAfContentLaunchBrandingInformation; + +// Struct for ContentLaunchDimension +typedef struct _ContentLaunchDimension +{ + uint8_t * width; + uint8_t * height; + uint8_t metric; +} EmberAfContentLaunchDimension; + +// Struct for ContentLaunchParamater +typedef struct _ContentLaunchParamater { - uint8_t EntitiesList; - uint8_t * searchWindowStart; - uint8_t * searchWindowEnd; -} EmberAfContentLaunchSearch; + uint8_t Type; + uint8_t * Value; + /* TYPE WARNING: array array defaults to */ uint8_t * ExternalIDList; +} EmberAfContentLaunchParamater; + +// Struct for ContentLaunchStyleInformation +typedef struct _ContentLaunchStyleInformation +{ + uint8_t * imageUrl; + uint8_t * color; + uint8_t size; +} EmberAfContentLaunchStyleInformation; // Struct for DebtPayload typedef struct _DebtPayload @@ -253,12 +280,19 @@ typedef uint8_t EmberAfIdentity; // Struct for MediaInputInfo typedef struct _MediaInputInfo { - uint8_t Index; - uint8_t InputType; - uint8_t * Name; - uint8_t * Description; + uint8_t index; + uint8_t inputType; + uint8_t * name; + uint8_t * description; } EmberAfMediaInputInfo; +// Struct for MediaPlaybackPosition +typedef struct _MediaPlaybackPosition +{ + uint64_t updatedAt; + uint64_t position; +} EmberAfMediaPlaybackPosition; + // Struct for NavigateTargetTargetInfo typedef struct _NavigateTargetTargetInfo { @@ -485,20 +519,20 @@ typedef struct _TransferredPhase // Struct for TvChannelInfo typedef struct _TvChannelInfo { - uint16_t MajorNumber; - uint16_t MinorNumber; - uint8_t * Name; - uint8_t * CallSign; - uint8_t * AffiliateCallSign; + uint16_t majorNumber; + uint16_t minorNumber; + uint8_t * name; + uint8_t * callSign; + uint8_t * affiliateCallSign; } EmberAfTvChannelInfo; // Struct for TvChannelLineupInfo typedef struct _TvChannelLineupInfo { - uint8_t * OperatorName; - uint8_t * LineupName; - uint8_t * PostalCode; - uint8_t LineupInfoType; + uint8_t * operatorName; + uint8_t * lineupName; + uint8_t * postalCode; + uint8_t lineupInfoType; } EmberAfTvChannelLineupInfo; // Struct for WiFiInterfaceScanResult diff --git a/examples/lighting-app/lighting-common/gen/attribute-id.h b/examples/lighting-app/lighting-common/gen/attribute-id.h index 6c224f5faf016e..8e7aa393464caf 100644 --- a/examples/lighting-app/lighting-common/gen/attribute-id.h +++ b/examples/lighting-app/lighting-common/gen/attribute-id.h @@ -1167,7 +1167,14 @@ // Client attributes // Server attributes -#define ZCL_CURRENT_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_START_TIME_ATTRIBUTE_ID (0x0001) +#define ZCL_MEDIA_PLAYBACK_DURATION_ATTRIBUTE_ID (0x0002) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_UPDATED_AT_ATTRIBUTE_ID (0x0003) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_ATTRIBUTE_ID (0x0004) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SPEED_ATTRIBUTE_ID (0x0005) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_END_ATTRIBUTE_ID (0x0006) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_START_ATTRIBUTE_ID (0x0007) // Attribute ids for cluster: Media Input @@ -1194,6 +1201,8 @@ // Client attributes // Server attributes +#define ZCL_CONTENT_LAUNCHER_ACCEPTS_HEADER_ATTRIBUTE_ID (0x0000) +#define ZCL_CONTENT_LAUNCHER_SUPPORTED_STREAMING_TYPES_ATTRIBUTE_ID (0x0001) // Attribute ids for cluster: Audio Output @@ -1209,7 +1218,8 @@ // Server attributes #define ZCL_APPLICATION_LAUNCHER_LIST_ATTRIBUTE_ID (0x0000) -#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_CATALOG_VENDOR_ID_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_APPLICATION_ID_ATTRIBUTE_ID (0x0002) // Attribute ids for cluster: Application Basic diff --git a/examples/lighting-app/lighting-common/gen/client-command-macro.h b/examples/lighting-app/lighting-common/gen/client-command-macro.h index c976129992f7e6..1cfc06d80ce7c2 100644 --- a/examples/lighting-app/lighting-common/gen/client-command-macro.h +++ b/examples/lighting-app/lighting-common/gen/client-command-macro.h @@ -3361,95 +3361,126 @@ \ ZCL_NAVIGATE_TARGET_COMMAND_ID, "uuuu", target, status, data, data); -/** @brief Command description for PlayRequest +/** @brief Command description for MediaPlay * - * Command: PlayRequest + * Command: MediaPlay + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPlayRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPlay(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_PLAY_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PLAY_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PauseRequest +/** @brief Command description for MediaPause * - * Command: PauseRequest + * Command: MediaPause + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPauseRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPause(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PAUSE_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PAUSE_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StopRequest +/** @brief Command description for MediaStop * - * Command: StopRequest + * Command: MediaStop + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStopRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStop(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_STOP_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_STOP_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StartOverRequest +/** @brief Command description for MediaStartOver * - * Command: StartOverRequest + * Command: MediaStartOver + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStartOverRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStartOver(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_START_OVER_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_START_OVER_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PreviousRequest +/** @brief Command description for MediaPrevious * - * Command: PreviousRequest + * Command: MediaPrevious + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPreviousRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPrevious(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PREVIOUS_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PREVIOUS_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for NextRequest +/** @brief Command description for MediaNext * - * Command: NextRequest + * Command: MediaNext + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterNextRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaNext(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_NEXT_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_NEXT_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for RewindRequest +/** @brief Command description for MediaRewind * - * Command: RewindRequest + * Command: MediaRewind + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterRewindRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaRewind(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_REWIND_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_REWIND_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for FastForwardRequest +/** @brief Command description for MediaFastForward * - * Command: FastForwardRequest + * Command: MediaFastForward + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterFastForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaFastForward(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_FAST_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_FAST_FORWARD_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for SkipForwardRequest +/** @brief Command description for MediaSkipForward * - * Command: SkipForwardRequest + * Command: MediaSkipForward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipForward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); -/** @brief Command description for SkipBackwardRequest +/** @brief Command description for MediaSkipBackward * - * Command: SkipBackwardRequest + * Command: MediaSkipBackward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipBackwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipBackward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); + +/** @brief Command description for MediaSkipSeek + * + * Command: MediaSkipSeek + * @param position INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus + */ +#define emberAfFillCommandMedia \ + PlaybackClusterMediaSkipSeek(position, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ + \ + ZCL_MEDIA_SKIP_SEEK_COMMAND_ID, "uu", position, mediaPlaybackStatus); /** @brief Command description for SelectInput * @@ -3502,7 +3533,7 @@ /** @brief Command description for SendKey * * Command: SendKey - * @param keyCode INT8U + * @param keyCode KeypadInputCecKeyCode * @param status KeypadInputStatus */ #define emberAfFillCommandKeypad \ @@ -3513,23 +3544,30 @@ /** @brief Command description for LaunchContent * * Command: LaunchContent + * @param autoPlay BOOLEAN + * @param data CHAR_STRING + * @param data CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchContent(contentLaunchStatus) \ + LaunchClusterLaunchContent(autoPlay, data, data, contentLaunchStatus) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_CONTENT_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_CONTENT_COMMAND_ID, "uuuu", autoPlay, data, data, contentLaunchStatus); /** @brief Command description for LaunchURL * * Command: LaunchURL + * @param contentURL CHAR_STRING + * @param data CHAR_STRING + * @param displayString CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchURL(contentLaunchStatus) emberAfFillExternalBuffer(mask, \ + LaunchClusterLaunchURL(contentURL, data, displayString, contentLaunchStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_URL_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_URL_COMMAND_ID, "uuuu", contentURL, data, displayString, contentLaunchStatus); /** @brief Command description for SelectOutput * @@ -3555,17 +3593,17 @@ /** @brief Command description for LaunchApp * * Command: LaunchApp + * @param data CHAR_STRING + * @param status ApplicationLauncherStatus * @param application ApplicationLauncherApp [] * @param applicationLen int - * @param status ApplicationLauncherStatus - * @param data CHAR_STRING * @param data CHAR_STRING */ #define emberAfFillCommandApplication \ - LauncherClusterLaunchApp(application, applicationLen, status, data, data) \ + LauncherClusterLaunchApp(data, status, application, applicationLen, data) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_APP_COMMAND_ID, "buuu", application, applicationLen, status, data, data); + ZCL_LAUNCH_APP_COMMAND_ID, "uubu", data, status, application, applicationLen, data); /** @brief Command description for GetSetupPIN * diff --git a/examples/lighting-app/lighting-common/gen/command-id.h b/examples/lighting-app/lighting-common/gen/command-id.h index e3c8f93cadb923..25ee08826f030c 100644 --- a/examples/lighting-app/lighting-common/gen/command-id.h +++ b/examples/lighting-app/lighting-common/gen/command-id.h @@ -415,17 +415,28 @@ #define ZCL_NAVIGATE_TARGET_RESPONSE_COMMAND_ID (0x00) // Commands for cluster: Media Playback -#define ZCL_PLAY_REQUEST_COMMAND_ID (0x00) -#define ZCL_PLAYBACK_COMMAND_ID (0x00) -#define ZCL_PAUSE_REQUEST_COMMAND_ID (0x01) -#define ZCL_STOP_REQUEST_COMMAND_ID (0x02) -#define ZCL_START_OVER_REQUEST_COMMAND_ID (0x03) -#define ZCL_PREVIOUS_REQUEST_COMMAND_ID (0x04) -#define ZCL_NEXT_REQUEST_COMMAND_ID (0x05) -#define ZCL_REWIND_REQUEST_COMMAND_ID (0x06) -#define ZCL_FAST_FORWARD_REQUEST_COMMAND_ID (0x07) -#define ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID (0x08) -#define ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID (0x09) +#define ZCL_MEDIA_PLAY_COMMAND_ID (0x00) +#define ZCL_MEDIA_PLAY_RESPONSE_COMMAND_ID (0x00) +#define ZCL_MEDIA_PAUSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_PAUSE_RESPONSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_STOP_COMMAND_ID (0x02) +#define ZCL_MEDIA_STOP_RESPONSE_COMMAND_ID (0x02) +#define ZCL_MEDIA_START_OVER_COMMAND_ID (0x03) +#define ZCL_MEDIA_START_OVER_RESPONSE_COMMAND_ID (0x03) +#define ZCL_MEDIA_PREVIOUS_COMMAND_ID (0x04) +#define ZCL_MEDIA_PREVIOUS_RESPONSE_COMMAND_ID (0x04) +#define ZCL_MEDIA_NEXT_COMMAND_ID (0x05) +#define ZCL_MEDIA_NEXT_RESPONSE_COMMAND_ID (0x05) +#define ZCL_MEDIA_REWIND_COMMAND_ID (0x06) +#define ZCL_MEDIA_REWIND_RESPONSE_COMMAND_ID (0x06) +#define ZCL_MEDIA_FAST_FORWARD_COMMAND_ID (0x07) +#define ZCL_MEDIA_FAST_FORWARD_RESPONSE_COMMAND_ID (0x07) +#define ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_BACKWARD_RESPONSE_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_SEEK_COMMAND_ID (0x0A) +#define ZCL_MEDIA_SKIP_SEEK_RESPONSE_COMMAND_ID (0x0A) // Commands for cluster: Media Input #define ZCL_SELECT_INPUT_COMMAND_ID (0x00) diff --git a/examples/lighting-app/lighting-common/gen/enums.h b/examples/lighting-app/lighting-common/gen/enums.h index f006d55171bec8..c14422f16eb01d 100644 --- a/examples/lighting-app/lighting-common/gen/enums.h +++ b/examples/lighting-app/lighting-common/gen/enums.h @@ -462,6 +462,29 @@ typedef enum EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT3 = 15, } EmberAfCommodityType; +// Enum for ContentLaunchMetricType +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PIXELS = 0, + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PERCENTAGE = 1, +} EmberAfContentLaunchMetricType; + +// Enum for ContentLaunchParameterEnum +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_ACTOR = 0, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHANNEL = 1, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHARACTER = 2, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_EVENT = 3, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_FRANCHISE = 4, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_GENRE = 5, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_LEAGUE = 6, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_POPULARITY = 7, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORT = 8, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORTS_TEAM = 9, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_VIDEO = 10, +} EmberAfContentLaunchParameterEnum; + // Enum for ContentLaunchStatus typedef enum { @@ -470,21 +493,12 @@ typedef enum EMBER_ZCL_CONTENT_LAUNCH_STATUS_AUTH_FAILED = 2, } EmberAfContentLaunchStatus; -// Enum for ContentLaunchType +// Enum for ContentLaunchStreamingType typedef enum { - EMBER_ZCL_CONTENT_LAUNCH_TYPE_ACTOR = 0, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHANNEL = 1, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHARACTER = 2, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_EVENT = 3, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_FRANCHISE = 4, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_GENRE = 5, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_LEAGUE = 6, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_POPULARITY = 7, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORT = 8, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORTS_TEAM = 9, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_VIDEO = 10, -} EmberAfContentLaunchType; + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_DASH = 0, + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_HLS = 1, +} EmberAfContentLaunchStreamingType; // Enum for CppEventResponseCppAuth typedef enum @@ -1617,6 +1631,97 @@ typedef enum EMBER_ZCL_KEY_INDEX_CERTIFICATION = 15, } EmberAfKeyIndex; +// Enum for KeypadInputCecKeyCode +typedef enum +{ + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT = 0, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_UP = 1, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOWN = 2, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT = 3, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT = 4, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_UP = 5, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_DOWN = 6, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_UP = 7, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_DOWN = 8, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ROOT_MENU = 9, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SETUP_MENU = 10, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CONTENTS_MENU = 11, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAVORITE_MENU = 12, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EXIT = 13, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_TOP_MENU = 16, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_CONTEXT_SENSITIVE_MENU = 17, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER_ENTRY_MODE = 29, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER11 = 30, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER12 = 31, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER0_OR_NUMBER10 = 32, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS1 = 33, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS2 = 34, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS3 = 35, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS4 = 36, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS5 = 37, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS6 = 38, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS7 = 39, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS8 = 40, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS9 = 41, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOT = 42, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ENTER = 43, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CLEAR = 44, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NEXT_FAVORITE = 47, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_UP = 48, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_DOWN = 49, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PREVIOUS_CHANNEL = 50, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SOUND_SELECT = 51, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INPUT_SELECT = 52, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DISPLAY_INFORMATION = 53, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_HELP = 54, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_UP = 55, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_DOWN = 56, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER = 64, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_UP = 65, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_DOWN = 66, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE = 67, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY = 68, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP = 69, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE = 70, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD = 71, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_REWIND = 72, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAST_FORWARD = 73, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EJECT = 74, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FORWARD = 75, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_BACKWARD = 76, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_RECORD = 77, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD = 78, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESERVED = 79, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ANGLE = 80, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SUB_PICTURE = 81, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VIDEO_ON_DEMAND = 82, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ELECTRONIC_PROGRAM_GUIDE = 83, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TIMER_PROGRAMMING = 84, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INITIAL_CONFIGURATION = 85, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_BROADCAST_TYPE = 86, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_SOUND_PRESENTATION = 87, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY_FUNCTION = 96, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_PLAY_FUNCTION = 97, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD_FUNCTION = 98, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD_FUNCTION = 99, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_FUNCTION = 100, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE_FUNCTION = 101, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESTORE_VOLUME_FUNCTION = 102, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TUNE_FUNCTION = 103, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_MEDIA_FUNCTION = 104, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AV_INPUT_FUNCTION = 105, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AUDIO_INPUT_FUNCTION = 106, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_TOGGLE_FUNCTION = 107, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_OFF_FUNCTION = 108, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_ON_FUNCTION = 109, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F1_BLUE = 113, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F2_RED = 114, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F3_GREEN = 115, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F4_YELLOW = 116, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F5 = 117, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DATA = 118, +} EmberAfKeypadInputCecKeyCode; + // Enum for KeypadInputStatus typedef enum { @@ -1698,6 +1803,26 @@ typedef enum EMBER_ZCL_MEDIA_INPUT_TYPE_OTHER = 11, } EmberAfMediaInputType; +// Enum for MediaPlaybackState +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PLAYING = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PAUSED = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_NOT_PLAYING = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_BUFFERING = 3, +} EmberAfMediaPlaybackState; + +// Enum for MediaPlaybackStatus +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SUCCESS = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_INVALID_STATE_FOR_COMMAND = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ALLOWED = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ACTIVE = 3, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SPEED_OUT_OF_RANGE = 4, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SEEK_OUT_OF_RANGE = 5, +} EmberAfMediaPlaybackStatus; + // Enum for MessagingControlConfirmation typedef enum { diff --git a/examples/lock-app/lock-common/gen/af-structs.h b/examples/lock-app/lock-common/gen/af-structs.h index b19ca54657a27a..16a5ef656d51ef 100644 --- a/examples/lock-app/lock-common/gen/af-structs.h +++ b/examples/lock-app/lock-common/gen/af-structs.h @@ -34,9 +34,9 @@ typedef struct _ApplicationLauncherApp // Struct for AudioOutputInfo typedef struct _AudioOutputInfo { - uint8_t Index; - uint8_t OutputType; - uint8_t * Name; + uint8_t index; + uint8_t outputType; + uint8_t * name; } EmberAfAudioOutputInfo; // Struct for BasicCommissioningInfoType @@ -100,17 +100,44 @@ typedef struct _ConfigureReportingStatusRecord // Struct for ContentLaunchAdditionalInfo typedef struct _ContentLaunchAdditionalInfo { - uint8_t * Name; - uint8_t * Value; + uint8_t * name; + uint8_t * value; } EmberAfContentLaunchAdditionalInfo; -// Struct for ContentLaunchSearch -typedef struct _ContentLaunchSearch +// Struct for ContentLaunchBrandingInformation +typedef struct _ContentLaunchBrandingInformation +{ + uint8_t * providerName; + uint8_t background; + uint8_t logo; + uint8_t progressBar; + uint8_t splash; + uint8_t waterMark; +} EmberAfContentLaunchBrandingInformation; + +// Struct for ContentLaunchDimension +typedef struct _ContentLaunchDimension +{ + uint8_t * width; + uint8_t * height; + uint8_t metric; +} EmberAfContentLaunchDimension; + +// Struct for ContentLaunchParamater +typedef struct _ContentLaunchParamater { - uint8_t EntitiesList; - uint8_t * searchWindowStart; - uint8_t * searchWindowEnd; -} EmberAfContentLaunchSearch; + uint8_t Type; + uint8_t * Value; + /* TYPE WARNING: array array defaults to */ uint8_t * ExternalIDList; +} EmberAfContentLaunchParamater; + +// Struct for ContentLaunchStyleInformation +typedef struct _ContentLaunchStyleInformation +{ + uint8_t * imageUrl; + uint8_t * color; + uint8_t size; +} EmberAfContentLaunchStyleInformation; // Struct for DebtPayload typedef struct _DebtPayload @@ -253,12 +280,19 @@ typedef uint8_t EmberAfIdentity; // Struct for MediaInputInfo typedef struct _MediaInputInfo { - uint8_t Index; - uint8_t InputType; - uint8_t * Name; - uint8_t * Description; + uint8_t index; + uint8_t inputType; + uint8_t * name; + uint8_t * description; } EmberAfMediaInputInfo; +// Struct for MediaPlaybackPosition +typedef struct _MediaPlaybackPosition +{ + uint64_t updatedAt; + uint64_t position; +} EmberAfMediaPlaybackPosition; + // Struct for NavigateTargetTargetInfo typedef struct _NavigateTargetTargetInfo { @@ -485,20 +519,20 @@ typedef struct _TransferredPhase // Struct for TvChannelInfo typedef struct _TvChannelInfo { - uint16_t MajorNumber; - uint16_t MinorNumber; - uint8_t * Name; - uint8_t * CallSign; - uint8_t * AffiliateCallSign; + uint16_t majorNumber; + uint16_t minorNumber; + uint8_t * name; + uint8_t * callSign; + uint8_t * affiliateCallSign; } EmberAfTvChannelInfo; // Struct for TvChannelLineupInfo typedef struct _TvChannelLineupInfo { - uint8_t * OperatorName; - uint8_t * LineupName; - uint8_t * PostalCode; - uint8_t LineupInfoType; + uint8_t * operatorName; + uint8_t * lineupName; + uint8_t * postalCode; + uint8_t lineupInfoType; } EmberAfTvChannelLineupInfo; // Struct for WiFiInterfaceScanResult diff --git a/examples/lock-app/lock-common/gen/attribute-id.h b/examples/lock-app/lock-common/gen/attribute-id.h index 6c224f5faf016e..8e7aa393464caf 100644 --- a/examples/lock-app/lock-common/gen/attribute-id.h +++ b/examples/lock-app/lock-common/gen/attribute-id.h @@ -1167,7 +1167,14 @@ // Client attributes // Server attributes -#define ZCL_CURRENT_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_START_TIME_ATTRIBUTE_ID (0x0001) +#define ZCL_MEDIA_PLAYBACK_DURATION_ATTRIBUTE_ID (0x0002) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_UPDATED_AT_ATTRIBUTE_ID (0x0003) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_ATTRIBUTE_ID (0x0004) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SPEED_ATTRIBUTE_ID (0x0005) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_END_ATTRIBUTE_ID (0x0006) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_START_ATTRIBUTE_ID (0x0007) // Attribute ids for cluster: Media Input @@ -1194,6 +1201,8 @@ // Client attributes // Server attributes +#define ZCL_CONTENT_LAUNCHER_ACCEPTS_HEADER_ATTRIBUTE_ID (0x0000) +#define ZCL_CONTENT_LAUNCHER_SUPPORTED_STREAMING_TYPES_ATTRIBUTE_ID (0x0001) // Attribute ids for cluster: Audio Output @@ -1209,7 +1218,8 @@ // Server attributes #define ZCL_APPLICATION_LAUNCHER_LIST_ATTRIBUTE_ID (0x0000) -#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_CATALOG_VENDOR_ID_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_APPLICATION_ID_ATTRIBUTE_ID (0x0002) // Attribute ids for cluster: Application Basic diff --git a/examples/lock-app/lock-common/gen/client-command-macro.h b/examples/lock-app/lock-common/gen/client-command-macro.h index c976129992f7e6..1cfc06d80ce7c2 100644 --- a/examples/lock-app/lock-common/gen/client-command-macro.h +++ b/examples/lock-app/lock-common/gen/client-command-macro.h @@ -3361,95 +3361,126 @@ \ ZCL_NAVIGATE_TARGET_COMMAND_ID, "uuuu", target, status, data, data); -/** @brief Command description for PlayRequest +/** @brief Command description for MediaPlay * - * Command: PlayRequest + * Command: MediaPlay + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPlayRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPlay(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_PLAY_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PLAY_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PauseRequest +/** @brief Command description for MediaPause * - * Command: PauseRequest + * Command: MediaPause + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPauseRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPause(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PAUSE_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PAUSE_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StopRequest +/** @brief Command description for MediaStop * - * Command: StopRequest + * Command: MediaStop + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStopRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStop(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_STOP_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_STOP_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StartOverRequest +/** @brief Command description for MediaStartOver * - * Command: StartOverRequest + * Command: MediaStartOver + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStartOverRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStartOver(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_START_OVER_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_START_OVER_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PreviousRequest +/** @brief Command description for MediaPrevious * - * Command: PreviousRequest + * Command: MediaPrevious + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPreviousRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPrevious(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PREVIOUS_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PREVIOUS_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for NextRequest +/** @brief Command description for MediaNext * - * Command: NextRequest + * Command: MediaNext + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterNextRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaNext(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_NEXT_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_NEXT_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for RewindRequest +/** @brief Command description for MediaRewind * - * Command: RewindRequest + * Command: MediaRewind + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterRewindRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaRewind(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_REWIND_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_REWIND_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for FastForwardRequest +/** @brief Command description for MediaFastForward * - * Command: FastForwardRequest + * Command: MediaFastForward + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterFastForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaFastForward(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_FAST_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_FAST_FORWARD_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for SkipForwardRequest +/** @brief Command description for MediaSkipForward * - * Command: SkipForwardRequest + * Command: MediaSkipForward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipForward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); -/** @brief Command description for SkipBackwardRequest +/** @brief Command description for MediaSkipBackward * - * Command: SkipBackwardRequest + * Command: MediaSkipBackward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipBackwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipBackward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); + +/** @brief Command description for MediaSkipSeek + * + * Command: MediaSkipSeek + * @param position INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus + */ +#define emberAfFillCommandMedia \ + PlaybackClusterMediaSkipSeek(position, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ + \ + ZCL_MEDIA_SKIP_SEEK_COMMAND_ID, "uu", position, mediaPlaybackStatus); /** @brief Command description for SelectInput * @@ -3502,7 +3533,7 @@ /** @brief Command description for SendKey * * Command: SendKey - * @param keyCode INT8U + * @param keyCode KeypadInputCecKeyCode * @param status KeypadInputStatus */ #define emberAfFillCommandKeypad \ @@ -3513,23 +3544,30 @@ /** @brief Command description for LaunchContent * * Command: LaunchContent + * @param autoPlay BOOLEAN + * @param data CHAR_STRING + * @param data CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchContent(contentLaunchStatus) \ + LaunchClusterLaunchContent(autoPlay, data, data, contentLaunchStatus) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_CONTENT_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_CONTENT_COMMAND_ID, "uuuu", autoPlay, data, data, contentLaunchStatus); /** @brief Command description for LaunchURL * * Command: LaunchURL + * @param contentURL CHAR_STRING + * @param data CHAR_STRING + * @param displayString CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchURL(contentLaunchStatus) emberAfFillExternalBuffer(mask, \ + LaunchClusterLaunchURL(contentURL, data, displayString, contentLaunchStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_URL_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_URL_COMMAND_ID, "uuuu", contentURL, data, displayString, contentLaunchStatus); /** @brief Command description for SelectOutput * @@ -3555,17 +3593,17 @@ /** @brief Command description for LaunchApp * * Command: LaunchApp + * @param data CHAR_STRING + * @param status ApplicationLauncherStatus * @param application ApplicationLauncherApp [] * @param applicationLen int - * @param status ApplicationLauncherStatus - * @param data CHAR_STRING * @param data CHAR_STRING */ #define emberAfFillCommandApplication \ - LauncherClusterLaunchApp(application, applicationLen, status, data, data) \ + LauncherClusterLaunchApp(data, status, application, applicationLen, data) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_APP_COMMAND_ID, "buuu", application, applicationLen, status, data, data); + ZCL_LAUNCH_APP_COMMAND_ID, "uubu", data, status, application, applicationLen, data); /** @brief Command description for GetSetupPIN * diff --git a/examples/lock-app/lock-common/gen/command-id.h b/examples/lock-app/lock-common/gen/command-id.h index e3c8f93cadb923..25ee08826f030c 100644 --- a/examples/lock-app/lock-common/gen/command-id.h +++ b/examples/lock-app/lock-common/gen/command-id.h @@ -415,17 +415,28 @@ #define ZCL_NAVIGATE_TARGET_RESPONSE_COMMAND_ID (0x00) // Commands for cluster: Media Playback -#define ZCL_PLAY_REQUEST_COMMAND_ID (0x00) -#define ZCL_PLAYBACK_COMMAND_ID (0x00) -#define ZCL_PAUSE_REQUEST_COMMAND_ID (0x01) -#define ZCL_STOP_REQUEST_COMMAND_ID (0x02) -#define ZCL_START_OVER_REQUEST_COMMAND_ID (0x03) -#define ZCL_PREVIOUS_REQUEST_COMMAND_ID (0x04) -#define ZCL_NEXT_REQUEST_COMMAND_ID (0x05) -#define ZCL_REWIND_REQUEST_COMMAND_ID (0x06) -#define ZCL_FAST_FORWARD_REQUEST_COMMAND_ID (0x07) -#define ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID (0x08) -#define ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID (0x09) +#define ZCL_MEDIA_PLAY_COMMAND_ID (0x00) +#define ZCL_MEDIA_PLAY_RESPONSE_COMMAND_ID (0x00) +#define ZCL_MEDIA_PAUSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_PAUSE_RESPONSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_STOP_COMMAND_ID (0x02) +#define ZCL_MEDIA_STOP_RESPONSE_COMMAND_ID (0x02) +#define ZCL_MEDIA_START_OVER_COMMAND_ID (0x03) +#define ZCL_MEDIA_START_OVER_RESPONSE_COMMAND_ID (0x03) +#define ZCL_MEDIA_PREVIOUS_COMMAND_ID (0x04) +#define ZCL_MEDIA_PREVIOUS_RESPONSE_COMMAND_ID (0x04) +#define ZCL_MEDIA_NEXT_COMMAND_ID (0x05) +#define ZCL_MEDIA_NEXT_RESPONSE_COMMAND_ID (0x05) +#define ZCL_MEDIA_REWIND_COMMAND_ID (0x06) +#define ZCL_MEDIA_REWIND_RESPONSE_COMMAND_ID (0x06) +#define ZCL_MEDIA_FAST_FORWARD_COMMAND_ID (0x07) +#define ZCL_MEDIA_FAST_FORWARD_RESPONSE_COMMAND_ID (0x07) +#define ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_BACKWARD_RESPONSE_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_SEEK_COMMAND_ID (0x0A) +#define ZCL_MEDIA_SKIP_SEEK_RESPONSE_COMMAND_ID (0x0A) // Commands for cluster: Media Input #define ZCL_SELECT_INPUT_COMMAND_ID (0x00) diff --git a/examples/lock-app/lock-common/gen/enums.h b/examples/lock-app/lock-common/gen/enums.h index f006d55171bec8..c14422f16eb01d 100644 --- a/examples/lock-app/lock-common/gen/enums.h +++ b/examples/lock-app/lock-common/gen/enums.h @@ -462,6 +462,29 @@ typedef enum EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT3 = 15, } EmberAfCommodityType; +// Enum for ContentLaunchMetricType +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PIXELS = 0, + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PERCENTAGE = 1, +} EmberAfContentLaunchMetricType; + +// Enum for ContentLaunchParameterEnum +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_ACTOR = 0, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHANNEL = 1, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHARACTER = 2, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_EVENT = 3, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_FRANCHISE = 4, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_GENRE = 5, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_LEAGUE = 6, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_POPULARITY = 7, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORT = 8, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORTS_TEAM = 9, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_VIDEO = 10, +} EmberAfContentLaunchParameterEnum; + // Enum for ContentLaunchStatus typedef enum { @@ -470,21 +493,12 @@ typedef enum EMBER_ZCL_CONTENT_LAUNCH_STATUS_AUTH_FAILED = 2, } EmberAfContentLaunchStatus; -// Enum for ContentLaunchType +// Enum for ContentLaunchStreamingType typedef enum { - EMBER_ZCL_CONTENT_LAUNCH_TYPE_ACTOR = 0, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHANNEL = 1, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHARACTER = 2, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_EVENT = 3, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_FRANCHISE = 4, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_GENRE = 5, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_LEAGUE = 6, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_POPULARITY = 7, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORT = 8, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORTS_TEAM = 9, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_VIDEO = 10, -} EmberAfContentLaunchType; + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_DASH = 0, + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_HLS = 1, +} EmberAfContentLaunchStreamingType; // Enum for CppEventResponseCppAuth typedef enum @@ -1617,6 +1631,97 @@ typedef enum EMBER_ZCL_KEY_INDEX_CERTIFICATION = 15, } EmberAfKeyIndex; +// Enum for KeypadInputCecKeyCode +typedef enum +{ + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT = 0, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_UP = 1, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOWN = 2, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT = 3, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT = 4, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_UP = 5, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_DOWN = 6, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_UP = 7, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_DOWN = 8, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ROOT_MENU = 9, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SETUP_MENU = 10, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CONTENTS_MENU = 11, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAVORITE_MENU = 12, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EXIT = 13, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_TOP_MENU = 16, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_CONTEXT_SENSITIVE_MENU = 17, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER_ENTRY_MODE = 29, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER11 = 30, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER12 = 31, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER0_OR_NUMBER10 = 32, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS1 = 33, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS2 = 34, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS3 = 35, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS4 = 36, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS5 = 37, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS6 = 38, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS7 = 39, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS8 = 40, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS9 = 41, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOT = 42, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ENTER = 43, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CLEAR = 44, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NEXT_FAVORITE = 47, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_UP = 48, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_DOWN = 49, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PREVIOUS_CHANNEL = 50, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SOUND_SELECT = 51, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INPUT_SELECT = 52, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DISPLAY_INFORMATION = 53, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_HELP = 54, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_UP = 55, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_DOWN = 56, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER = 64, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_UP = 65, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_DOWN = 66, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE = 67, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY = 68, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP = 69, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE = 70, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD = 71, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_REWIND = 72, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAST_FORWARD = 73, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EJECT = 74, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FORWARD = 75, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_BACKWARD = 76, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_RECORD = 77, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD = 78, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESERVED = 79, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ANGLE = 80, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SUB_PICTURE = 81, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VIDEO_ON_DEMAND = 82, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ELECTRONIC_PROGRAM_GUIDE = 83, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TIMER_PROGRAMMING = 84, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INITIAL_CONFIGURATION = 85, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_BROADCAST_TYPE = 86, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_SOUND_PRESENTATION = 87, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY_FUNCTION = 96, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_PLAY_FUNCTION = 97, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD_FUNCTION = 98, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD_FUNCTION = 99, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_FUNCTION = 100, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE_FUNCTION = 101, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESTORE_VOLUME_FUNCTION = 102, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TUNE_FUNCTION = 103, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_MEDIA_FUNCTION = 104, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AV_INPUT_FUNCTION = 105, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AUDIO_INPUT_FUNCTION = 106, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_TOGGLE_FUNCTION = 107, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_OFF_FUNCTION = 108, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_ON_FUNCTION = 109, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F1_BLUE = 113, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F2_RED = 114, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F3_GREEN = 115, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F4_YELLOW = 116, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F5 = 117, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DATA = 118, +} EmberAfKeypadInputCecKeyCode; + // Enum for KeypadInputStatus typedef enum { @@ -1698,6 +1803,26 @@ typedef enum EMBER_ZCL_MEDIA_INPUT_TYPE_OTHER = 11, } EmberAfMediaInputType; +// Enum for MediaPlaybackState +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PLAYING = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PAUSED = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_NOT_PLAYING = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_BUFFERING = 3, +} EmberAfMediaPlaybackState; + +// Enum for MediaPlaybackStatus +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SUCCESS = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_INVALID_STATE_FOR_COMMAND = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ALLOWED = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ACTIVE = 3, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SPEED_OUT_OF_RANGE = 4, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SEEK_OUT_OF_RANGE = 5, +} EmberAfMediaPlaybackStatus; + // Enum for MessagingControlConfirmation typedef enum { diff --git a/examples/temperature-measurement-app/esp32/main/gen/af-structs.h b/examples/temperature-measurement-app/esp32/main/gen/af-structs.h index b19ca54657a27a..16a5ef656d51ef 100644 --- a/examples/temperature-measurement-app/esp32/main/gen/af-structs.h +++ b/examples/temperature-measurement-app/esp32/main/gen/af-structs.h @@ -34,9 +34,9 @@ typedef struct _ApplicationLauncherApp // Struct for AudioOutputInfo typedef struct _AudioOutputInfo { - uint8_t Index; - uint8_t OutputType; - uint8_t * Name; + uint8_t index; + uint8_t outputType; + uint8_t * name; } EmberAfAudioOutputInfo; // Struct for BasicCommissioningInfoType @@ -100,17 +100,44 @@ typedef struct _ConfigureReportingStatusRecord // Struct for ContentLaunchAdditionalInfo typedef struct _ContentLaunchAdditionalInfo { - uint8_t * Name; - uint8_t * Value; + uint8_t * name; + uint8_t * value; } EmberAfContentLaunchAdditionalInfo; -// Struct for ContentLaunchSearch -typedef struct _ContentLaunchSearch +// Struct for ContentLaunchBrandingInformation +typedef struct _ContentLaunchBrandingInformation +{ + uint8_t * providerName; + uint8_t background; + uint8_t logo; + uint8_t progressBar; + uint8_t splash; + uint8_t waterMark; +} EmberAfContentLaunchBrandingInformation; + +// Struct for ContentLaunchDimension +typedef struct _ContentLaunchDimension +{ + uint8_t * width; + uint8_t * height; + uint8_t metric; +} EmberAfContentLaunchDimension; + +// Struct for ContentLaunchParamater +typedef struct _ContentLaunchParamater { - uint8_t EntitiesList; - uint8_t * searchWindowStart; - uint8_t * searchWindowEnd; -} EmberAfContentLaunchSearch; + uint8_t Type; + uint8_t * Value; + /* TYPE WARNING: array array defaults to */ uint8_t * ExternalIDList; +} EmberAfContentLaunchParamater; + +// Struct for ContentLaunchStyleInformation +typedef struct _ContentLaunchStyleInformation +{ + uint8_t * imageUrl; + uint8_t * color; + uint8_t size; +} EmberAfContentLaunchStyleInformation; // Struct for DebtPayload typedef struct _DebtPayload @@ -253,12 +280,19 @@ typedef uint8_t EmberAfIdentity; // Struct for MediaInputInfo typedef struct _MediaInputInfo { - uint8_t Index; - uint8_t InputType; - uint8_t * Name; - uint8_t * Description; + uint8_t index; + uint8_t inputType; + uint8_t * name; + uint8_t * description; } EmberAfMediaInputInfo; +// Struct for MediaPlaybackPosition +typedef struct _MediaPlaybackPosition +{ + uint64_t updatedAt; + uint64_t position; +} EmberAfMediaPlaybackPosition; + // Struct for NavigateTargetTargetInfo typedef struct _NavigateTargetTargetInfo { @@ -485,20 +519,20 @@ typedef struct _TransferredPhase // Struct for TvChannelInfo typedef struct _TvChannelInfo { - uint16_t MajorNumber; - uint16_t MinorNumber; - uint8_t * Name; - uint8_t * CallSign; - uint8_t * AffiliateCallSign; + uint16_t majorNumber; + uint16_t minorNumber; + uint8_t * name; + uint8_t * callSign; + uint8_t * affiliateCallSign; } EmberAfTvChannelInfo; // Struct for TvChannelLineupInfo typedef struct _TvChannelLineupInfo { - uint8_t * OperatorName; - uint8_t * LineupName; - uint8_t * PostalCode; - uint8_t LineupInfoType; + uint8_t * operatorName; + uint8_t * lineupName; + uint8_t * postalCode; + uint8_t lineupInfoType; } EmberAfTvChannelLineupInfo; // Struct for WiFiInterfaceScanResult diff --git a/examples/temperature-measurement-app/esp32/main/gen/attribute-id.h b/examples/temperature-measurement-app/esp32/main/gen/attribute-id.h index 6c224f5faf016e..8e7aa393464caf 100644 --- a/examples/temperature-measurement-app/esp32/main/gen/attribute-id.h +++ b/examples/temperature-measurement-app/esp32/main/gen/attribute-id.h @@ -1167,7 +1167,14 @@ // Client attributes // Server attributes -#define ZCL_CURRENT_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_START_TIME_ATTRIBUTE_ID (0x0001) +#define ZCL_MEDIA_PLAYBACK_DURATION_ATTRIBUTE_ID (0x0002) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_UPDATED_AT_ATTRIBUTE_ID (0x0003) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_ATTRIBUTE_ID (0x0004) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SPEED_ATTRIBUTE_ID (0x0005) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_END_ATTRIBUTE_ID (0x0006) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_START_ATTRIBUTE_ID (0x0007) // Attribute ids for cluster: Media Input @@ -1194,6 +1201,8 @@ // Client attributes // Server attributes +#define ZCL_CONTENT_LAUNCHER_ACCEPTS_HEADER_ATTRIBUTE_ID (0x0000) +#define ZCL_CONTENT_LAUNCHER_SUPPORTED_STREAMING_TYPES_ATTRIBUTE_ID (0x0001) // Attribute ids for cluster: Audio Output @@ -1209,7 +1218,8 @@ // Server attributes #define ZCL_APPLICATION_LAUNCHER_LIST_ATTRIBUTE_ID (0x0000) -#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_CATALOG_VENDOR_ID_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_APPLICATION_ID_ATTRIBUTE_ID (0x0002) // Attribute ids for cluster: Application Basic diff --git a/examples/temperature-measurement-app/esp32/main/gen/client-command-macro.h b/examples/temperature-measurement-app/esp32/main/gen/client-command-macro.h index c976129992f7e6..1cfc06d80ce7c2 100644 --- a/examples/temperature-measurement-app/esp32/main/gen/client-command-macro.h +++ b/examples/temperature-measurement-app/esp32/main/gen/client-command-macro.h @@ -3361,95 +3361,126 @@ \ ZCL_NAVIGATE_TARGET_COMMAND_ID, "uuuu", target, status, data, data); -/** @brief Command description for PlayRequest +/** @brief Command description for MediaPlay * - * Command: PlayRequest + * Command: MediaPlay + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPlayRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPlay(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_PLAY_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PLAY_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PauseRequest +/** @brief Command description for MediaPause * - * Command: PauseRequest + * Command: MediaPause + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPauseRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPause(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PAUSE_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PAUSE_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StopRequest +/** @brief Command description for MediaStop * - * Command: StopRequest + * Command: MediaStop + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStopRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStop(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_STOP_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_STOP_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StartOverRequest +/** @brief Command description for MediaStartOver * - * Command: StartOverRequest + * Command: MediaStartOver + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStartOverRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStartOver(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_START_OVER_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_START_OVER_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PreviousRequest +/** @brief Command description for MediaPrevious * - * Command: PreviousRequest + * Command: MediaPrevious + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPreviousRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPrevious(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PREVIOUS_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PREVIOUS_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for NextRequest +/** @brief Command description for MediaNext * - * Command: NextRequest + * Command: MediaNext + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterNextRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaNext(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_NEXT_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_NEXT_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for RewindRequest +/** @brief Command description for MediaRewind * - * Command: RewindRequest + * Command: MediaRewind + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterRewindRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaRewind(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_REWIND_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_REWIND_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for FastForwardRequest +/** @brief Command description for MediaFastForward * - * Command: FastForwardRequest + * Command: MediaFastForward + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterFastForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaFastForward(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_FAST_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_FAST_FORWARD_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for SkipForwardRequest +/** @brief Command description for MediaSkipForward * - * Command: SkipForwardRequest + * Command: MediaSkipForward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipForward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); -/** @brief Command description for SkipBackwardRequest +/** @brief Command description for MediaSkipBackward * - * Command: SkipBackwardRequest + * Command: MediaSkipBackward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipBackwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipBackward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); + +/** @brief Command description for MediaSkipSeek + * + * Command: MediaSkipSeek + * @param position INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus + */ +#define emberAfFillCommandMedia \ + PlaybackClusterMediaSkipSeek(position, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ + \ + ZCL_MEDIA_SKIP_SEEK_COMMAND_ID, "uu", position, mediaPlaybackStatus); /** @brief Command description for SelectInput * @@ -3502,7 +3533,7 @@ /** @brief Command description for SendKey * * Command: SendKey - * @param keyCode INT8U + * @param keyCode KeypadInputCecKeyCode * @param status KeypadInputStatus */ #define emberAfFillCommandKeypad \ @@ -3513,23 +3544,30 @@ /** @brief Command description for LaunchContent * * Command: LaunchContent + * @param autoPlay BOOLEAN + * @param data CHAR_STRING + * @param data CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchContent(contentLaunchStatus) \ + LaunchClusterLaunchContent(autoPlay, data, data, contentLaunchStatus) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_CONTENT_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_CONTENT_COMMAND_ID, "uuuu", autoPlay, data, data, contentLaunchStatus); /** @brief Command description for LaunchURL * * Command: LaunchURL + * @param contentURL CHAR_STRING + * @param data CHAR_STRING + * @param displayString CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchURL(contentLaunchStatus) emberAfFillExternalBuffer(mask, \ + LaunchClusterLaunchURL(contentURL, data, displayString, contentLaunchStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_URL_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_URL_COMMAND_ID, "uuuu", contentURL, data, displayString, contentLaunchStatus); /** @brief Command description for SelectOutput * @@ -3555,17 +3593,17 @@ /** @brief Command description for LaunchApp * * Command: LaunchApp + * @param data CHAR_STRING + * @param status ApplicationLauncherStatus * @param application ApplicationLauncherApp [] * @param applicationLen int - * @param status ApplicationLauncherStatus - * @param data CHAR_STRING * @param data CHAR_STRING */ #define emberAfFillCommandApplication \ - LauncherClusterLaunchApp(application, applicationLen, status, data, data) \ + LauncherClusterLaunchApp(data, status, application, applicationLen, data) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_APP_COMMAND_ID, "buuu", application, applicationLen, status, data, data); + ZCL_LAUNCH_APP_COMMAND_ID, "uubu", data, status, application, applicationLen, data); /** @brief Command description for GetSetupPIN * diff --git a/examples/temperature-measurement-app/esp32/main/gen/command-id.h b/examples/temperature-measurement-app/esp32/main/gen/command-id.h index e3c8f93cadb923..25ee08826f030c 100644 --- a/examples/temperature-measurement-app/esp32/main/gen/command-id.h +++ b/examples/temperature-measurement-app/esp32/main/gen/command-id.h @@ -415,17 +415,28 @@ #define ZCL_NAVIGATE_TARGET_RESPONSE_COMMAND_ID (0x00) // Commands for cluster: Media Playback -#define ZCL_PLAY_REQUEST_COMMAND_ID (0x00) -#define ZCL_PLAYBACK_COMMAND_ID (0x00) -#define ZCL_PAUSE_REQUEST_COMMAND_ID (0x01) -#define ZCL_STOP_REQUEST_COMMAND_ID (0x02) -#define ZCL_START_OVER_REQUEST_COMMAND_ID (0x03) -#define ZCL_PREVIOUS_REQUEST_COMMAND_ID (0x04) -#define ZCL_NEXT_REQUEST_COMMAND_ID (0x05) -#define ZCL_REWIND_REQUEST_COMMAND_ID (0x06) -#define ZCL_FAST_FORWARD_REQUEST_COMMAND_ID (0x07) -#define ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID (0x08) -#define ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID (0x09) +#define ZCL_MEDIA_PLAY_COMMAND_ID (0x00) +#define ZCL_MEDIA_PLAY_RESPONSE_COMMAND_ID (0x00) +#define ZCL_MEDIA_PAUSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_PAUSE_RESPONSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_STOP_COMMAND_ID (0x02) +#define ZCL_MEDIA_STOP_RESPONSE_COMMAND_ID (0x02) +#define ZCL_MEDIA_START_OVER_COMMAND_ID (0x03) +#define ZCL_MEDIA_START_OVER_RESPONSE_COMMAND_ID (0x03) +#define ZCL_MEDIA_PREVIOUS_COMMAND_ID (0x04) +#define ZCL_MEDIA_PREVIOUS_RESPONSE_COMMAND_ID (0x04) +#define ZCL_MEDIA_NEXT_COMMAND_ID (0x05) +#define ZCL_MEDIA_NEXT_RESPONSE_COMMAND_ID (0x05) +#define ZCL_MEDIA_REWIND_COMMAND_ID (0x06) +#define ZCL_MEDIA_REWIND_RESPONSE_COMMAND_ID (0x06) +#define ZCL_MEDIA_FAST_FORWARD_COMMAND_ID (0x07) +#define ZCL_MEDIA_FAST_FORWARD_RESPONSE_COMMAND_ID (0x07) +#define ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_BACKWARD_RESPONSE_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_SEEK_COMMAND_ID (0x0A) +#define ZCL_MEDIA_SKIP_SEEK_RESPONSE_COMMAND_ID (0x0A) // Commands for cluster: Media Input #define ZCL_SELECT_INPUT_COMMAND_ID (0x00) diff --git a/examples/temperature-measurement-app/esp32/main/gen/enums.h b/examples/temperature-measurement-app/esp32/main/gen/enums.h index f006d55171bec8..c14422f16eb01d 100644 --- a/examples/temperature-measurement-app/esp32/main/gen/enums.h +++ b/examples/temperature-measurement-app/esp32/main/gen/enums.h @@ -462,6 +462,29 @@ typedef enum EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT3 = 15, } EmberAfCommodityType; +// Enum for ContentLaunchMetricType +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PIXELS = 0, + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PERCENTAGE = 1, +} EmberAfContentLaunchMetricType; + +// Enum for ContentLaunchParameterEnum +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_ACTOR = 0, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHANNEL = 1, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHARACTER = 2, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_EVENT = 3, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_FRANCHISE = 4, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_GENRE = 5, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_LEAGUE = 6, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_POPULARITY = 7, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORT = 8, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORTS_TEAM = 9, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_VIDEO = 10, +} EmberAfContentLaunchParameterEnum; + // Enum for ContentLaunchStatus typedef enum { @@ -470,21 +493,12 @@ typedef enum EMBER_ZCL_CONTENT_LAUNCH_STATUS_AUTH_FAILED = 2, } EmberAfContentLaunchStatus; -// Enum for ContentLaunchType +// Enum for ContentLaunchStreamingType typedef enum { - EMBER_ZCL_CONTENT_LAUNCH_TYPE_ACTOR = 0, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHANNEL = 1, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHARACTER = 2, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_EVENT = 3, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_FRANCHISE = 4, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_GENRE = 5, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_LEAGUE = 6, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_POPULARITY = 7, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORT = 8, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORTS_TEAM = 9, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_VIDEO = 10, -} EmberAfContentLaunchType; + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_DASH = 0, + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_HLS = 1, +} EmberAfContentLaunchStreamingType; // Enum for CppEventResponseCppAuth typedef enum @@ -1617,6 +1631,97 @@ typedef enum EMBER_ZCL_KEY_INDEX_CERTIFICATION = 15, } EmberAfKeyIndex; +// Enum for KeypadInputCecKeyCode +typedef enum +{ + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT = 0, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_UP = 1, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOWN = 2, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT = 3, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT = 4, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_UP = 5, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_DOWN = 6, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_UP = 7, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_DOWN = 8, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ROOT_MENU = 9, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SETUP_MENU = 10, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CONTENTS_MENU = 11, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAVORITE_MENU = 12, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EXIT = 13, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_TOP_MENU = 16, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_CONTEXT_SENSITIVE_MENU = 17, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER_ENTRY_MODE = 29, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER11 = 30, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER12 = 31, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER0_OR_NUMBER10 = 32, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS1 = 33, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS2 = 34, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS3 = 35, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS4 = 36, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS5 = 37, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS6 = 38, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS7 = 39, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS8 = 40, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS9 = 41, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOT = 42, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ENTER = 43, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CLEAR = 44, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NEXT_FAVORITE = 47, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_UP = 48, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_DOWN = 49, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PREVIOUS_CHANNEL = 50, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SOUND_SELECT = 51, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INPUT_SELECT = 52, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DISPLAY_INFORMATION = 53, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_HELP = 54, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_UP = 55, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_DOWN = 56, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER = 64, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_UP = 65, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_DOWN = 66, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE = 67, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY = 68, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP = 69, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE = 70, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD = 71, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_REWIND = 72, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAST_FORWARD = 73, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EJECT = 74, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FORWARD = 75, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_BACKWARD = 76, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_RECORD = 77, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD = 78, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESERVED = 79, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ANGLE = 80, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SUB_PICTURE = 81, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VIDEO_ON_DEMAND = 82, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ELECTRONIC_PROGRAM_GUIDE = 83, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TIMER_PROGRAMMING = 84, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INITIAL_CONFIGURATION = 85, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_BROADCAST_TYPE = 86, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_SOUND_PRESENTATION = 87, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY_FUNCTION = 96, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_PLAY_FUNCTION = 97, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD_FUNCTION = 98, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD_FUNCTION = 99, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_FUNCTION = 100, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE_FUNCTION = 101, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESTORE_VOLUME_FUNCTION = 102, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TUNE_FUNCTION = 103, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_MEDIA_FUNCTION = 104, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AV_INPUT_FUNCTION = 105, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AUDIO_INPUT_FUNCTION = 106, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_TOGGLE_FUNCTION = 107, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_OFF_FUNCTION = 108, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_ON_FUNCTION = 109, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F1_BLUE = 113, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F2_RED = 114, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F3_GREEN = 115, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F4_YELLOW = 116, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F5 = 117, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DATA = 118, +} EmberAfKeypadInputCecKeyCode; + // Enum for KeypadInputStatus typedef enum { @@ -1698,6 +1803,26 @@ typedef enum EMBER_ZCL_MEDIA_INPUT_TYPE_OTHER = 11, } EmberAfMediaInputType; +// Enum for MediaPlaybackState +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PLAYING = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PAUSED = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_NOT_PLAYING = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_BUFFERING = 3, +} EmberAfMediaPlaybackState; + +// Enum for MediaPlaybackStatus +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SUCCESS = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_INVALID_STATE_FOR_COMMAND = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ALLOWED = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ACTIVE = 3, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SPEED_OUT_OF_RANGE = 4, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SEEK_OUT_OF_RANGE = 5, +} EmberAfMediaPlaybackStatus; + // Enum for MessagingControlConfirmation typedef enum { diff --git a/examples/tv-app/linux/BUILD.gn b/examples/tv-app/linux/BUILD.gn index 4a870a0f262807..d882f0c763745a 100644 --- a/examples/tv-app/linux/BUILD.gn +++ b/examples/tv-app/linux/BUILD.gn @@ -21,11 +21,33 @@ assert(chip_build_tools) executable("chip-tv-app") { sources = [ + "include/account-login/AccountLoginManager.cpp", + "include/account-login/AccountLoginManager.h", "include/application-basic/ApplicationBasicManager.cpp", "include/application-basic/ApplicationBasicManager.h", + "include/application-launcher/ApplicationLauncherManager.cpp", + "include/application-launcher/ApplicationLauncherManager.h", + "include/audio-output/AudioOutputManager.cpp", + "include/audio-output/AudioOutputManager.h", "include/cluster-init.cpp", + "include/content-launcher/ContentLauncherManager.cpp", + "include/content-launcher/ContentLauncherManager.h", "include/endpoint-configuration/EndpointConfigurationStorage.cpp", "include/endpoint-configuration/EndpointConfigurationStorage.h", + "include/keypad-input/KeypadInputManager.cpp", + "include/keypad-input/KeypadInputManager.h", + "include/low-power/LowPowerManager.cpp", + "include/low-power/LowPowerManager.h", + "include/media-input/MediaInputManager.cpp", + "include/media-input/MediaInputManager.h", + "include/media-playback/MediaPlaybackManager.cpp", + "include/media-playback/MediaPlaybackManager.h", + "include/target-navigator/TargetNavigatorManager.cpp", + "include/target-navigator/TargetNavigatorManager.h", + "include/tv-channel/TvChannelManager.cpp", + "include/tv-channel/TvChannelManager.h", + "include/wake-on-lan/WakeOnLanManager.cpp", + "include/wake-on-lan/WakeOnLanManager.h", "main.cpp", ] diff --git a/examples/tv-app/linux/include/account-login/AccountLoginManager.cpp b/examples/tv-app/linux/include/account-login/AccountLoginManager.cpp new file mode 100644 index 00000000000000..d0dc5b28e8fae0 --- /dev/null +++ b/examples/tv-app/linux/include/account-login/AccountLoginManager.cpp @@ -0,0 +1,94 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "AccountLoginManager.h" +#include "gen/attribute-id.h" +#include "gen/attribute-type.h" +#include "gen/cluster-id.h" +#include "gen/command-id.h" +#include "gen/enums.h" +#include +#include + +using namespace std; + +bool AccountLoginManager::isUserLoggedIn(string requestTempAccountIdentifier, string requestSetupPin) +{ + for (auto it = accounts.cbegin(); it != accounts.cend(); ++it) + { + emberAfAccountLoginClusterPrintln("temporary account id: %s", it->first); + emberAfAccountLoginClusterPrintln("setup pin %s", it->second); + } + + if (accounts.find(requestTempAccountIdentifier) != accounts.end()) + { + bool found = accounts[requestTempAccountIdentifier] == requestSetupPin; + if (!found) + { + emberAfAccountLoginClusterPrintln("User is not logged in, failed to match request setup pin", + EMBER_ZCL_STATUS_NOT_AUTHORIZED); + } + return found; + } + else + { + emberAfAccountLoginClusterPrintln("User is not logged in, failed to find temp account identifier", + EMBER_ZCL_STATUS_NOT_AUTHORIZED); + return false; + } +} + +void AccountLoginManager::setTempAccountIdentifierForPin(string tempAccountIdentifier, string setupPin) +{ + accounts[tempAccountIdentifier] = setupPin; +} + +string AccountLoginManager::proxySetupPinRequest(string requestTempAccountIdentifier, chip::EndpointId endpoint) +{ + // TODO: Insert your code here to send temp account identifier request + return "HtempPin123"; +} + +bool emberAfAccountLoginClusterGetSetupPINCallback(chip::app::Command * command, unsigned char * tempAccountIdentifier) +{ + string tempAccountIdentifierString(reinterpret_cast(tempAccountIdentifier)); + + string responseSetupPin = AccountLoginManager().proxySetupPinRequest(tempAccountIdentifierString, emberAfCurrentEndpoint()); + emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), ZCL_ACCOUNT_LOGIN_CLUSTER_ID, + ZCL_GET_SETUP_PIN_RESPONSE_COMMAND_ID, "s", &responseSetupPin); + + EmberStatus status = emberAfSendResponse(); + if (status != EMBER_SUCCESS) + { + emberAfAccountLoginClusterPrintln("Failed to send %s: 0x%X", "GetSetupPIN", status); + } + AccountLoginManager().GetInstance().setTempAccountIdentifierForPin(tempAccountIdentifierString, responseSetupPin); + return true; +} + +bool emberAfAccountLoginClusterLoginCallback(chip::app::Command * command, unsigned char * tempAccountIdentifier, + unsigned char * tempSetupPin) +{ + string tempAccountIdentifierString(reinterpret_cast(tempAccountIdentifier)); + string tempSetupPinString(reinterpret_cast(tempSetupPin)); + bool isUserLoggedIn = AccountLoginManager().GetInstance().isUserLoggedIn(tempAccountIdentifierString, tempSetupPinString); + EmberAfStatus status = isUserLoggedIn ? EMBER_ZCL_STATUS_SUCCESS : EMBER_ZCL_STATUS_NOT_AUTHORIZED; + emberAfAccountLoginClusterPrintln("User is not authorized.", EMBER_ZCL_STATUS_NOT_AUTHORIZED); + emberAfSendImmediateDefaultResponse(status); + return true; +} diff --git a/examples/tv-app/linux/include/account-login/AccountLoginManager.h b/examples/tv-app/linux/include/account-login/AccountLoginManager.h new file mode 100644 index 00000000000000..8874236fa799d5 --- /dev/null +++ b/examples/tv-app/linux/include/account-login/AccountLoginManager.h @@ -0,0 +1,41 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include +#include +#include +#include + +class AccountLoginManager +{ +public: + bool isUserLoggedIn(std::string requestTempAccountIdentifier, std::string requestSetupPin); + std::string proxySetupPinRequest(std::string requestTempAccountIdentifier, chip::EndpointId endpoint); + void setTempAccountIdentifierForPin(std::string requestTempAccountIdentifier, std::string requestSetupPin); + + static AccountLoginManager & GetInstance() + { + static AccountLoginManager instance; + return instance; + } + +private: + std::map accounts; +}; diff --git a/examples/tv-app/linux/include/application-basic/Application.h b/examples/tv-app/linux/include/application-basic/Application.h index 923b66351acd85..da5364d13f8e02 100644 --- a/examples/tv-app/linux/include/application-basic/Application.h +++ b/examples/tv-app/linux/include/application-basic/Application.h @@ -19,9 +19,6 @@ #pragma once #include "gen/enums.h" -#include -#include - struct Application { char vendorName[32] = ""; diff --git a/examples/tv-app/linux/include/application-launcher/ApplicationLauncherManager.cpp b/examples/tv-app/linux/include/application-launcher/ApplicationLauncherManager.cpp new file mode 100644 index 00000000000000..ac2019ae10f896 --- /dev/null +++ b/examples/tv-app/linux/include/application-launcher/ApplicationLauncherManager.cpp @@ -0,0 +1,104 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ApplicationLauncherManager.h" + +#include "gen/attribute-id.h" +#include "gen/attribute-type.h" +#include "gen/cluster-id.h" +#include "gen/command-id.h" + +#include +#include + +using namespace std; + +CHIP_ERROR ApplicationLauncherManager::Init() +{ + CHIP_ERROR err = CHIP_NO_ERROR; + + // TODO: Update once storing a list attribute is supported + // ApplicationLauncherManager().proxyGetApplicationList(); + // emberAfWriteServerAttribute(endpoint, ZCL_APPLICATION_LAUNCH_CLUSTER_ID, ZCL_APPLICATION_LAUNCHER_CURRENT_APP_APPLICATION_ID, + // (uint8_t *) &application, ZCL_STRUCT_ATTRIBUTE_TYPE); + + SuccessOrExit(err); +exit: + return err; +} + +list ApplicationLauncherManager::proxyGetApplicationList() +{ + list applications; + applications.push_back(123); + return applications; +} + +ApplicationLaunchResponse ApplicationLauncherManager::proxyApplicationLaunchRequest(EmberAfApplicationLauncherApp application, + string data) +{ + // TODO: Insert your code + ApplicationLaunchResponse response; + response.data = "data"; + response.status = EMBER_ZCL_APPLICATION_LAUNCHER_STATUS_SUCCESS; + // TODO: Update once storing a structure attribute is supported + // emberAfWriteServerAttribute(endpoint, ZCL_APPLICATION_LAUNCH_CLUSTER_ID, ZCL_APPLICATION_LAUNCHER_CURRENT_APP_APPLICATION_ID, + // (uint8_t *) &application, ZCL_STRUCT_ATTRIBUTE_TYPE); + + return response; +} + +static void sendResponse(const char * responseName, ApplicationLaunchResponse response) +{ + emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), + ZCL_APPLICATION_LAUNCHER_CLUSTER_ID, ZCL_LAUNCH_APP_RESPONSE_COMMAND_ID, "us", response.status, + &response.data); + + EmberStatus status = emberAfSendResponse(); + if (status != EMBER_SUCCESS) + { + emberAfApplicationLauncherClusterPrintln("Failed to send %s: 0x%X", responseName, status); + } +} + +EmberAfApplicationLauncherApp getApplicationFromCommand(EmberAfClusterCommand * cmd, unsigned char * reqestData, + uint8_t * requestApplication) +{ + string reqestDataString(reinterpret_cast(reqestData)); + + uint16_t extensionFieldSetsLen = + static_cast(cmd->bufLen - (cmd->payloadStartIndex + emberAfStringLength((uint8_t *) reqestData) + 1)); + uint16_t catalogVendorId = emberAfGetInt16u(requestApplication, 0, extensionFieldSetsLen); + uint8_t * applicationId = emberAfGetString(requestApplication, 0, extensionFieldSetsLen); + + EmberAfApplicationLauncherApp application = {}; + application.applicationId = applicationId; + application.catalogVendorId = catalogVendorId; + return application; +} + +bool emberAfApplicationLauncherClusterLaunchAppCallback(unsigned char * reqestData, uint8_t * requestApplication) +{ + EmberAfApplicationLauncherApp application = getApplicationFromCommand(emberAfCurrentCommand(), reqestData, requestApplication); + string reqestDataString(reinterpret_cast(reqestData)); + + ApplicationLaunchResponse response = ApplicationLauncherManager().proxyApplicationLaunchRequest(application, reqestDataString); + + sendResponse("LaunchAppResponse", response); + return true; +} diff --git a/examples/tv-app/linux/include/application-launcher/ApplicationLauncherManager.h b/examples/tv-app/linux/include/application-launcher/ApplicationLauncherManager.h new file mode 100644 index 00000000000000..d5d770ce8b810a --- /dev/null +++ b/examples/tv-app/linux/include/application-launcher/ApplicationLauncherManager.h @@ -0,0 +1,39 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include "gen/af-structs.h" +#include + +#include +#include + +struct ApplicationLaunchResponse +{ + EmberAfApplicationLauncherStatus status; + std::string data; +}; + +class ApplicationLauncherManager +{ +public: + CHIP_ERROR Init(); + ApplicationLaunchResponse proxyApplicationLaunchRequest(EmberAfApplicationLauncherApp application, std::string data); + std::list proxyGetApplicationList(); +}; diff --git a/examples/tv-app/linux/include/audio-output/AudioOutputManager.cpp b/examples/tv-app/linux/include/audio-output/AudioOutputManager.cpp new file mode 100644 index 00000000000000..32f276f19494cc --- /dev/null +++ b/examples/tv-app/linux/include/audio-output/AudioOutputManager.cpp @@ -0,0 +1,92 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "AudioOutputManager.h" + +#include "gen/attribute-id.h" +#include "gen/attribute-type.h" +#include "gen/cluster-id.h" +#include "gen/command-id.h" + +#include +#include +#include + +#include +#include + +using namespace std; + +CHIP_ERROR AudioOutputManager::Init() +{ + CHIP_ERROR err = CHIP_NO_ERROR; + + // TODO: Store feature map once it is supported + map featureMap; + featureMap["NU"] = true; + + // TODO: when list is not supported enable + // list listOfAudioOutputs = AudioOutputManager().proxyGetListOfAudioOutputInfo(); + // EmberAfStatus status = emberAfWriteServerAttribute(endpoint, ZCL_AUDIO_OUTPUT_CLUSTER_ID, ZCL_AUDIO_OUTPUT_LIST_ATTRIBUTE_ID, + // (uint8_t *) &listOfAudioOutputs, ZCL_CHAR_STRING_ATTRIBUTE_TYPE); + // if (status != EMBER_ZCL_STATUS_SUCCESS) + // { + // emberAfAudioOutputClusterPrintln("Failed to write Output List attribute: 0x%X", status); + // } + return err; +} + +list AudioOutputManager::proxyGetListOfAudioOutputInfo() +{ + // TODO: Insert code here + list listOfAudioOutputInfos; + EmberAfAudioOutputInfo audioOutputInfo = {}; + // audioOutputInfo.Name = ""; + audioOutputInfo.outputType = EMBER_ZCL_AUDIO_OUTPUT_TYPE_HDMI; + audioOutputInfo.index = 1; + + listOfAudioOutputInfos.push_back(audioOutputInfo); + return listOfAudioOutputInfos; +} + +bool AudioOutputManager::proxySelectOutputRequest(uint8_t index) +{ + // TODO: Insert code here + return true; +} +bool AudioOutputManager::proxyRenameOutputRequest(uint8_t index, uint8_t * name) +{ + // TODO: Insert code here + return true; +} + +bool emberAfAudioOutputClusterRenameOutputCallback(chip::app::Command * command, unsigned char index, uint8_t * name) +{ + bool success = AudioOutputManager().proxyRenameOutputRequest(index, name); + EmberAfStatus status = success ? EMBER_ZCL_STATUS_SUCCESS : EMBER_ZCL_STATUS_FAILURE; + emberAfSendImmediateDefaultResponse(status); + return true; +} + +bool emberAfAudioOutputClusterSelectOutputCallback(chip::app::Command * command, unsigned char index) +{ + bool success = AudioOutputManager().proxySelectOutputRequest(index); + EmberAfStatus status = success ? EMBER_ZCL_STATUS_SUCCESS : EMBER_ZCL_STATUS_FAILURE; + emberAfSendImmediateDefaultResponse(status); + return true; +} diff --git a/examples/tv-app/linux/include/audio-output/AudioOutputManager.h b/examples/tv-app/linux/include/audio-output/AudioOutputManager.h new file mode 100644 index 00000000000000..832526dbe6e2e7 --- /dev/null +++ b/examples/tv-app/linux/include/audio-output/AudioOutputManager.h @@ -0,0 +1,32 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include "gen/af-structs.h" + +#include +#include +class AudioOutputManager +{ +public: + CHIP_ERROR Init(); + bool proxySelectOutputRequest(uint8_t index); + bool proxyRenameOutputRequest(uint8_t index, uint8_t * name); + std::list proxyGetListOfAudioOutputInfo(); +}; diff --git a/examples/tv-app/linux/include/cluster-init.cpp b/examples/tv-app/linux/include/cluster-init.cpp index 9f5375049f5b60..28c571909824d3 100644 --- a/examples/tv-app/linux/include/cluster-init.cpp +++ b/examples/tv-app/linux/include/cluster-init.cpp @@ -17,11 +17,18 @@ */ #include "application-basic/ApplicationBasicManager.h" +#include "audio-output/AudioOutputManager.h" +#include "wake-on-lan/WakeOnLanManager.h" + +#include +#include +#include #include "gen/attribute-id.h" #include "gen/attribute-type.h" #include "gen/cluster-id.h" #include "gen/command-id.h" +#include "gen/enums.h" /** @brief Application Basic Cluster Init * @@ -43,3 +50,25 @@ void emberAfApplicationBasicClusterInitCallback(chip::EndpointId endpoint) aManager.store(endpoint, &application); } } + +/** @brief Wake On LAN Cluster Init + * + * This function is called when a specific cluster is initialized. It gives the + * application an opportunity to take care of cluster initialization procedures. + * It is called exactly once for each endpoint where cluster is present. + * + * @param endpoint Ver.: always + * + */ +void emberAfWakeOnLanClusterInitCallback(chip::EndpointId endpoint) +{ + CHIP_ERROR err = CHIP_NO_ERROR; + WakeOnLanManager & wolManager = WakeOnLanManager::GetInstance(); + err = wolManager.Init(); + if (CHIP_NO_ERROR == err) + { + char macAddress[17] = ""; + wolManager.setMacAddress(endpoint, macAddress); + wolManager.store(endpoint, macAddress); + } +} diff --git a/examples/tv-app/linux/include/content-launcher/ContentLauncherManager.cpp b/examples/tv-app/linux/include/content-launcher/ContentLauncherManager.cpp new file mode 100644 index 00000000000000..95094f6e90da70 --- /dev/null +++ b/examples/tv-app/linux/include/content-launcher/ContentLauncherManager.cpp @@ -0,0 +1,127 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ContentLauncherManager.h" + +#include "gen/attribute-id.h" +#include "gen/attribute-type.h" +#include "gen/cluster-id.h" +#include "gen/command-id.h" + +#include +#include +#include + +#include + +using namespace std; + +CHIP_ERROR ContentLauncherManager::Init() +{ + CHIP_ERROR err = CHIP_NO_ERROR; + + // TODO: Store feature map once it is supported + map featureMap; + featureMap["CS"] = true; + featureMap["UP"] = true; + featureMap["WA"] = true; + + // TODO: Update once storing a list attribute is supported + // list acceptedHeaderList = ContentLauncherManager().proxyGetAcceptsHeader(); + // emberAfWriteServerAttribute(endpoint, ZCL_CONTENT_LAUNCH_CLUSTER_ID, ZCL_CONTENT_LAUNCHER_ACCEPTS_HEADER_ATTRIBUTE_ID, + // (uint8_t *) &acceptedHeaderList, ZCL_STRUCT_ATTRIBUTE_TYPE); + + // TODO: Update once storing a list attribute is supported + // list supportedStreamingTypes = ContentLauncherManager().proxyGetAcceptsHeader(); + // emberAfWriteServerAttribute(endpoint, ZCL_CONTENT_LAUNCH_CLUSTER_ID, + // ZCL_CONTENT_LAUNCHER_SUPPORTED_STREAMING_TYPES_ATTRIBUTE_ID, (uint8_t *) + // &supportedStreamingTypes, ZCL_STRUCT_ATTRIBUTE_TYPE); + + SuccessOrExit(err); +exit: + return err; +} + +list ContentLauncherManager::proxyGetAcceptsHeader() +{ + // TODO: Insert code here + list acceptedHeaderList; + acceptedHeaderList.push_back("HeaderExample"); + return acceptedHeaderList; +} + +list ContentLauncherManager::proxyGetSupportedStreamingTypes() +{ + // TODO: Insert code here + list supportedStreamingTypes; + supportedStreamingTypes.push_back(EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_DASH); + return supportedStreamingTypes; +} + +ContentLaunchResponse ContentLauncherManager::proxyLaunchContentRequest(list parameterList, + bool autoplay, string data) +{ + // TODO: Insert code here + ContentLaunchResponse response; + response.data = "Example data"; + response.status = EMBER_ZCL_CONTENT_LAUNCH_STATUS_SUCCESS; + return response; +} +ContentLaunchResponse ContentLauncherManager::proxyLaunchUrlRequest(string contentUrl, string displayString, + EmberAfContentLaunchBrandingInformation brandingInformation) +{ + // TODO: Insert code here + ContentLaunchResponse response; + response.data = "Example data"; + response.status = EMBER_ZCL_CONTENT_LAUNCH_STATUS_SUCCESS; + return response; +} + +static void sendResponse(const char * responseName, ContentLaunchResponse launchResponse, chip::CommandId commandId) +{ + emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), ZCL_CONTENT_LAUNCH_CLUSTER_ID, + commandId, "us", launchResponse.status, &launchResponse.data); + + EmberStatus status = emberAfSendResponse(); + if (status != EMBER_SUCCESS) + { + emberAfContentLauncherClusterPrintln("Failed to send %s: 0x%X", responseName, status); + } +} + +bool emberAfContentLaunchClusterLaunchContentCallback(chip::app::Command * command, unsigned char autoplay, unsigned char * data) +{ + + string dataString(reinterpret_cast(data)); + list parameterList; + ContentLaunchResponse response = ContentLauncherManager().proxyLaunchContentRequest(parameterList, autoplay, dataString); + sendResponse("LaunchContent", response, ZCL_LAUNCH_CONTENT_RESPONSE_COMMAND_ID); + return true; +} + +bool emberAfContentLaunchClusterLaunchURLCallback(chip::app::Command * command, unsigned char * contentUrl, + unsigned char * displayString) +{ + string contentUrlString(reinterpret_cast(contentUrl)); + string displayStringString(reinterpret_cast(displayString)); + EmberAfContentLaunchBrandingInformation brandingInformation; + ContentLaunchResponse response = + ContentLauncherManager().proxyLaunchUrlRequest(contentUrlString, displayStringString, brandingInformation); + sendResponse("LaunchURL", response, ZCL_LAUNCH_URL_RESPONSE_COMMAND_ID); + return true; +} diff --git a/examples/tv-app/linux/include/content-launcher/ContentLauncherManager.h b/examples/tv-app/linux/include/content-launcher/ContentLauncherManager.h new file mode 100644 index 00000000000000..068e440adca517 --- /dev/null +++ b/examples/tv-app/linux/include/content-launcher/ContentLauncherManager.h @@ -0,0 +1,43 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include "gen/af-structs.h" + +#include +#include +#include + +struct ContentLaunchResponse +{ + EmberAfContentLaunchStatus status; + std::string data; +}; + +class ContentLauncherManager +{ +public: + CHIP_ERROR Init(); + std::list proxyGetAcceptsHeader(); + std::list proxyGetSupportedStreamingTypes(); + ContentLaunchResponse proxyLaunchContentRequest(std::list parameterList, bool autoplay, + std::string data); + ContentLaunchResponse proxyLaunchUrlRequest(std::string contentUrl, std::string displayString, + EmberAfContentLaunchBrandingInformation brandingInformation); +}; diff --git a/examples/tv-app/linux/include/endpoint-configuration/config.ini b/examples/tv-app/linux/include/endpoint-configuration/config.ini index f59fdddd7065d4..6339c17baae38f 100644 --- a/examples/tv-app/linux/include/endpoint-configuration/config.ini +++ b/examples/tv-app/linux/include/endpoint-configuration/config.ini @@ -1,10 +1,11 @@ -[endpoint1] +[endpoint0] type=videoPlayer +macAddress=00:00:00:00:00 -[endpoint2] +[endpoint1] type=speaker -[endpoint3] +[endpoint2] type=app vendorName=exampleVendorName1 vendorId=1 @@ -13,7 +14,7 @@ productId=1 id=1 catalogVendorId=1 -[endpoint4] +[endpoint3] type=app vendorName=exampleVendorName2 vendorId=2 @@ -22,7 +23,7 @@ productId=2 id=2 catalogVendorId=2 -[endpoint5] +[endpoint4] type=app vendorName=exampleVendorName3 vendorId=3 @@ -31,11 +32,11 @@ productId=3 id= 3 catalogVendorId=3 -[endpoint6] +[endpoint5] type=app vendorName=exampleVendorName4 vendorId=4 name=exampleName4 productId=4 id=4 -catalogVendorId=4 +catalogVendorId=4 \ No newline at end of file diff --git a/examples/tv-app/linux/include/keypad-input/KeypadInputManager.cpp b/examples/tv-app/linux/include/keypad-input/KeypadInputManager.cpp new file mode 100644 index 00000000000000..97b68ec2aebdcb --- /dev/null +++ b/examples/tv-app/linux/include/keypad-input/KeypadInputManager.cpp @@ -0,0 +1,72 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "KeypadInputManager.h" + +#include "gen/attribute-id.h" +#include "gen/attribute-type.h" +#include "gen/cluster-id.h" +#include "gen/command-id.h" + +#include +#include + +#include +#include + +using namespace std; + +CHIP_ERROR KeypadInputManager::Init() +{ + CHIP_ERROR err = CHIP_NO_ERROR; + + // TODO: Store feature map once it is supported + map featureMap; + featureMap["NV"] = true; + featureMap["LK"] = true; + featureMap["NK"] = true; + + SuccessOrExit(err); +exit: + return err; +} + +EmberAfKeypadInputStatus KeypadInputManager::proxyKeypadInputRequest(EmberAfKeypadInputCecKeyCode keyCode) +{ + // TODO: Insert code here + return EMBER_ZCL_KEYPAD_INPUT_STATUS_SUCCESS; +} + +static void sendResponse(const char * responseName, uint8_t keypadInputStatus) +{ + emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), ZCL_KEYPAD_INPUT_CLUSTER_ID, + ZCL_SEND_KEY_RESPONSE_COMMAND_ID, "u", keypadInputStatus); + + EmberStatus status = emberAfSendResponse(); + if (status != EMBER_SUCCESS) + { + emberAfKeypadInputClusterPrintln("Failed to send %s: 0x%X", responseName, status); + } +} + +bool emberAfKeypadInputClusterSendKeyCallback(EmberAfKeypadInputCecKeyCode keyCode) +{ + EmberAfKeypadInputStatus status = KeypadInputManager().proxyKeypadInputRequest(keyCode); + sendResponse("KeypadInputResponse", status); + return true; +} diff --git a/examples/tv-app/linux/include/keypad-input/KeypadInputManager.h b/examples/tv-app/linux/include/keypad-input/KeypadInputManager.h new file mode 100644 index 00000000000000..3459f5f90a1b98 --- /dev/null +++ b/examples/tv-app/linux/include/keypad-input/KeypadInputManager.h @@ -0,0 +1,31 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include "gen/af-structs.h" + +#include +#include + +class KeypadInputManager +{ +public: + CHIP_ERROR Init(); + EmberAfKeypadInputStatus proxyKeypadInputRequest(EmberAfKeypadInputCecKeyCode keyCode); +}; diff --git a/examples/tv-app/linux/include/low-power/LowPowerManager.cpp b/examples/tv-app/linux/include/low-power/LowPowerManager.cpp new file mode 100644 index 00000000000000..15d8ccd8a3fa92 --- /dev/null +++ b/examples/tv-app/linux/include/low-power/LowPowerManager.cpp @@ -0,0 +1,40 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "LowPowerManager.h" + +#include + +#include "gen/attribute-id.h" +#include "gen/attribute-type.h" +#include "gen/cluster-id.h" +#include "gen/command-id.h" + +bool LowPowerManager::proxySleepRequest() +{ + // TODO: Insert code here + return true; +} + +bool emberAfLowPowerClusterSleepCallback() +{ + bool success = LowPowerManager().proxySleepRequest(); + EmberAfStatus status = success ? EMBER_ZCL_STATUS_SUCCESS : EMBER_ZCL_STATUS_FAILURE; + emberAfSendImmediateDefaultResponse(status); + return true; +} diff --git a/examples/tv-app/linux/include/low-power/LowPowerManager.h b/examples/tv-app/linux/include/low-power/LowPowerManager.h new file mode 100644 index 00000000000000..56bc3c7532730c --- /dev/null +++ b/examples/tv-app/linux/include/low-power/LowPowerManager.h @@ -0,0 +1,27 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include + +class LowPowerManager +{ +public: + bool proxySleepRequest(); +}; diff --git a/examples/tv-app/linux/include/media-input/MediaInputManager.cpp b/examples/tv-app/linux/include/media-input/MediaInputManager.cpp new file mode 100644 index 00000000000000..c0081fc978a9b2 --- /dev/null +++ b/examples/tv-app/linux/include/media-input/MediaInputManager.cpp @@ -0,0 +1,122 @@ +/** + * + * Copyright (c) 2021 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "MediaInputManager.h" +#include +#include +#include + +#include "gen/attribute-id.h" +#include "gen/attribute-type.h" +#include "gen/cluster-id.h" +#include "gen/command-id.h" + +CHIP_ERROR MediaInputManager::Init() +{ + CHIP_ERROR err = CHIP_NO_ERROR; + + // TODO: Store feature map once it is supported + std::map featureMap; + featureMap["NU"] = true; + + // TODO: Update once storing a list attribute is supported + // std::list mediaInputList = MediaInputManager().proxyGetInputList(); + // emberAfWriteServerAttribute(endpoint, ZCL_MEDIA_INPUT_CLUSTER_ID, ZCL_MEDIA_INPUT_CURRENT_INPUT_ATTRIBUTE_ID, + // (uint8_t *) &mediaInputList, ZCL_STRUCT_ATTRIBUTE_TYPE); + SuccessOrExit(err); +exit: + return err; +} + +bool MediaInputManager::proxySelectInputRequest(uint8_t input) +{ + // TODO: Insert code here + return true; +} + +bool MediaInputManager::proxyShowInputStatusRequest() +{ + // TODO: Insert code here + return true; +} + +bool MediaInputManager::proxyHideInputStatusRequest() +{ + // TODO: Insert code here + return true; +} + +bool MediaInputManager::proxyRenameInputRequest(uint8_t input, std::string name) +{ + // TODO: Insert code here + return true; +} + +std::list MediaInputManager::proxyGetInputList() +{ + // TODO: Insert code here + std::list mediaInputList; + return mediaInputList; +} + +static void storeCurrentInput(chip::EndpointId endpoint, uint8_t currentInput) +{ + EmberAfStatus status = + emberAfWriteServerAttribute(endpoint, ZCL_MEDIA_INPUT_CLUSTER_ID, ZCL_MEDIA_INPUT_CURRENT_INPUT_ATTRIBUTE_ID, + (uint8_t *) ¤tInput, ZCL_INT8U_ATTRIBUTE_TYPE); + if (status != EMBER_ZCL_STATUS_SUCCESS) + { + emberAfMediaPlaybackClusterPrintln("Failed to store media playback attribute."); + } +} + +bool emberAfMediaInputClusterSelectInputCallback(uint8_t input) +{ + bool success = MediaInputManager().proxySelectInputRequest(input); + EmberAfStatus status = success ? EMBER_ZCL_STATUS_SUCCESS : EMBER_ZCL_STATUS_FAILURE; + if (success) + { + storeCurrentInput(emberAfCurrentEndpoint(), input); + } + emberAfSendImmediateDefaultResponse(status); + return true; +} + +bool emberAfMediaInputClusterShowInputStatusCallback() +{ + bool success = MediaInputManager().proxyShowInputStatusRequest(); + EmberAfStatus status = success ? EMBER_ZCL_STATUS_SUCCESS : EMBER_ZCL_STATUS_FAILURE; + emberAfSendImmediateDefaultResponse(status); + return true; +} + +bool emberAfMediaInputClusterHideInputStatusCallback() +{ + bool success = MediaInputManager().proxyHideInputStatusRequest(); + EmberAfStatus status = success ? EMBER_ZCL_STATUS_SUCCESS : EMBER_ZCL_STATUS_FAILURE; + emberAfSendImmediateDefaultResponse(status); + return true; +} + +bool emberAfMediaInputClusterRenameInputCallback(uint8_t input, char * name) +{ + std::string nameString(name); + bool success = MediaInputManager().proxyRenameInputRequest(input, nameString); + EmberAfStatus status = success ? EMBER_ZCL_STATUS_SUCCESS : EMBER_ZCL_STATUS_FAILURE; + emberAfSendImmediateDefaultResponse(status); + return true; +} diff --git a/examples/tv-app/linux/include/media-input/MediaInputManager.h b/examples/tv-app/linux/include/media-input/MediaInputManager.h new file mode 100644 index 00000000000000..070580c6f626d5 --- /dev/null +++ b/examples/tv-app/linux/include/media-input/MediaInputManager.h @@ -0,0 +1,36 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include "gen/af-structs.h" + +#include +#include +#include + +class MediaInputManager +{ +public: + CHIP_ERROR Init(); + std::list proxyGetInputList(); + bool proxySelectInputRequest(uint8_t input); + bool proxyShowInputStatusRequest(); + bool proxyHideInputStatusRequest(); + bool proxyRenameInputRequest(uint8_t input, std::string name); +}; diff --git a/examples/tv-app/linux/include/media-playback/MediaPlaybackManager.cpp b/examples/tv-app/linux/include/media-playback/MediaPlaybackManager.cpp new file mode 100644 index 00000000000000..8ebfc06d30cce8 --- /dev/null +++ b/examples/tv-app/linux/include/media-playback/MediaPlaybackManager.cpp @@ -0,0 +1,205 @@ +/** + * + * Copyright (c) 2021 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "MediaPlaybackManager.h" +#include +#include +#include + +#include "gen/attribute-id.h" +#include "gen/attribute-type.h" +#include "gen/cluster-id.h" +#include "gen/command-id.h" + +#include +#include + +using namespace std; + +CHIP_ERROR MediaPlaybackManager::Init() +{ + CHIP_ERROR err = CHIP_NO_ERROR; + + // TODO: Store feature map once it is supported + map featureMap; + featureMap["AS"] = true; + + SuccessOrExit(err); +exit: + return err; +} + +static void writePlaybackState(chip::EndpointId endpoint, uint8_t playbackState) +{ + EmberAfStatus status = + emberAfWriteServerAttribute(endpoint, ZCL_MEDIA_PLAYBACK_CLUSTER_ID, ZCL_MEDIA_PLAYBACK_STATE_ATTRIBUTE_ID, + (uint8_t *) &playbackState, ZCL_INT8U_ATTRIBUTE_TYPE); + if (status != EMBER_ZCL_STATUS_SUCCESS) + { + emberAfMediaPlaybackClusterPrintln("Failed to store media playback attribute."); + } +} + +static uint8_t readPlaybackStatus(chip::EndpointId endpoint) +{ + uint8_t playbackState; + EmberAfStatus status = + emberAfReadServerAttribute(endpoint, ZCL_MEDIA_PLAYBACK_CLUSTER_ID, ZCL_MEDIA_PLAYBACK_STATE_ATTRIBUTE_ID, + (uint8_t *) &playbackState, sizeof(uint8_t)); + if (status != EMBER_ZCL_STATUS_SUCCESS) + { + emberAfMediaPlaybackClusterPrintln("Failed to read media playback attribute."); + } + + return playbackState; +} + +void MediaPlaybackManager::storeNewPlaybackState(chip::EndpointId endpoint, uint8_t newPlaybackState) +{ + oldPlaybackState = readPlaybackStatus(endpoint); + + if (oldPlaybackState == newPlaybackState) + { + return; + } + else + { + writePlaybackState(endpoint, newPlaybackState); + } +} + +static void sendResponse(const char * responseName, chip::CommandId commandId, uint8_t mediaPlaybackStatus) +{ + emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), ZCL_MEDIA_PLAYBACK_CLUSTER_ID, + commandId, "u", mediaPlaybackStatus); + + EmberStatus status = emberAfSendResponse(); + if (status != EMBER_SUCCESS) + { + emberAfMediaPlaybackClusterPrintln("Failed to send %s: 0x%X", responseName, status); + } +} + +EmberAfMediaPlaybackStatus MediaPlaybackManager::proxyMediaPlaybackRequest(MediaPlaybackRequest mediaPlaybackRequest) +{ + switch (mediaPlaybackRequest) + { + case Play: + // TODO: Insert code here + case Pause: + // TODO: Insert code here + case Stop: + // TODO: Insert code here + case StartOver: + // TODO: Insert code here + case Previous: + // TODO: Insert code here + case Next: + // TODO: Insert code here + case Rewind: + // TODO: Insert code here + case FastForward: + // TODO: Insert code here + case SkipForward: + // TODO: Insert code here + case Seek: + return EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SUCCESS; + break; + default: { + return EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SUCCESS; + } + } +} + +bool emberAfMediaPlaybackClusterMediaPlayCallback(chip::app::Command *) +{ + EmberAfMediaPlaybackStatus status = MediaPlaybackManager().proxyMediaPlaybackRequest(MediaPlaybackRequest::Play); + MediaPlaybackManager().storeNewPlaybackState(emberAfCurrentEndpoint(), EMBER_ZCL_MEDIA_PLAYBACK_STATE_PLAYING); + sendResponse("MediaPlayResponse", ZCL_MEDIA_PLAY_RESPONSE_COMMAND_ID, status); + return true; +} + +bool emberAfMediaPlaybackClusterMediaPauseCallback(chip::app::Command *) +{ + EmberAfMediaPlaybackStatus status = MediaPlaybackManager().proxyMediaPlaybackRequest(MediaPlaybackRequest::Pause); + MediaPlaybackManager().storeNewPlaybackState(emberAfCurrentEndpoint(), EMBER_ZCL_MEDIA_PLAYBACK_STATE_PAUSED); + sendResponse("MediaPauseResponse", ZCL_MEDIA_PAUSE_RESPONSE_COMMAND_ID, status); + return true; +} + +bool emberAfMediaPlaybackClusterMediaStopCallback(chip::app::Command *) +{ + EmberAfMediaPlaybackStatus status = MediaPlaybackManager().proxyMediaPlaybackRequest(MediaPlaybackRequest::Stop); + MediaPlaybackManager().storeNewPlaybackState(emberAfCurrentEndpoint(), EMBER_ZCL_MEDIA_PLAYBACK_STATE_NOT_PLAYING); + sendResponse("MediaStopResponse", ZCL_MEDIA_STOP_RESPONSE_COMMAND_ID, status); + return true; +} + +bool emberAfMediaPlaybackClusterMediaFastForwardCallback(chip::app::Command *) +{ + EmberAfMediaPlaybackStatus status = MediaPlaybackManager().proxyMediaPlaybackRequest(MediaPlaybackRequest::FastForward); + sendResponse("MediaFastForward", ZCL_MEDIA_FAST_FORWARD_RESPONSE_COMMAND_ID, status); + return true; +} + +bool emberAfMediaPlaybackClusterMediaPreviousCallback(chip::app::Command *) +{ + EmberAfMediaPlaybackStatus status = MediaPlaybackManager().proxyMediaPlaybackRequest(MediaPlaybackRequest::Previous); + sendResponse("MediaPrevious", ZCL_MEDIA_PREVIOUS_RESPONSE_COMMAND_ID, status); + return true; +} + +bool emberAfMediaPlaybackClusterMediaRewindCallback(chip::app::Command *) +{ + EmberAfMediaPlaybackStatus status = MediaPlaybackManager().proxyMediaPlaybackRequest(MediaPlaybackRequest::Rewind); + sendResponse("MediaRewind", ZCL_MEDIA_REWIND_RESPONSE_COMMAND_ID, status); + return true; +} + +bool emberAfMediaPlaybackClusterMediaSkipBackwardCallback(chip::app::Command *, unsigned long long deltaPositionMilliseconds) +{ + EmberAfMediaPlaybackStatus status = MediaPlaybackManager().proxyMediaPlaybackRequest(MediaPlaybackRequest::SkipBackward); + sendResponse("MediaSkipBackward", ZCL_MEDIA_SKIP_BACKWARD_RESPONSE_COMMAND_ID, status); + return true; +} + +bool emberAfMediaPlaybackClusterMediaSkipForwardCallback(chip::app::Command *, unsigned long long deltaPositionMilliseconds) +{ + EmberAfMediaPlaybackStatus status = MediaPlaybackManager().proxyMediaPlaybackRequest(MediaPlaybackRequest::SkipForward); + sendResponse("MediaSkipForward", ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID, status); + return true; +} + +bool emberAfMediaPlaybackClusterMediaSkipSeekCallback(chip::app::Command *, unsigned long long positionMilliseconds) +{ + EmberAfMediaPlaybackStatus status = MediaPlaybackManager().proxyMediaPlaybackRequest(MediaPlaybackRequest::Seek); + sendResponse("MediaSeek", ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID, status); + return true; +} + +bool emberAfMediaPlaybackClusterMediaNextCallback(chip::app::Command *) +{ + EmberAfMediaPlaybackStatus status = MediaPlaybackManager().proxyMediaPlaybackRequest(MediaPlaybackRequest::Next); + sendResponse("MediaNext", ZCL_MEDIA_NEXT_RESPONSE_COMMAND_ID, status); + return true; +} +bool emberAfMediaPlaybackClusterMediaStartOverCallback(chip::app::Command *) +{ + EmberAfMediaPlaybackStatus status = MediaPlaybackManager().proxyMediaPlaybackRequest(MediaPlaybackRequest::StartOver); + sendResponse("MediaStartOver", ZCL_MEDIA_START_OVER_RESPONSE_COMMAND_ID, status); + return true; +} diff --git a/examples/tv-app/linux/include/media-playback/MediaPlaybackManager.h b/examples/tv-app/linux/include/media-playback/MediaPlaybackManager.h new file mode 100644 index 00000000000000..31495e1d8292f7 --- /dev/null +++ b/examples/tv-app/linux/include/media-playback/MediaPlaybackManager.h @@ -0,0 +1,50 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include "gen/enums.h" +#include + +#include + +enum MediaPlaybackRequest +{ + Play, + Pause, + Stop, + StartOver, + Previous, + Next, + Rewind, + FastForward, + SkipForward, + SkipBackward, + Seek +}; + +class MediaPlaybackManager +{ +public: + CHIP_ERROR Init(); + void storeNewPlaybackState(chip::EndpointId endpoint, uint8_t newPlaybackState); + EmberAfMediaPlaybackStatus proxyMediaPlaybackRequest(MediaPlaybackRequest mediaPlaybackRequest); + +private: + uint8_t oldPlaybackState; +}; diff --git a/examples/tv-app/linux/include/target-navigator/TargetNavigatorManager.cpp b/examples/tv-app/linux/include/target-navigator/TargetNavigatorManager.cpp new file mode 100644 index 00000000000000..f4f8333b232141 --- /dev/null +++ b/examples/tv-app/linux/include/target-navigator/TargetNavigatorManager.cpp @@ -0,0 +1,81 @@ +/** + * + * Copyright (c) 2021 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "TargetNavigatorManager.h" + +#include "gen/attribute-id.h" +#include "gen/attribute-type.h" +#include "gen/cluster-id.h" +#include "gen/command-id.h" + +#include +#include + +#include +#include + +using namespace std; + +CHIP_ERROR TargetNavigatorManager::Init() +{ + CHIP_ERROR err = CHIP_NO_ERROR; + + // TODO: Update once storing a list attribute is supported + // std::list list = TargetNavigatorManager().proxyGetTargetInfoList(); + // emberAfWriteServerAttribute(endpoint, ZCL_TARGET_NAVIGATOR_CLUSTER_ID, ZCL_TARGET_NAVIGATOR_LIST_ATTRIBUTE_ID, + // (uint8_t *) &list, ZCL_STRUCT_ATTRIBUTE_TYPE); + + SuccessOrExit(err); +exit: + return err; +} + +std::list TargetNavigatorManager::proxyGetTargetInfoList() +{ + // TODO: Insert code here + std::list targets; + return targets; +} + +TargetNavigatorLaunchResponse TargetNavigatorManager::proxyNavigateTargetRequest(uint8_t target, std::string data) +{ + // TODO: Insert code here + TargetNavigatorLaunchResponse response; + response.data = "data response"; + response.status = EMBER_ZCL_APPLICATION_LAUNCHER_STATUS_SUCCESS; + return response; +} + +static void sendResponse(const char * responseName, TargetNavigatorLaunchResponse response) +{ + emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), ZCL_TARGET_NAVIGATOR_CLUSTER_ID, + ZCL_NAVIGATE_TARGET_RESPONSE_COMMAND_ID, "us", response.status, &response.data); + + EmberStatus status = emberAfSendResponse(); + if (status != EMBER_SUCCESS) + { + emberAfTargetNavigatorClusterPrintln("Failed to send %s: 0x%X", responseName, status); + } +} + +bool emberAfTargetNavigatorClusterNavigateTargetCallback(unsigned char target, unsigned char * data) +{ + std::string dataString(reinterpret_cast(data)); + TargetNavigatorLaunchResponse response = TargetNavigatorManager().proxyNavigateTargetRequest(target, dataString); + sendResponse("NavigateTargetResponse", response); + return true; +} diff --git a/examples/tv-app/linux/include/target-navigator/TargetNavigatorManager.h b/examples/tv-app/linux/include/target-navigator/TargetNavigatorManager.h new file mode 100644 index 00000000000000..c850edc31ca734 --- /dev/null +++ b/examples/tv-app/linux/include/target-navigator/TargetNavigatorManager.h @@ -0,0 +1,38 @@ +/** + * + * Copyright (c) 2021 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include "gen/af-structs.h" + +#include +#include +#include + +struct TargetNavigatorLaunchResponse +{ + EmberAfApplicationLauncherStatus status; + std::string data; +}; + +class TargetNavigatorManager +{ +public: + CHIP_ERROR Init(); + TargetNavigatorLaunchResponse proxyNavigateTargetRequest(uint8_t target, std::string data); + std::list proxyGetTargetInfoList(); +}; diff --git a/examples/tv-app/linux/include/tv-channel/TvChannelManager.cpp b/examples/tv-app/linux/include/tv-channel/TvChannelManager.cpp new file mode 100644 index 00000000000000..66db57f840e40c --- /dev/null +++ b/examples/tv-app/linux/include/tv-channel/TvChannelManager.cpp @@ -0,0 +1,98 @@ +/** + * + * Copyright (c) 2021 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "TvChannelManager.h" + +#include "gen/attribute-id.h" +#include "gen/attribute-type.h" +#include "gen/cluster-id.h" +#include "gen/command-id.h" + +#include +#include + +#include +#include + +using namespace std; + +CHIP_ERROR TvChannelManager::Init() +{ + CHIP_ERROR err = CHIP_NO_ERROR; + // TODO: Store feature map once it is supported + map featureMap; + featureMap["CL"] = true; + featureMap["LI"] = true; + + SuccessOrExit(err); +exit: + return err; +} + +EmberAfTvChannelInfo TvChannelManager::proxyChangeChannelRequest(std::string match) +{ + // TODO: Insert code here + EmberAfTvChannelInfo channel = {}; + return channel; +} + +bool TvChannelManager::proxyChangeChannelByNumberRequest(uint16_t majorNumer, uint16_t minorNumber) +{ + // TODO: Insert code here + return true; +} +bool TvChannelManager::proxySkipChannelRequest(uint16_t count) +{ + // TODO: Insert code here + return true; +} + +static void sendResponse(const char * responseName, EmberAfTvChannelInfo channelInfo) +{ + emberAfFillExternalBuffer((ZCL_CLUSTER_SPECIFIC_COMMAND | ZCL_FRAME_CONTROL_SERVER_TO_CLIENT), ZCL_TV_CHANNEL_CLUSTER_ID, + ZCL_CHANGE_CHANNEL_RESPONSE_COMMAND_ID, "uusss", channelInfo.majorNumber, channelInfo.minorNumber, + channelInfo.affiliateCallSign, channelInfo.callSign, channelInfo.name); + + EmberStatus status = emberAfSendResponse(); + if (status != EMBER_SUCCESS) + { + emberAfMediaPlaybackClusterPrintln("Failed to send %s: 0x%X", responseName, status); + } +} + +bool emberAfTvChannelClusterChangeChannelCallback(char * match) +{ + EmberAfTvChannelInfo channelInfo = TvChannelManager().proxyChangeChannelRequest(match); + sendResponse("ChangeChannel", channelInfo); + return true; +} + +bool emberAfTvChannelClusterChangeChannelByNumberCallback(unsigned short majorNumber, unsigned short minorNumber) +{ + bool success = TvChannelManager().proxyChangeChannelByNumberRequest(majorNumber, minorNumber); + EmberAfStatus status = success ? EMBER_ZCL_STATUS_SUCCESS : EMBER_ZCL_STATUS_FAILURE; + emberAfSendImmediateDefaultResponse(status); + return true; +} + +bool emberAfTvChannelClusterSkipChannelCallback(unsigned short count) +{ + bool success = TvChannelManager().proxySkipChannelRequest(count); + EmberAfStatus status = success ? EMBER_ZCL_STATUS_SUCCESS : EMBER_ZCL_STATUS_FAILURE; + emberAfSendImmediateDefaultResponse(status); + return true; +} diff --git a/examples/tv-app/linux/include/tv-channel/TvChannelManager.h b/examples/tv-app/linux/include/tv-channel/TvChannelManager.h new file mode 100644 index 00000000000000..02928c0024da65 --- /dev/null +++ b/examples/tv-app/linux/include/tv-channel/TvChannelManager.h @@ -0,0 +1,32 @@ +/** + * + * Copyright (c) 2021 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include "gen/af-structs.h" + +#include +#include + +class TvChannelManager +{ +public: + CHIP_ERROR Init(); + EmberAfTvChannelInfo proxyChangeChannelRequest(std::string match); + bool proxyChangeChannelByNumberRequest(uint16_t majorNumer, uint16_t minorNumber); + bool proxySkipChannelRequest(uint16_t count); +}; diff --git a/examples/tv-app/linux/include/wake-on-lan/WakeOnLanManager.cpp b/examples/tv-app/linux/include/wake-on-lan/WakeOnLanManager.cpp new file mode 100644 index 00000000000000..57646f80cea0e4 --- /dev/null +++ b/examples/tv-app/linux/include/wake-on-lan/WakeOnLanManager.cpp @@ -0,0 +1,66 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "WakeOnLanManager.h" + +#include "gen/attribute-id.h" +#include "gen/attribute-type.h" +#include "gen/cluster-id.h" +#include "gen/command-id.h" + +#include +#include + +#include + +#include +#include +#include +using namespace std; + +CHIP_ERROR WakeOnLanManager::Init() +{ + CHIP_ERROR err = CHIP_NO_ERROR; + EndpointConfigurationStorage & endpointConfiguration = EndpointConfigurationStorage::GetInstance(); + err = endpointConfiguration.Init(); + SuccessOrExit(err); + es = &endpointConfiguration; +exit: + return err; +} + +void WakeOnLanManager::store(chip::EndpointId endpoint, char macAddress[17]) +{ + EmberAfStatus macAddressStatus = + emberAfWriteServerAttribute(endpoint, ZCL_WAKE_ON_LAN_CLUSTER_ID, ZCL_WAKE_ON_LAN_MAC_ADDRESS_ATTRIBUTE_ID, + (uint8_t *) &macAddress, ZCL_CHAR_STRING_ATTRIBUTE_TYPE); + assert(macAddressStatus == EMBER_ZCL_STATUS_SUCCESS); +} + +void WakeOnLanManager::setMacAddress(chip::EndpointId endpoint, char * macAddress) +{ + char address[17]; + uint16_t size = static_cast(sizeof(address)); + + string section = "endpoint" + std::to_string(endpoint); + CHIP_ERROR err = es->get(section, "macAddress", macAddress, size); + if (err != CHIP_NO_ERROR) + { + emberAfWakeOnLanClusterPrintln("Failed to get app catalog mac address. ERR:%s", chip::ErrorStr(err)); + } +} diff --git a/examples/tv-app/linux/include/wake-on-lan/WakeOnLanManager.h b/examples/tv-app/linux/include/wake-on-lan/WakeOnLanManager.h new file mode 100644 index 00000000000000..9ef7983f1af7ee --- /dev/null +++ b/examples/tv-app/linux/include/wake-on-lan/WakeOnLanManager.h @@ -0,0 +1,41 @@ +/* + * + * Copyright (c) 2021 Project CHIP Authors + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include +#include + +#include "../endpoint-configuration/EndpointConfigurationStorage.h" + +class WakeOnLanManager +{ +public: + CHIP_ERROR Init(); + void store(chip::EndpointId endpoint, char macAddress[17]); + void setMacAddress(chip::EndpointId endpoint, char * macAddress); + + static WakeOnLanManager & GetInstance() + { + static WakeOnLanManager instance; + return instance; + } + +private: + EndpointConfigurationStorage * es = nullptr; +}; diff --git a/examples/tv-app/linux/main.cpp b/examples/tv-app/linux/main.cpp index 43cda5507b5a24..64bd0db8a7ef6c 100644 --- a/examples/tv-app/linux/main.cpp +++ b/examples/tv-app/linux/main.cpp @@ -35,13 +35,19 @@ #include "AppMain.h" +#include #include -#include "include/application-basic/ApplicationBasicManager.h" -#include "include/endpoint-configuration/EndpointConfigurationStorage.h" +#include "include/application-launcher/ApplicationLauncherManager.h" +#include "include/audio-output/AudioOutputManager.h" +#include "include/content-launcher/ContentLauncherManager.h" +#include "include/keypad-input/KeypadInputManager.h" +#include "include/media-input/MediaInputManager.h" +#include "include/media-playback/MediaPlaybackManager.h" +#include "include/target-navigator/TargetNavigatorManager.h" +#include "include/tv-channel/TvChannelManager.h" using namespace chip; -using namespace chip::Inet; using namespace chip::Transport; using namespace chip::DeviceLayer; @@ -57,7 +63,48 @@ bool emberAfBasicClusterMfgSpecificPingCallback(chip::app::Command * commandObj) int main(int argc, char * argv[]) { + CHIP_ERROR err = CHIP_NO_ERROR; + + // Init Keypad Input manager + err = KeypadInputManager().Init(); + SuccessOrExit(err); + + // Init Application Launcher Manager + err = ApplicationLauncherManager().Init(); + SuccessOrExit(err); + + // Init Audio Output Manager + err = AudioOutputManager().Init(); + SuccessOrExit(err); + + // Init Content Launcher Manager + err = ContentLauncherManager().Init(); + SuccessOrExit(err); + + // Init Media Input Manager + err = MediaInputManager().Init(); + SuccessOrExit(err); + + // Init Media Playback Manager + err = MediaPlaybackManager().Init(); + SuccessOrExit(err); + + // Init Target Navigator Manager + err = TargetNavigatorManager().Init(); + SuccessOrExit(err); + + // Init Tv Channel Manager + err = TvChannelManager().Init(); + SuccessOrExit(err); + VerifyOrDie(ChipLinuxAppInit(argc, argv) == 0); ChipLinuxAppMainLoop(); +exit: + if (err != CHIP_NO_ERROR) + { + std::cerr << "Failed to run TV App: " << ErrorStr(err) << std::endl; + // End the program with non zero error code to indicate a error. + return 1; + } return 0; } diff --git a/examples/tv-app/tv-common/gen/IMClusterCommandHandler.cpp b/examples/tv-app/tv-common/gen/IMClusterCommandHandler.cpp index 41c0a303b40113..55d9dba3be7e88 100644 --- a/examples/tv-app/tv-common/gen/IMClusterCommandHandler.cpp +++ b/examples/tv-app/tv-common/gen/IMClusterCommandHandler.cpp @@ -39,38 +39,39 @@ namespace app { namespace clusters { -namespace BarrierControl { +namespace AccountLogin { void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) { { switch (aCommandId) { - case ZCL_BARRIER_CONTROL_GO_TO_PERCENT_COMMAND_ID: { + case ZCL_GET_SETUP_PIN_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t percentOpen; - bool percentOpenExists = false; - uint32_t validArgumentCount = 0; + const uint8_t * tempAccountIdentifier; + bool tempAccountIdentifierExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (percentOpenExists) + if (tempAccountIdentifierExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(percentOpen); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(tempAccountIdentifier); if (CHIP_NO_ERROR == TLVUnpackError) { - percentOpenExists = true; + tempAccountIdentifierExists = true; validArgumentCount++; } break; @@ -101,7 +102,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfBarrierControlClusterBarrierControlGoToPercentCallback(apCommandObj, percentOpen); + emberAfAccountLoginClusterGetSetupPINCallback(apCommandObj, const_cast(tempAccountIdentifier)); } else { @@ -113,66 +114,16 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_BARRIER_CONTROL_STOP_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfBarrierControlClusterBarrierControlStopCallback(apCommandObj); - break; - } - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_BARRIER_CONTROL_CLUSTER_ID); - break; - } - } - } -} - -} // namespace BarrierControl - -namespace Basic { - -void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_BASIC_CLUSTER_ID); - break; - } - } - } -} - -} // namespace Basic - -namespace Binding { - -void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - case ZCL_BIND_COMMAND_ID: { + case ZCL_LOGIN_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - chip::NodeId nodeId; - bool nodeIdExists = false; - chip::GroupId groupId; - bool groupIdExists = false; - chip::EndpointId endpointId; - bool endpointIdExists = false; - chip::ClusterId clusterId; - bool clusterIdExists = false; + const uint8_t * tempAccountIdentifier; + bool tempAccountIdentifierExists = false; + const uint8_t * setupPIN; + bool setupPINExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -180,58 +131,32 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (nodeIdExists) + if (tempAccountIdentifierExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(nodeId); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(tempAccountIdentifier); if (CHIP_NO_ERROR == TLVUnpackError) { - nodeIdExists = true; + tempAccountIdentifierExists = true; validArgumentCount++; } break; case 1: - if (groupIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(groupId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - groupIdExists = true; - validArgumentCount++; - } - break; - case 2: - if (endpointIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(endpointId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - endpointIdExists = true; - validArgumentCount++; - } - break; - case 3: - if (clusterIdExists) + if (setupPINExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(clusterId); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(setupPIN); if (CHIP_NO_ERROR == TLVUnpackError) { - clusterIdExists = true; + setupPINExists = true; validArgumentCount++; } break; @@ -259,10 +184,11 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfBindingClusterBindCallback(apCommandObj, nodeId, groupId, endpointId, clusterId); + emberAfAccountLoginClusterLoginCallback(apCommandObj, const_cast(tempAccountIdentifier), + const_cast(setupPIN)); } else { @@ -270,24 +196,40 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 4, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_UNBIND_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_ACCOUNT_LOGIN_CLUSTER_ID); + break; + } + } + } +} + +} // namespace AccountLogin + +namespace ApplicationLauncher { + +void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_LAUNCH_APP_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - chip::NodeId nodeId; - bool nodeIdExists = false; - chip::GroupId groupId; - bool groupIdExists = false; - chip::EndpointId endpointId; - bool endpointIdExists = false; - chip::ClusterId clusterId; - bool clusterIdExists = false; + const uint8_t * data; + bool dataExists = false; + /* TYPE WARNING: array array defaults to */ uint8_t * application; + bool applicationExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -295,58 +237,32 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (nodeIdExists) + if (dataExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(nodeId); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(data); if (CHIP_NO_ERROR == TLVUnpackError) { - nodeIdExists = true; + dataExists = true; validArgumentCount++; } break; case 1: - if (groupIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(groupId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - groupIdExists = true; - validArgumentCount++; - } - break; - case 2: - if (endpointIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(endpointId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - endpointIdExists = true; - validArgumentCount++; - } - break; - case 3: - if (clusterIdExists) + if (applicationExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(clusterId); + // Just for compatibility, we will add array type support in IM later. + TLVUnpackError = aDataTlv.GetDataPtr(const_cast(application)); if (CHIP_NO_ERROR == TLVUnpackError) { - clusterIdExists = true; + applicationExists = true; validArgumentCount++; } break; @@ -374,10 +290,10 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfBindingClusterUnbindCallback(apCommandObj, nodeId, groupId, endpointId, clusterId); + emberAfApplicationLauncherClusterLaunchAppCallback(apCommandObj, const_cast(data), application); } else { @@ -385,7 +301,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 4, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } @@ -393,36 +309,32 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En // Unrecognized command ID, error status will apply. apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_BINDING_CLUSTER_ID); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_APPLICATION_LAUNCHER_CLUSTER_ID); break; } } } } -} // namespace Binding +} // namespace ApplicationLauncher -namespace ColorControl { +namespace AudioOutput { void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) { { switch (aCommandId) { - case ZCL_MOVE_COLOR_COMMAND_ID: { + case ZCL_RENAME_OUTPUT_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - int16_t rateX; - bool rateXExists = false; - int16_t rateY; - bool rateYExists = false; - uint8_t optionsMask; - bool optionsMaskExists = false; - uint8_t optionsOverride; - bool optionsOverrideExists = false; + uint8_t index; + bool indexExists = false; + const uint8_t * name; + bool nameExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -430,58 +342,31 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (rateXExists) + if (indexExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(rateX); + TLVUnpackError = aDataTlv.Get(index); if (CHIP_NO_ERROR == TLVUnpackError) { - rateXExists = true; + indexExists = true; validArgumentCount++; } break; case 1: - if (rateYExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(rateY); - if (CHIP_NO_ERROR == TLVUnpackError) - { - rateYExists = true; - validArgumentCount++; - } - break; - case 2: - if (optionsMaskExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(optionsMask); - if (CHIP_NO_ERROR == TLVUnpackError) - { - optionsMaskExists = true; - validArgumentCount++; - } - break; - case 3: - if (optionsOverrideExists) + if (nameExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(optionsOverride); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(name); if (CHIP_NO_ERROR == TLVUnpackError) { - optionsOverrideExists = true; + nameExists = true; validArgumentCount++; } break; @@ -509,10 +394,10 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfColorControlClusterMoveColorCallback(apCommandObj, rateX, rateY, optionsMask, optionsOverride); + emberAfAudioOutputClusterRenameOutputCallback(apCommandObj, index, const_cast(name)); } else { @@ -520,28 +405,18 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 4, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_MOVE_COLOR_TEMPERATURE_COMMAND_ID: { + case ZCL_SELECT_OUTPUT_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t moveMode; - bool moveModeExists = false; - uint16_t rate; - bool rateExists = false; - uint16_t colorTemperatureMinimum; - bool colorTemperatureMinimumExists = false; - uint16_t colorTemperatureMaximum; - bool colorTemperatureMaximumExists = false; - uint8_t optionsMask; - bool optionsMaskExists = false; - uint8_t optionsOverride; - bool optionsOverrideExists = false; + uint8_t index; + bool indexExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -549,98 +424,28 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (moveModeExists) + if (indexExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(moveMode); + TLVUnpackError = aDataTlv.Get(index); if (CHIP_NO_ERROR == TLVUnpackError) { - moveModeExists = true; + indexExists = true; validArgumentCount++; } break; - case 1: - if (rateExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(rate); - if (CHIP_NO_ERROR == TLVUnpackError) - { - rateExists = true; - validArgumentCount++; - } + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); break; - case 2: - if (colorTemperatureMinimumExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(colorTemperatureMinimum); - if (CHIP_NO_ERROR == TLVUnpackError) - { - colorTemperatureMinimumExists = true; - validArgumentCount++; - } - break; - case 3: - if (colorTemperatureMaximumExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(colorTemperatureMaximum); - if (CHIP_NO_ERROR == TLVUnpackError) - { - colorTemperatureMaximumExists = true; - validArgumentCount++; - } - break; - case 4: - if (optionsMaskExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(optionsMask); - if (CHIP_NO_ERROR == TLVUnpackError) - { - optionsMaskExists = true; - validArgumentCount++; - } - break; - case 5: - if (optionsOverrideExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(optionsOverride); - if (CHIP_NO_ERROR == TLVUnpackError) - { - optionsOverrideExists = true; - validArgumentCount++; - } - break; - default: - // Unsupported tag, ignore it. - ChipLogProgress(Zcl, "Unknown TLV tag during processing."); - break; - } - if (TLVUnpackError != CHIP_NO_ERROR) - { - ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, - TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); break; } } @@ -656,11 +461,10 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 6 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfColorControlClusterMoveColorTemperatureCallback(apCommandObj, moveMode, rate, colorTemperatureMinimum, - colorTemperatureMaximum, optionsMask, optionsOverride); + emberAfAudioOutputClusterSelectOutputCallback(apCommandObj, index); } else { @@ -668,24 +472,44 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 6, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_MOVE_HUE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_AUDIO_OUTPUT_CLUSTER_ID); + break; + } + } + } +} + +} // namespace AudioOutput + +namespace Binding { + +void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_BIND_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t moveMode; - bool moveModeExists = false; - uint8_t rate; - bool rateExists = false; - uint8_t optionsMask; - bool optionsMaskExists = false; - uint8_t optionsOverride; - bool optionsOverrideExists = false; + chip::NodeId nodeId; + bool nodeIdExists = false; + chip::GroupId groupId; + bool groupIdExists = false; + chip::EndpointId endpointId; + bool endpointIdExists = false; + chip::ClusterId clusterId; + bool clusterIdExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -693,58 +517,58 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (moveModeExists) + if (nodeIdExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(moveMode); + TLVUnpackError = aDataTlv.Get(nodeId); if (CHIP_NO_ERROR == TLVUnpackError) { - moveModeExists = true; + nodeIdExists = true; validArgumentCount++; } break; case 1: - if (rateExists) + if (groupIdExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(rate); + TLVUnpackError = aDataTlv.Get(groupId); if (CHIP_NO_ERROR == TLVUnpackError) { - rateExists = true; + groupIdExists = true; validArgumentCount++; } break; case 2: - if (optionsMaskExists) + if (endpointIdExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(optionsMask); + TLVUnpackError = aDataTlv.Get(endpointId); if (CHIP_NO_ERROR == TLVUnpackError) { - optionsMaskExists = true; + endpointIdExists = true; validArgumentCount++; } break; case 3: - if (optionsOverrideExists) + if (clusterIdExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(optionsOverride); + TLVUnpackError = aDataTlv.Get(clusterId); if (CHIP_NO_ERROR == TLVUnpackError) { - optionsOverrideExists = true; + clusterIdExists = true; validArgumentCount++; } break; @@ -775,7 +599,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfColorControlClusterMoveHueCallback(apCommandObj, moveMode, rate, optionsMask, optionsOverride); + emberAfBindingClusterBindCallback(apCommandObj, nodeId, groupId, endpointId, clusterId); } else { @@ -787,20 +611,20 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_MOVE_SATURATION_COMMAND_ID: { + case ZCL_UNBIND_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t moveMode; - bool moveModeExists = false; - uint8_t rate; - bool rateExists = false; - uint8_t optionsMask; - bool optionsMaskExists = false; - uint8_t optionsOverride; - bool optionsOverrideExists = false; + chip::NodeId nodeId; + bool nodeIdExists = false; + chip::GroupId groupId; + bool groupIdExists = false; + chip::EndpointId endpointId; + bool endpointIdExists = false; + chip::ClusterId clusterId; + bool clusterIdExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -808,58 +632,58 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (moveModeExists) + if (nodeIdExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(moveMode); + TLVUnpackError = aDataTlv.Get(nodeId); if (CHIP_NO_ERROR == TLVUnpackError) { - moveModeExists = true; + nodeIdExists = true; validArgumentCount++; } break; case 1: - if (rateExists) + if (groupIdExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(rate); + TLVUnpackError = aDataTlv.Get(groupId); if (CHIP_NO_ERROR == TLVUnpackError) { - rateExists = true; + groupIdExists = true; validArgumentCount++; } break; case 2: - if (optionsMaskExists) + if (endpointIdExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(optionsMask); + TLVUnpackError = aDataTlv.Get(endpointId); if (CHIP_NO_ERROR == TLVUnpackError) { - optionsMaskExists = true; + endpointIdExists = true; validArgumentCount++; } break; case 3: - if (optionsOverrideExists) + if (clusterIdExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(optionsOverride); + TLVUnpackError = aDataTlv.Get(clusterId); if (CHIP_NO_ERROR == TLVUnpackError) { - optionsOverrideExists = true; + clusterIdExists = true; validArgumentCount++; } break; @@ -890,7 +714,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfColorControlClusterMoveSaturationCallback(apCommandObj, moveMode, rate, optionsMask, optionsOverride); + emberAfBindingClusterUnbindCallback(apCommandObj, nodeId, groupId, endpointId, clusterId); } else { @@ -902,18 +726,40 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_MOVE_TO_COLOR_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_BINDING_CLUSTER_ID); + break; + } + } + } +} + +} // namespace Binding + +namespace ColorControl { + +void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_MOVE_COLOR_TEMPERATURE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t colorX; - bool colorXExists = false; - uint16_t colorY; - bool colorYExists = false; - uint16_t transitionTime; - bool transitionTimeExists = false; + uint8_t moveMode; + bool moveModeExists = false; + uint16_t rate; + bool rateExists = false; + uint16_t colorTemperatureMinimum; + bool colorTemperatureMinimumExists = false; + uint16_t colorTemperatureMaximum; + bool colorTemperatureMaximumExists = false; uint8_t optionsMask; bool optionsMaskExists = false; uint8_t optionsOverride; @@ -925,48 +771,62 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (colorXExists) + if (moveModeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(colorX); + TLVUnpackError = aDataTlv.Get(moveMode); if (CHIP_NO_ERROR == TLVUnpackError) { - colorXExists = true; + moveModeExists = true; validArgumentCount++; } break; case 1: - if (colorYExists) + if (rateExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(colorY); + TLVUnpackError = aDataTlv.Get(rate); if (CHIP_NO_ERROR == TLVUnpackError) { - colorYExists = true; + rateExists = true; validArgumentCount++; } break; case 2: - if (transitionTimeExists) + if (colorTemperatureMinimumExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(transitionTime); + TLVUnpackError = aDataTlv.Get(colorTemperatureMinimum); if (CHIP_NO_ERROR == TLVUnpackError) { - transitionTimeExists = true; + colorTemperatureMinimumExists = true; validArgumentCount++; } break; case 3: + if (colorTemperatureMaximumExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(colorTemperatureMaximum); + if (CHIP_NO_ERROR == TLVUnpackError) + { + colorTemperatureMaximumExists = true; + validArgumentCount++; + } + break; + case 4: if (optionsMaskExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); @@ -980,7 +840,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; - case 4: + case 5: if (optionsOverrideExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); @@ -1018,11 +878,11 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 5 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 6 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfColorControlClusterMoveToColorCallback(apCommandObj, colorX, colorY, transitionTime, optionsMask, - optionsOverride); + emberAfColorControlClusterMoveColorTemperatureCallback(apCommandObj, moveMode, rate, colorTemperatureMinimum, + colorTemperatureMaximum, optionsMask, optionsOverride); } else { @@ -1030,20 +890,20 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 5, validArgumentCount, TLVError, TLVUnpackError); + 6, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_MOVE_TO_COLOR_TEMPERATURE_COMMAND_ID: { + case ZCL_MOVE_HUE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t colorTemperature; - bool colorTemperatureExists = false; - uint16_t transitionTime; - bool transitionTimeExists = false; + uint8_t moveMode; + bool moveModeExists = false; + uint8_t rate; + bool rateExists = false; uint8_t optionsMask; bool optionsMaskExists = false; uint8_t optionsOverride; @@ -1055,30 +915,30 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (colorTemperatureExists) + if (moveModeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(colorTemperature); + TLVUnpackError = aDataTlv.Get(moveMode); if (CHIP_NO_ERROR == TLVUnpackError) { - colorTemperatureExists = true; + moveModeExists = true; validArgumentCount++; } break; case 1: - if (transitionTimeExists) + if (rateExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(transitionTime); + TLVUnpackError = aDataTlv.Get(rate); if (CHIP_NO_ERROR == TLVUnpackError) { - transitionTimeExists = true; + rateExists = true; validArgumentCount++; } break; @@ -1137,8 +997,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfColorControlClusterMoveToColorTemperatureCallback(apCommandObj, colorTemperature, transitionTime, - optionsMask, optionsOverride); + emberAfColorControlClusterMoveHueCallback(apCommandObj, moveMode, rate, optionsMask, optionsOverride); } else { @@ -1150,20 +1009,18 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_MOVE_TO_HUE_COMMAND_ID: { + case ZCL_MOVE_SATURATION_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t hue; - bool hueExists = false; - uint8_t direction; - bool directionExists = false; - uint16_t transitionTime; - bool transitionTimeExists = false; - uint8_t optionsMask; - bool optionsMaskExists = false; + uint8_t moveMode; + bool moveModeExists = false; + uint8_t rate; + bool rateExists = false; + uint8_t optionsMask; + bool optionsMaskExists = false; uint8_t optionsOverride; bool optionsOverrideExists = false; uint32_t validArgumentCount = 0; @@ -1173,34 +1030,135 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (hueExists) + if (moveModeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(hue); + TLVUnpackError = aDataTlv.Get(moveMode); if (CHIP_NO_ERROR == TLVUnpackError) { - hueExists = true; + moveModeExists = true; validArgumentCount++; } break; case 1: - if (directionExists) + if (rateExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(direction); + TLVUnpackError = aDataTlv.Get(rate); if (CHIP_NO_ERROR == TLVUnpackError) { - directionExists = true; + rateExists = true; validArgumentCount++; } break; case 2: + if (optionsMaskExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(optionsMask); + if (CHIP_NO_ERROR == TLVUnpackError) + { + optionsMaskExists = true; + validArgumentCount++; + } + break; + case 3: + if (optionsOverrideExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(optionsOverride); + if (CHIP_NO_ERROR == TLVUnpackError) + { + optionsOverrideExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfColorControlClusterMoveSaturationCallback(apCommandObj, moveMode, rate, optionsMask, optionsOverride); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 4, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_MOVE_TO_COLOR_TEMPERATURE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint16_t colorTemperature; + bool colorTemperatureExists = false; + uint16_t transitionTime; + bool transitionTimeExists = false; + uint8_t optionsMask; + bool optionsMaskExists = false; + uint8_t optionsOverride; + bool optionsOverrideExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (colorTemperatureExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(colorTemperature); + if (CHIP_NO_ERROR == TLVUnpackError) + { + colorTemperatureExists = true; + validArgumentCount++; + } + break; + case 1: if (transitionTimeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); @@ -1214,7 +1172,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; - case 3: + case 2: if (optionsMaskExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); @@ -1228,7 +1186,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; - case 4: + case 3: if (optionsOverrideExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); @@ -1266,11 +1224,11 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 5 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfColorControlClusterMoveToHueCallback(apCommandObj, hue, direction, transitionTime, optionsMask, - optionsOverride); + emberAfColorControlClusterMoveToColorTemperatureCallback(apCommandObj, colorTemperature, transitionTime, + optionsMask, optionsOverride); } else { @@ -1278,11 +1236,11 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 5, validArgumentCount, TLVError, TLVUnpackError); + 4, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID: { + case ZCL_MOVE_TO_HUE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. @@ -1290,8 +1248,8 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; uint8_t hue; bool hueExists = false; - uint8_t saturation; - bool saturationExists = false; + uint8_t direction; + bool directionExists = false; uint16_t transitionTime; bool transitionTimeExists = false; uint8_t optionsMask; @@ -1319,16 +1277,16 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; case 1: - if (saturationExists) + if (directionExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(saturation); + TLVUnpackError = aDataTlv.Get(direction); if (CHIP_NO_ERROR == TLVUnpackError) { - saturationExists = true; + directionExists = true; validArgumentCount++; } break; @@ -1401,8 +1359,8 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 5 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfColorControlClusterMoveToHueAndSaturationCallback(apCommandObj, hue, saturation, transitionTime, optionsMask, - optionsOverride); + emberAfColorControlClusterMoveToHueCallback(apCommandObj, hue, direction, transitionTime, optionsMask, + optionsOverride); } else { @@ -1414,12 +1372,14 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_MOVE_TO_SATURATION_COMMAND_ID: { + case ZCL_MOVE_TO_HUE_AND_SATURATION_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t hue; + bool hueExists = false; uint8_t saturation; bool saturationExists = false; uint16_t transitionTime; @@ -1435,6 +1395,20 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: + if (hueExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(hue); + if (CHIP_NO_ERROR == TLVUnpackError) + { + hueExists = true; + validArgumentCount++; + } + break; + case 1: if (saturationExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); @@ -1448,7 +1422,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; - case 1: + case 2: if (transitionTimeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); @@ -1462,7 +1436,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; - case 2: + case 3: if (optionsMaskExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); @@ -1476,7 +1450,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; - case 3: + case 4: if (optionsOverrideExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); @@ -1514,11 +1488,11 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 5 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfColorControlClusterMoveToSaturationCallback(apCommandObj, saturation, transitionTime, optionsMask, - optionsOverride); + emberAfColorControlClusterMoveToHueAndSaturationCallback(apCommandObj, hue, saturation, transitionTime, optionsMask, + optionsOverride); } else { @@ -1526,20 +1500,18 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 4, validArgumentCount, TLVError, TLVUnpackError); + 5, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_STEP_COLOR_COMMAND_ID: { + case ZCL_MOVE_TO_SATURATION_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - int16_t stepX; - bool stepXExists = false; - int16_t stepY; - bool stepYExists = false; + uint8_t saturation; + bool saturationExists = false; uint16_t transitionTime; bool transitionTimeExists = false; uint8_t optionsMask; @@ -1553,34 +1525,20 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (stepXExists) + if (saturationExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(stepX); + TLVUnpackError = aDataTlv.Get(saturation); if (CHIP_NO_ERROR == TLVUnpackError) { - stepXExists = true; + saturationExists = true; validArgumentCount++; } break; case 1: - if (stepYExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(stepY); - if (CHIP_NO_ERROR == TLVUnpackError) - { - stepYExists = true; - validArgumentCount++; - } - break; - case 2: if (transitionTimeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); @@ -1594,7 +1552,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; - case 3: + case 2: if (optionsMaskExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); @@ -1608,7 +1566,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; - case 4: + case 3: if (optionsOverrideExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); @@ -1646,11 +1604,11 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 5 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfColorControlClusterStepColorCallback(apCommandObj, stepX, stepY, transitionTime, optionsMask, - optionsOverride); + emberAfColorControlClusterMoveToSaturationCallback(apCommandObj, saturation, transitionTime, optionsMask, + optionsOverride); } else { @@ -1658,7 +1616,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 5, validArgumentCount, TLVError, TLVUnpackError); + 4, validArgumentCount, TLVError, TLVUnpackError); } break; } @@ -2195,57 +2153,15 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (aCommandId) { case ZCL_LAUNCH_CONTENT_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfContentLaunchClusterLaunchContentCallback(apCommandObj); - break; - } - case ZCL_LAUNCH_URL_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfContentLaunchClusterLaunchURLCallback(apCommandObj); - break; - } - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_CONTENT_LAUNCH_CLUSTER_ID); - break; - } - } - } -} - -} // namespace ContentLaunch - -namespace DoorLock { - -void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - case ZCL_CLEAR_ALL_PINS_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearAllPinsCallback(apCommandObj); - break; - } - case ZCL_CLEAR_ALL_RFIDS_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearAllRfidsCallback(apCommandObj); - break; - } - case ZCL_CLEAR_HOLIDAY_SCHEDULE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t scheduleId; - bool scheduleIdExists = false; + uint8_t autoPlay; + bool autoPlayExists = false; + const uint8_t * data; + bool dataExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -2253,21 +2169,221 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (scheduleIdExists) + if (autoPlayExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(scheduleId); + TLVUnpackError = aDataTlv.Get(autoPlay); if (CHIP_NO_ERROR == TLVUnpackError) { - scheduleIdExists = true; + autoPlayExists = true; validArgumentCount++; } break; - default: - // Unsupported tag, ignore it. + case 1: + if (dataExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(data); + if (CHIP_NO_ERROR == TLVUnpackError) + { + dataExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfContentLaunchClusterLaunchContentCallback(apCommandObj, autoPlay, const_cast(data)); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 2, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_LAUNCH_URL_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + const uint8_t * contentURL; + bool contentURLExists = false; + const uint8_t * displayString; + bool displayStringExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (contentURLExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(contentURL); + if (CHIP_NO_ERROR == TLVUnpackError) + { + contentURLExists = true; + validArgumentCount++; + } + break; + case 1: + if (displayStringExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(displayString); + if (CHIP_NO_ERROR == TLVUnpackError) + { + displayStringExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfContentLaunchClusterLaunchURLCallback(apCommandObj, const_cast(contentURL), + const_cast(displayString)); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 2, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_CONTENT_LAUNCH_CLUSTER_ID); + break; + } + } + } +} + +} // namespace ContentLaunch + +namespace DoorLock { + +void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_CLEAR_ALL_PINS_COMMAND_ID: { + + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterClearAllPinsCallback(apCommandObj); + break; + } + case ZCL_CLEAR_ALL_RFIDS_COMMAND_ID: { + + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterClearAllRfidsCallback(apCommandObj); + break; + } + case ZCL_CLEAR_HOLIDAY_SCHEDULE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t scheduleId; + bool scheduleIdExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (scheduleIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(scheduleId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + scheduleIdExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. ChipLogProgress(Zcl, "Unknown TLV tag during processing."); break; } @@ -3106,74 +3222,6 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_LOCK_DOOR_COMMAND_ID: { - // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV - // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. - // Any error value TLVUnpackError means we have received an illegal value. - CHIP_ERROR TLVError = CHIP_NO_ERROR; - CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - const uint8_t * PIN; - bool PINExists = false; - uint32_t validArgumentCount = 0; - - while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) - { - switch (TLV::TagNumFromTag(aDataTlv.GetTag())) - { - case 0: - if (PINExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(PIN); - if (CHIP_NO_ERROR == TLVUnpackError) - { - PINExists = true; - validArgumentCount++; - } - break; - default: - // Unsupported tag, ignore it. - ChipLogProgress(Zcl, "Unknown TLV tag during processing."); - break; - } - if (TLVUnpackError != CHIP_NO_ERROR) - { - ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, - TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); - break; - } - } - - if (CHIP_END_OF_TLV == TLVError) - { - // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. - TLVError = CHIP_NO_ERROR; - } - else - { - ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); - } - - // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) - { - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterLockDoorCallback(apCommandObj, const_cast(PIN)); - } - else - { - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogProgress( - Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); - } - break; - } case ZCL_SET_HOLIDAY_SCHEDULE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. @@ -3884,14 +3932,16 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_UNLOCK_DOOR_COMMAND_ID: { + case ZCL_UNLOCK_WITH_TIMEOUT_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - const uint8_t * PIN; - bool PINExists = false; + uint16_t timeoutInSeconds; + bool timeoutInSecondsExists = false; + const uint8_t * pin; + bool pinExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -3899,86 +3949,16 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (PINExists) + if (timeoutInSecondsExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(PIN); + TLVUnpackError = aDataTlv.Get(timeoutInSeconds); if (CHIP_NO_ERROR == TLVUnpackError) { - PINExists = true; - validArgumentCount++; - } - break; - default: - // Unsupported tag, ignore it. - ChipLogProgress(Zcl, "Unknown TLV tag during processing."); - break; - } - if (TLVUnpackError != CHIP_NO_ERROR) - { - ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, - TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); - break; - } - } - - if (CHIP_END_OF_TLV == TLVError) - { - // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. - TLVError = CHIP_NO_ERROR; - } - else - { - ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); - } - - // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) - { - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterUnlockDoorCallback(apCommandObj, const_cast(PIN)); - } - else - { - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogProgress( - Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); - } - break; - } - case ZCL_UNLOCK_WITH_TIMEOUT_COMMAND_ID: { - // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV - // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. - // Any error value TLVUnpackError means we have received an illegal value. - CHIP_ERROR TLVError = CHIP_NO_ERROR; - CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t timeoutInSeconds; - bool timeoutInSecondsExists = false; - const uint8_t * pin; - bool pinExists = false; - uint32_t validArgumentCount = 0; - - while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) - { - switch (TLV::TagNumFromTag(aDataTlv.GetTag())) - { - case 0: - if (timeoutInSecondsExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(timeoutInSeconds); - if (CHIP_NO_ERROR == TLVUnpackError) - { - timeoutInSecondsExists = true; + timeoutInSecondsExists = true; validArgumentCount++; } break; @@ -4291,23 +4271,23 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } // namespace GeneralCommissioning -namespace Groups { +namespace IasZone { void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) { { switch (aCommandId) { - case ZCL_ADD_GROUP_COMMAND_ID: { + case ZCL_ZONE_ENROLL_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t groupId; - bool groupIdExists = false; - const uint8_t * groupName; - bool groupNameExists = false; + uint8_t enrollResponseCode; + bool enrollResponseCodeExists = false; + uint8_t zoneId; + bool zoneIdExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -4315,31 +4295,30 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (groupIdExists) + if (enrollResponseCodeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(groupId); + TLVUnpackError = aDataTlv.Get(enrollResponseCode); if (CHIP_NO_ERROR == TLVUnpackError) { - groupIdExists = true; + enrollResponseCodeExists = true; validArgumentCount++; } break; case 1: - if (groupNameExists) + if (zoneIdExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(groupName); + TLVUnpackError = aDataTlv.Get(zoneId); if (CHIP_NO_ERROR == TLVUnpackError) { - groupNameExists = true; + zoneIdExists = true; validArgumentCount++; } break; @@ -4370,7 +4349,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGroupsClusterAddGroupCallback(apCommandObj, groupId, const_cast(groupName)); + emberAfIasZoneClusterZoneEnrollResponseCallback(apCommandObj, enrollResponseCode, zoneId); } else { @@ -4382,16 +4361,34 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_ADD_GROUP_IF_IDENTIFYING_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_IAS_ZONE_CLUSTER_ID); + break; + } + } + } +} + +} // namespace IasZone + +namespace KeypadInput { + +void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_SEND_KEY_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t groupId; - bool groupIdExists = false; - const uint8_t * groupName; - bool groupNameExists = false; + uint8_t keyCode; + bool keyCodeExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -4399,31 +4396,16 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (groupIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(groupId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - groupIdExists = true; - validArgumentCount++; - } - break; - case 1: - if (groupNameExists) + if (keyCodeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(groupName); + TLVUnpackError = aDataTlv.Get(keyCode); if (CHIP_NO_ERROR == TLVUnpackError) { - groupNameExists = true; + keyCodeExists = true; validArgumentCount++; } break; @@ -4451,10 +4433,10 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGroupsClusterAddGroupIfIdentifyingCallback(apCommandObj, groupId, const_cast(groupName)); + emberAfKeypadInputClusterSendKeyCallback(apCommandObj, keyCode); } else { @@ -4462,20 +4444,72 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_GET_GROUP_MEMBERSHIP_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_KEYPAD_INPUT_CLUSTER_ID); + break; + } + } + } +} + +} // namespace KeypadInput + +namespace LowPower { + +void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_SLEEP_COMMAND_ID: { + + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfLowPowerClusterSleepCallback(apCommandObj); + break; + } + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_LOW_POWER_CLUSTER_ID); + break; + } + } + } +} + +} // namespace LowPower + +namespace MediaInput { + +void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_HIDE_INPUT_STATUS_COMMAND_ID: { + + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfMediaInputClusterHideInputStatusCallback(apCommandObj); + break; + } + case ZCL_RENAME_INPUT_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t groupCount; - bool groupCountExists = false; - /* TYPE WARNING: array array defaults to */ uint8_t * groupList; - bool groupListExists = false; + uint8_t index; + bool indexExists = false; + const uint8_t * name; + bool nameExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -4483,31 +4517,31 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (groupCountExists) + if (indexExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(groupCount); + TLVUnpackError = aDataTlv.Get(index); if (CHIP_NO_ERROR == TLVUnpackError) { - groupCountExists = true; + indexExists = true; validArgumentCount++; } break; case 1: - if (groupListExists) + if (nameExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // Just for compatibility, we will add array type support in IM later. - TLVUnpackError = aDataTlv.GetDataPtr(const_cast(groupList)); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(name); if (CHIP_NO_ERROR == TLVUnpackError) { - groupListExists = true; + nameExists = true; validArgumentCount++; } break; @@ -4538,7 +4572,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGroupsClusterGetGroupMembershipCallback(apCommandObj, groupCount, groupList); + emberAfMediaInputClusterRenameInputCallback(apCommandObj, index, const_cast(name)); } else { @@ -4550,20 +4584,14 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_REMOVE_ALL_GROUPS_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGroupsClusterRemoveAllGroupsCallback(apCommandObj); - break; - } - case ZCL_REMOVE_GROUP_COMMAND_ID: { + case ZCL_SELECT_INPUT_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t groupId; - bool groupIdExists = false; + uint8_t index; + bool indexExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -4571,16 +4599,16 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (groupIdExists) + if (indexExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(groupId); + TLVUnpackError = aDataTlv.Get(index); if (CHIP_NO_ERROR == TLVUnpackError) { - groupIdExists = true; + indexExists = true; validArgumentCount++; } break; @@ -4611,7 +4639,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGroupsClusterRemoveGroupCallback(apCommandObj, groupId); + emberAfMediaInputClusterSelectInputCallback(apCommandObj, index); } else { @@ -4623,1192 +4651,93 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_VIEW_GROUP_COMMAND_ID: { - // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV - // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. - // Any error value TLVUnpackError means we have received an illegal value. - CHIP_ERROR TLVError = CHIP_NO_ERROR; - CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t groupId; - bool groupIdExists = false; - uint32_t validArgumentCount = 0; - - while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) - { - switch (TLV::TagNumFromTag(aDataTlv.GetTag())) - { - case 0: - if (groupIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(groupId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - groupIdExists = true; - validArgumentCount++; - } - break; - default: - // Unsupported tag, ignore it. - ChipLogProgress(Zcl, "Unknown TLV tag during processing."); - break; - } - if (TLVUnpackError != CHIP_NO_ERROR) - { - ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, - TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); - break; - } - } - - if (CHIP_END_OF_TLV == TLVError) - { - // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. - TLVError = CHIP_NO_ERROR; - } - else - { - ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); - } + case ZCL_SHOW_INPUT_STATUS_COMMAND_ID: { - // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) - { - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGroupsClusterViewGroupCallback(apCommandObj, groupId); - } - else - { - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogProgress( - Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); - } + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfMediaInputClusterShowInputStatusCallback(apCommandObj); break; } default: { // Unrecognized command ID, error status will apply. apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_GROUPS_CLUSTER_ID); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_MEDIA_INPUT_CLUSTER_ID); break; } } } } -} // namespace Groups +} // namespace MediaInput -namespace IasZone { +namespace MediaPlayback { void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) { { switch (aCommandId) { - case ZCL_ZONE_ENROLL_RESPONSE_COMMAND_ID: { - // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV - // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. - // Any error value TLVUnpackError means we have received an illegal value. - CHIP_ERROR TLVError = CHIP_NO_ERROR; - CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t enrollResponseCode; - bool enrollResponseCodeExists = false; - uint8_t zoneId; - bool zoneIdExists = false; - uint32_t validArgumentCount = 0; - - while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) - { - switch (TLV::TagNumFromTag(aDataTlv.GetTag())) - { - case 0: - if (enrollResponseCodeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(enrollResponseCode); - if (CHIP_NO_ERROR == TLVUnpackError) - { - enrollResponseCodeExists = true; - validArgumentCount++; - } - break; - case 1: - if (zoneIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(zoneId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - zoneIdExists = true; - validArgumentCount++; - } - break; - default: - // Unsupported tag, ignore it. - ChipLogProgress(Zcl, "Unknown TLV tag during processing."); - break; - } - if (TLVUnpackError != CHIP_NO_ERROR) - { - ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, - TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); - break; - } - } - - if (CHIP_END_OF_TLV == TLVError) - { - // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. - TLVError = CHIP_NO_ERROR; - } - else - { - ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); - } - - // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) - { - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfIasZoneClusterZoneEnrollResponseCallback(apCommandObj, enrollResponseCode, zoneId); - } - else - { - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogProgress( - Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); - } - break; - } - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_IAS_ZONE_CLUSTER_ID); - break; - } - } - } -} - -} // namespace IasZone - -namespace Identify { - -void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - case ZCL_IDENTIFY_COMMAND_ID: { - // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV - // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. - // Any error value TLVUnpackError means we have received an illegal value. - CHIP_ERROR TLVError = CHIP_NO_ERROR; - CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t identifyTime; - bool identifyTimeExists = false; - uint32_t validArgumentCount = 0; - - while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) - { - switch (TLV::TagNumFromTag(aDataTlv.GetTag())) - { - case 0: - if (identifyTimeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(identifyTime); - if (CHIP_NO_ERROR == TLVUnpackError) - { - identifyTimeExists = true; - validArgumentCount++; - } - break; - default: - // Unsupported tag, ignore it. - ChipLogProgress(Zcl, "Unknown TLV tag during processing."); - break; - } - if (TLVUnpackError != CHIP_NO_ERROR) - { - ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, - TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); - break; - } - } - - if (CHIP_END_OF_TLV == TLVError) - { - // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. - TLVError = CHIP_NO_ERROR; - } - else - { - ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); - } - - // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) - { - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfIdentifyClusterIdentifyCallback(apCommandObj, identifyTime); - } - else - { - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogProgress( - Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); - } - break; - } - case ZCL_IDENTIFY_QUERY_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfIdentifyClusterIdentifyQueryCallback(apCommandObj); - break; - } - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_IDENTIFY_CLUSTER_ID); - break; - } - } - } -} - -} // namespace Identify - -namespace LevelControl { - -void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - case ZCL_MOVE_COMMAND_ID: { - // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV - // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. - // Any error value TLVUnpackError means we have received an illegal value. - CHIP_ERROR TLVError = CHIP_NO_ERROR; - CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t moveMode; - bool moveModeExists = false; - uint8_t rate; - bool rateExists = false; - uint8_t optionMask; - bool optionMaskExists = false; - uint8_t optionOverride; - bool optionOverrideExists = false; - uint32_t validArgumentCount = 0; - - while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) - { - switch (TLV::TagNumFromTag(aDataTlv.GetTag())) - { - case 0: - if (moveModeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(moveMode); - if (CHIP_NO_ERROR == TLVUnpackError) - { - moveModeExists = true; - validArgumentCount++; - } - break; - case 1: - if (rateExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(rate); - if (CHIP_NO_ERROR == TLVUnpackError) - { - rateExists = true; - validArgumentCount++; - } - break; - case 2: - if (optionMaskExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(optionMask); - if (CHIP_NO_ERROR == TLVUnpackError) - { - optionMaskExists = true; - validArgumentCount++; - } - break; - case 3: - if (optionOverrideExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(optionOverride); - if (CHIP_NO_ERROR == TLVUnpackError) - { - optionOverrideExists = true; - validArgumentCount++; - } - break; - default: - // Unsupported tag, ignore it. - ChipLogProgress(Zcl, "Unknown TLV tag during processing."); - break; - } - if (TLVUnpackError != CHIP_NO_ERROR) - { - ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, - TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); - break; - } - } - - if (CHIP_END_OF_TLV == TLVError) - { - // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. - TLVError = CHIP_NO_ERROR; - } - else - { - ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); - } - - // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) - { - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfLevelControlClusterMoveCallback(apCommandObj, moveMode, rate, optionMask, optionOverride); - } - else - { - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogProgress( - Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 4, validArgumentCount, TLVError, TLVUnpackError); - } - break; - } - case ZCL_MOVE_TO_LEVEL_COMMAND_ID: { - // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV - // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. - // Any error value TLVUnpackError means we have received an illegal value. - CHIP_ERROR TLVError = CHIP_NO_ERROR; - CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t level; - bool levelExists = false; - uint16_t transitionTime; - bool transitionTimeExists = false; - uint8_t optionMask; - bool optionMaskExists = false; - uint8_t optionOverride; - bool optionOverrideExists = false; - uint32_t validArgumentCount = 0; - - while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) - { - switch (TLV::TagNumFromTag(aDataTlv.GetTag())) - { - case 0: - if (levelExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(level); - if (CHIP_NO_ERROR == TLVUnpackError) - { - levelExists = true; - validArgumentCount++; - } - break; - case 1: - if (transitionTimeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(transitionTime); - if (CHIP_NO_ERROR == TLVUnpackError) - { - transitionTimeExists = true; - validArgumentCount++; - } - break; - case 2: - if (optionMaskExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(optionMask); - if (CHIP_NO_ERROR == TLVUnpackError) - { - optionMaskExists = true; - validArgumentCount++; - } - break; - case 3: - if (optionOverrideExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(optionOverride); - if (CHIP_NO_ERROR == TLVUnpackError) - { - optionOverrideExists = true; - validArgumentCount++; - } - break; - default: - // Unsupported tag, ignore it. - ChipLogProgress(Zcl, "Unknown TLV tag during processing."); - break; - } - if (TLVUnpackError != CHIP_NO_ERROR) - { - ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, - TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); - break; - } - } - - if (CHIP_END_OF_TLV == TLVError) - { - // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. - TLVError = CHIP_NO_ERROR; - } - else - { - ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); - } - - // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) - { - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfLevelControlClusterMoveToLevelCallback(apCommandObj, level, transitionTime, optionMask, optionOverride); - } - else - { - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogProgress( - Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 4, validArgumentCount, TLVError, TLVUnpackError); - } - break; - } - case ZCL_MOVE_TO_LEVEL_WITH_ON_OFF_COMMAND_ID: { - // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV - // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. - // Any error value TLVUnpackError means we have received an illegal value. - CHIP_ERROR TLVError = CHIP_NO_ERROR; - CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t level; - bool levelExists = false; - uint16_t transitionTime; - bool transitionTimeExists = false; - uint32_t validArgumentCount = 0; - - while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) - { - switch (TLV::TagNumFromTag(aDataTlv.GetTag())) - { - case 0: - if (levelExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(level); - if (CHIP_NO_ERROR == TLVUnpackError) - { - levelExists = true; - validArgumentCount++; - } - break; - case 1: - if (transitionTimeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(transitionTime); - if (CHIP_NO_ERROR == TLVUnpackError) - { - transitionTimeExists = true; - validArgumentCount++; - } - break; - default: - // Unsupported tag, ignore it. - ChipLogProgress(Zcl, "Unknown TLV tag during processing."); - break; - } - if (TLVUnpackError != CHIP_NO_ERROR) - { - ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, - TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); - break; - } - } - - if (CHIP_END_OF_TLV == TLVError) - { - // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. - TLVError = CHIP_NO_ERROR; - } - else - { - ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); - } - - // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) - { - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfLevelControlClusterMoveToLevelWithOnOffCallback(apCommandObj, level, transitionTime); - } - else - { - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogProgress( - Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); - } - break; - } - case ZCL_MOVE_WITH_ON_OFF_COMMAND_ID: { - // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV - // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. - // Any error value TLVUnpackError means we have received an illegal value. - CHIP_ERROR TLVError = CHIP_NO_ERROR; - CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t moveMode; - bool moveModeExists = false; - uint8_t rate; - bool rateExists = false; - uint32_t validArgumentCount = 0; - - while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) - { - switch (TLV::TagNumFromTag(aDataTlv.GetTag())) - { - case 0: - if (moveModeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(moveMode); - if (CHIP_NO_ERROR == TLVUnpackError) - { - moveModeExists = true; - validArgumentCount++; - } - break; - case 1: - if (rateExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(rate); - if (CHIP_NO_ERROR == TLVUnpackError) - { - rateExists = true; - validArgumentCount++; - } - break; - default: - // Unsupported tag, ignore it. - ChipLogProgress(Zcl, "Unknown TLV tag during processing."); - break; - } - if (TLVUnpackError != CHIP_NO_ERROR) - { - ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, - TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); - break; - } - } - - if (CHIP_END_OF_TLV == TLVError) - { - // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. - TLVError = CHIP_NO_ERROR; - } - else - { - ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); - } - - // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) - { - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfLevelControlClusterMoveWithOnOffCallback(apCommandObj, moveMode, rate); - } - else - { - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogProgress( - Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); - } - break; - } - case ZCL_STEP_COMMAND_ID: { - // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV - // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. - // Any error value TLVUnpackError means we have received an illegal value. - CHIP_ERROR TLVError = CHIP_NO_ERROR; - CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t stepMode; - bool stepModeExists = false; - uint8_t stepSize; - bool stepSizeExists = false; - uint16_t transitionTime; - bool transitionTimeExists = false; - uint8_t optionMask; - bool optionMaskExists = false; - uint8_t optionOverride; - bool optionOverrideExists = false; - uint32_t validArgumentCount = 0; - - while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) - { - switch (TLV::TagNumFromTag(aDataTlv.GetTag())) - { - case 0: - if (stepModeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(stepMode); - if (CHIP_NO_ERROR == TLVUnpackError) - { - stepModeExists = true; - validArgumentCount++; - } - break; - case 1: - if (stepSizeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(stepSize); - if (CHIP_NO_ERROR == TLVUnpackError) - { - stepSizeExists = true; - validArgumentCount++; - } - break; - case 2: - if (transitionTimeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(transitionTime); - if (CHIP_NO_ERROR == TLVUnpackError) - { - transitionTimeExists = true; - validArgumentCount++; - } - break; - case 3: - if (optionMaskExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(optionMask); - if (CHIP_NO_ERROR == TLVUnpackError) - { - optionMaskExists = true; - validArgumentCount++; - } - break; - case 4: - if (optionOverrideExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(optionOverride); - if (CHIP_NO_ERROR == TLVUnpackError) - { - optionOverrideExists = true; - validArgumentCount++; - } - break; - default: - // Unsupported tag, ignore it. - ChipLogProgress(Zcl, "Unknown TLV tag during processing."); - break; - } - if (TLVUnpackError != CHIP_NO_ERROR) - { - ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, - TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); - break; - } - } - - if (CHIP_END_OF_TLV == TLVError) - { - // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. - TLVError = CHIP_NO_ERROR; - } - else - { - ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); - } - - // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 5 == validArgumentCount) - { - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfLevelControlClusterStepCallback(apCommandObj, stepMode, stepSize, transitionTime, optionMask, - optionOverride); - } - else - { - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogProgress( - Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 5, validArgumentCount, TLVError, TLVUnpackError); - } - break; - } - case ZCL_STEP_WITH_ON_OFF_COMMAND_ID: { - // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV - // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. - // Any error value TLVUnpackError means we have received an illegal value. - CHIP_ERROR TLVError = CHIP_NO_ERROR; - CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t stepMode; - bool stepModeExists = false; - uint8_t stepSize; - bool stepSizeExists = false; - uint16_t transitionTime; - bool transitionTimeExists = false; - uint32_t validArgumentCount = 0; - - while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) - { - switch (TLV::TagNumFromTag(aDataTlv.GetTag())) - { - case 0: - if (stepModeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(stepMode); - if (CHIP_NO_ERROR == TLVUnpackError) - { - stepModeExists = true; - validArgumentCount++; - } - break; - case 1: - if (stepSizeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(stepSize); - if (CHIP_NO_ERROR == TLVUnpackError) - { - stepSizeExists = true; - validArgumentCount++; - } - break; - case 2: - if (transitionTimeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(transitionTime); - if (CHIP_NO_ERROR == TLVUnpackError) - { - transitionTimeExists = true; - validArgumentCount++; - } - break; - default: - // Unsupported tag, ignore it. - ChipLogProgress(Zcl, "Unknown TLV tag during processing."); - break; - } - if (TLVUnpackError != CHIP_NO_ERROR) - { - ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, - TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); - break; - } - } - - if (CHIP_END_OF_TLV == TLVError) - { - // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. - TLVError = CHIP_NO_ERROR; - } - else - { - ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); - } - - // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 3 == validArgumentCount) - { - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfLevelControlClusterStepWithOnOffCallback(apCommandObj, stepMode, stepSize, transitionTime); - } - else - { - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogProgress( - Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 3, validArgumentCount, TLVError, TLVUnpackError); - } - break; - } - case ZCL_STOP_COMMAND_ID: { - // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV - // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. - // Any error value TLVUnpackError means we have received an illegal value. - CHIP_ERROR TLVError = CHIP_NO_ERROR; - CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t optionMask; - bool optionMaskExists = false; - uint8_t optionOverride; - bool optionOverrideExists = false; - uint32_t validArgumentCount = 0; - - while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) - { - switch (TLV::TagNumFromTag(aDataTlv.GetTag())) - { - case 0: - if (optionMaskExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(optionMask); - if (CHIP_NO_ERROR == TLVUnpackError) - { - optionMaskExists = true; - validArgumentCount++; - } - break; - case 1: - if (optionOverrideExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(optionOverride); - if (CHIP_NO_ERROR == TLVUnpackError) - { - optionOverrideExists = true; - validArgumentCount++; - } - break; - default: - // Unsupported tag, ignore it. - ChipLogProgress(Zcl, "Unknown TLV tag during processing."); - break; - } - if (TLVUnpackError != CHIP_NO_ERROR) - { - ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, - TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); - break; - } - } - - if (CHIP_END_OF_TLV == TLVError) - { - // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. - TLVError = CHIP_NO_ERROR; - } - else - { - ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); - } - - // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) - { - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfLevelControlClusterStopCallback(apCommandObj, optionMask, optionOverride); - } - else - { - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogProgress( - Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); - } - break; - } - case ZCL_STOP_WITH_ON_OFF_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfLevelControlClusterStopWithOnOffCallback(apCommandObj); - break; - } - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_LEVEL_CONTROL_CLUSTER_ID); - break; - } - } - } -} - -} // namespace LevelControl - -namespace LowPower { - -void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - case ZCL_SLEEP_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfLowPowerClusterSleepCallback(apCommandObj); - break; - } - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_LOW_POWER_CLUSTER_ID); - break; - } - } - } -} - -} // namespace LowPower - -namespace MediaPlayback { - -void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - case ZCL_FAST_FORWARD_REQUEST_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfMediaPlaybackClusterFastForwardRequestCallback(apCommandObj); - break; - } - case ZCL_NEXT_REQUEST_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfMediaPlaybackClusterNextRequestCallback(apCommandObj); - break; - } - case ZCL_PAUSE_REQUEST_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfMediaPlaybackClusterPauseRequestCallback(apCommandObj); - break; - } - case ZCL_PLAY_REQUEST_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfMediaPlaybackClusterPlayRequestCallback(apCommandObj); - break; - } - case ZCL_PREVIOUS_REQUEST_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfMediaPlaybackClusterPreviousRequestCallback(apCommandObj); - break; - } - case ZCL_REWIND_REQUEST_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfMediaPlaybackClusterRewindRequestCallback(apCommandObj); - break; - } - case ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfMediaPlaybackClusterSkipBackwardRequestCallback(apCommandObj); - break; - } - case ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID: { + case ZCL_MEDIA_FAST_FORWARD_COMMAND_ID: { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfMediaPlaybackClusterSkipForwardRequestCallback(apCommandObj); + emberAfMediaPlaybackClusterMediaFastForwardCallback(apCommandObj); break; } - case ZCL_START_OVER_REQUEST_COMMAND_ID: { + case ZCL_MEDIA_NEXT_COMMAND_ID: { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfMediaPlaybackClusterStartOverRequestCallback(apCommandObj); + emberAfMediaPlaybackClusterMediaNextCallback(apCommandObj); break; } - case ZCL_STOP_REQUEST_COMMAND_ID: { + case ZCL_MEDIA_PAUSE_COMMAND_ID: { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfMediaPlaybackClusterStopRequestCallback(apCommandObj); - break; - } - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_MEDIA_PLAYBACK_CLUSTER_ID); + emberAfMediaPlaybackClusterMediaPauseCallback(apCommandObj); break; } - } - } -} + case ZCL_MEDIA_PLAY_COMMAND_ID: { -} // namespace MediaPlayback + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfMediaPlaybackClusterMediaPlayCallback(apCommandObj); + break; + } + case ZCL_MEDIA_PREVIOUS_COMMAND_ID: { -namespace NetworkCommissioning { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfMediaPlaybackClusterMediaPreviousCallback(apCommandObj); + break; + } + case ZCL_MEDIA_REWIND_COMMAND_ID: { -void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - case ZCL_DISABLE_NETWORK_COMMAND_ID: { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfMediaPlaybackClusterMediaRewindCallback(apCommandObj); + break; + } + case ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - chip::ByteSpan networkID; - bool networkIDExists = false; - uint64_t breadcrumb; - bool breadcrumbExists = false; - uint32_t timeoutMs; - bool timeoutMsExists = false; - uint32_t validArgumentCount = 0; + uint64_t deltaPositionMilliseconds; + bool deltaPositionMillisecondsExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (networkIDExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - { - const uint8_t * data = nullptr; - TLVUnpackError = aDataTlv.GetDataPtr(data); - networkID = chip::ByteSpan(data, aDataTlv.GetLength()); - } - if (CHIP_NO_ERROR == TLVUnpackError) - { - networkIDExists = true; - validArgumentCount++; - } - break; - case 1: - if (breadcrumbExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(breadcrumb); - if (CHIP_NO_ERROR == TLVUnpackError) - { - breadcrumbExists = true; - validArgumentCount++; - } - break; - case 2: - if (timeoutMsExists) + if (deltaPositionMillisecondsExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(timeoutMs); + TLVUnpackError = aDataTlv.Get(deltaPositionMilliseconds); if (CHIP_NO_ERROR == TLVUnpackError) { - timeoutMsExists = true; + deltaPositionMillisecondsExists = true; validArgumentCount++; } break; @@ -5836,10 +4765,10 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 3 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfNetworkCommissioningClusterDisableNetworkCallback(apCommandObj, networkID, breadcrumb, timeoutMs); + emberAfMediaPlaybackClusterMediaSkipBackwardCallback(apCommandObj, deltaPositionMilliseconds); } else { @@ -5847,71 +4776,35 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 3, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_ENABLE_NETWORK_COMMAND_ID: { + case ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - chip::ByteSpan networkID; - bool networkIDExists = false; - uint64_t breadcrumb; - bool breadcrumbExists = false; - uint32_t timeoutMs; - bool timeoutMsExists = false; - uint32_t validArgumentCount = 0; + uint64_t deltaPositionMilliseconds; + bool deltaPositionMillisecondsExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (networkIDExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - { - const uint8_t * data = nullptr; - TLVUnpackError = aDataTlv.GetDataPtr(data); - networkID = chip::ByteSpan(data, aDataTlv.GetLength()); - } - if (CHIP_NO_ERROR == TLVUnpackError) - { - networkIDExists = true; - validArgumentCount++; - } - break; - case 1: - if (breadcrumbExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(breadcrumb); - if (CHIP_NO_ERROR == TLVUnpackError) - { - breadcrumbExists = true; - validArgumentCount++; - } - break; - case 2: - if (timeoutMsExists) + if (deltaPositionMillisecondsExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(timeoutMs); + TLVUnpackError = aDataTlv.Get(deltaPositionMilliseconds); if (CHIP_NO_ERROR == TLVUnpackError) { - timeoutMsExists = true; + deltaPositionMillisecondsExists = true; validArgumentCount++; } break; @@ -5939,10 +4832,10 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 3 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfNetworkCommissioningClusterEnableNetworkCallback(apCommandObj, networkID, breadcrumb, timeoutMs); + emberAfMediaPlaybackClusterMediaSkipForwardCallback(apCommandObj, deltaPositionMilliseconds); } else { @@ -5950,18 +4843,18 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 3, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_GET_LAST_NETWORK_COMMISSIONING_RESULT_COMMAND_ID: { + case ZCL_MEDIA_SKIP_SEEK_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint32_t timeoutMs; - bool timeoutMsExists = false; + uint64_t position; + bool positionExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -5969,16 +4862,16 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (timeoutMsExists) + if (positionExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(timeoutMs); + TLVUnpackError = aDataTlv.Get(position); if (CHIP_NO_ERROR == TLVUnpackError) { - timeoutMsExists = true; + positionExists = true; validArgumentCount++; } break; @@ -6009,7 +4902,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfNetworkCommissioningClusterGetLastNetworkCommissioningResultCallback(apCommandObj, timeoutMs); + emberAfMediaPlaybackClusterMediaSkipSeekCallback(apCommandObj, position); } else { @@ -6021,18 +4914,50 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_REMOVE_NETWORK_COMMAND_ID: { + case ZCL_MEDIA_START_OVER_COMMAND_ID: { + + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfMediaPlaybackClusterMediaStartOverCallback(apCommandObj); + break; + } + case ZCL_MEDIA_STOP_COMMAND_ID: { + + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfMediaPlaybackClusterMediaStopCallback(apCommandObj); + break; + } + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_MEDIA_PLAYBACK_CLUSTER_ID); + break; + } + } + } +} + +} // namespace MediaPlayback + +namespace NetworkCommissioning { + +void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_DISABLE_NETWORK_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - chip::ByteSpan NetworkID; - bool NetworkIDExists = false; - uint64_t Breadcrumb; - bool BreadcrumbExists = false; - uint32_t TimeoutMs; - bool TimeoutMsExists = false; + chip::ByteSpan networkID; + bool networkIDExists = false; + uint64_t breadcrumb; + bool breadcrumbExists = false; + uint32_t timeoutMs; + bool timeoutMsExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -6040,7 +4965,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (NetworkIDExists) + if (networkIDExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; @@ -6049,39 +4974,39 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En { const uint8_t * data = nullptr; TLVUnpackError = aDataTlv.GetDataPtr(data); - NetworkID = chip::ByteSpan(data, aDataTlv.GetLength()); + networkID = chip::ByteSpan(data, aDataTlv.GetLength()); } if (CHIP_NO_ERROR == TLVUnpackError) { - NetworkIDExists = true; + networkIDExists = true; validArgumentCount++; } break; case 1: - if (BreadcrumbExists) + if (breadcrumbExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(Breadcrumb); + TLVUnpackError = aDataTlv.Get(breadcrumb); if (CHIP_NO_ERROR == TLVUnpackError) { - BreadcrumbExists = true; + breadcrumbExists = true; validArgumentCount++; } break; case 2: - if (TimeoutMsExists) + if (timeoutMsExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(TimeoutMs); + TLVUnpackError = aDataTlv.Get(timeoutMs); if (CHIP_NO_ERROR == TLVUnpackError) { - TimeoutMsExists = true; + timeoutMsExists = true; validArgumentCount++; } break; @@ -6112,7 +5037,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 3 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfNetworkCommissioningClusterRemoveNetworkCallback(apCommandObj, NetworkID, Breadcrumb, TimeoutMs); + emberAfNetworkCommissioningClusterDisableNetworkCallback(apCommandObj, networkID, breadcrumb, timeoutMs); } else { @@ -6124,14 +5049,14 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_SCAN_NETWORKS_COMMAND_ID: { + case ZCL_ENABLE_NETWORK_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - chip::ByteSpan ssid; - bool ssidExists = false; + chip::ByteSpan networkID; + bool networkIDExists = false; uint64_t breadcrumb; bool breadcrumbExists = false; uint32_t timeoutMs; @@ -6143,7 +5068,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (ssidExists) + if (networkIDExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; @@ -6152,11 +5077,11 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En { const uint8_t * data = nullptr; TLVUnpackError = aDataTlv.GetDataPtr(data); - ssid = chip::ByteSpan(data, aDataTlv.GetLength()); + networkID = chip::ByteSpan(data, aDataTlv.GetLength()); } if (CHIP_NO_ERROR == TLVUnpackError) { - ssidExists = true; + networkIDExists = true; validArgumentCount++; } break; @@ -6215,7 +5140,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 3 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfNetworkCommissioningClusterScanNetworksCallback(apCommandObj, ssid, breadcrumb, timeoutMs); + emberAfNetworkCommissioningClusterEnableNetworkCallback(apCommandObj, networkID, breadcrumb, timeoutMs); } else { @@ -6227,155 +5152,31 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_NETWORK_COMMISSIONING_CLUSTER_ID); - break; - } - } - } -} - -} // namespace NetworkCommissioning - -namespace OnOff { - -void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - case ZCL_OFF_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfOnOffClusterOffCallback(apCommandObj); - break; - } - case ZCL_ON_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfOnOffClusterOnCallback(apCommandObj); - break; - } - case ZCL_TOGGLE_COMMAND_ID: { - - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfOnOffClusterToggleCallback(apCommandObj); - break; - } - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_ON_OFF_CLUSTER_ID); - break; - } - } - } -} - -} // namespace OnOff - -namespace Scenes { - -void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - case ZCL_ADD_SCENE_COMMAND_ID: { + case ZCL_GET_LAST_NETWORK_COMMISSIONING_RESULT_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t groupId; - bool groupIdExists = false; - uint8_t sceneId; - bool sceneIdExists = false; - uint16_t transitionTime; - bool transitionTimeExists = false; - const uint8_t * sceneName; - bool sceneNameExists = false; - /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets; - bool extensionFieldSetsExists = false; - uint32_t validArgumentCount = 0; + uint32_t timeoutMs; + bool timeoutMsExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (groupIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(groupId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - groupIdExists = true; - validArgumentCount++; - } - break; - case 1: - if (sceneIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(sceneId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - sceneIdExists = true; - validArgumentCount++; - } - break; - case 2: - if (transitionTimeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(transitionTime); - if (CHIP_NO_ERROR == TLVUnpackError) - { - transitionTimeExists = true; - validArgumentCount++; - } - break; - case 3: - if (sceneNameExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(sceneName); - if (CHIP_NO_ERROR == TLVUnpackError) - { - sceneNameExists = true; - validArgumentCount++; - } - break; - case 4: - if (extensionFieldSetsExists) + if (timeoutMsExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // Just for compatibility, we will add array type support in IM later. - TLVUnpackError = aDataTlv.GetDataPtr(const_cast(extensionFieldSets)); + TLVUnpackError = aDataTlv.Get(timeoutMs); if (CHIP_NO_ERROR == TLVUnpackError) { - extensionFieldSetsExists = true; + timeoutMsExists = true; validArgumentCount++; } break; @@ -6403,11 +5204,10 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 5 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfScenesClusterAddSceneCallback(apCommandObj, groupId, sceneId, transitionTime, - const_cast(sceneName), extensionFieldSets); + emberAfNetworkCommissioningClusterGetLastNetworkCommissioningResultCallback(apCommandObj, timeoutMs); } else { @@ -6415,18 +5215,22 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 5, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_GET_SCENE_MEMBERSHIP_COMMAND_ID: { + case ZCL_REMOVE_NETWORK_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t groupId; - bool groupIdExists = false; + chip::ByteSpan NetworkID; + bool NetworkIDExists = false; + uint64_t Breadcrumb; + bool BreadcrumbExists = false; + uint32_t TimeoutMs; + bool TimeoutMsExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -6434,16 +5238,48 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (groupIdExists) + if (NetworkIDExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(groupId); + { + const uint8_t * data = nullptr; + TLVUnpackError = aDataTlv.GetDataPtr(data); + NetworkID = chip::ByteSpan(data, aDataTlv.GetLength()); + } if (CHIP_NO_ERROR == TLVUnpackError) { - groupIdExists = true; + NetworkIDExists = true; + validArgumentCount++; + } + break; + case 1: + if (BreadcrumbExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(Breadcrumb); + if (CHIP_NO_ERROR == TLVUnpackError) + { + BreadcrumbExists = true; + validArgumentCount++; + } + break; + case 2: + if (TimeoutMsExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(TimeoutMs); + if (CHIP_NO_ERROR == TLVUnpackError) + { + TimeoutMsExists = true; validArgumentCount++; } break; @@ -6471,10 +5307,10 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 3 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfScenesClusterGetSceneMembershipCallback(apCommandObj, groupId); + emberAfNetworkCommissioningClusterRemoveNetworkCallback(apCommandObj, NetworkID, Breadcrumb, TimeoutMs); } else { @@ -6482,22 +5318,22 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); + 3, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_RECALL_SCENE_COMMAND_ID: { + case ZCL_SCAN_NETWORKS_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t groupId; - bool groupIdExists = false; - uint8_t sceneId; - bool sceneIdExists = false; - uint16_t transitionTime; - bool transitionTimeExists = false; + chip::ByteSpan ssid; + bool ssidExists = false; + uint64_t breadcrumb; + bool breadcrumbExists = false; + uint32_t timeoutMs; + bool timeoutMsExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -6505,44 +5341,48 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (groupIdExists) + if (ssidExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(groupId); + { + const uint8_t * data = nullptr; + TLVUnpackError = aDataTlv.GetDataPtr(data); + ssid = chip::ByteSpan(data, aDataTlv.GetLength()); + } if (CHIP_NO_ERROR == TLVUnpackError) { - groupIdExists = true; + ssidExists = true; validArgumentCount++; } break; case 1: - if (sceneIdExists) + if (breadcrumbExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(sceneId); + TLVUnpackError = aDataTlv.Get(breadcrumb); if (CHIP_NO_ERROR == TLVUnpackError) { - sceneIdExists = true; + breadcrumbExists = true; validArgumentCount++; } break; case 2: - if (transitionTimeExists) + if (timeoutMsExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(transitionTime); + TLVUnpackError = aDataTlv.Get(timeoutMs); if (CHIP_NO_ERROR == TLVUnpackError) { - transitionTimeExists = true; + timeoutMsExists = true; validArgumentCount++; } break; @@ -6573,7 +5413,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 3 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfScenesClusterRecallSceneCallback(apCommandObj, groupId, sceneId, transitionTime); + emberAfNetworkCommissioningClusterScanNetworksCallback(apCommandObj, ssid, breadcrumb, timeoutMs); } else { @@ -6585,14 +5425,72 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_REMOVE_ALL_SCENES_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_NETWORK_COMMISSIONING_CLUSTER_ID); + break; + } + } + } +} + +} // namespace NetworkCommissioning + +namespace OnOff { + +void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_OFF_COMMAND_ID: { + + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfOnOffClusterOffCallback(apCommandObj); + break; + } + case ZCL_ON_COMMAND_ID: { + + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfOnOffClusterOnCallback(apCommandObj); + break; + } + case ZCL_TOGGLE_COMMAND_ID: { + + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfOnOffClusterToggleCallback(apCommandObj); + break; + } + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_ON_OFF_CLUSTER_ID); + break; + } + } + } +} + +} // namespace OnOff + +namespace TvChannel { + +void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_CHANGE_CHANNEL_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t groupId; - bool groupIdExists = false; + const uint8_t * match; + bool matchExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -6600,16 +5498,17 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (groupIdExists) + if (matchExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(groupId); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(match); if (CHIP_NO_ERROR == TLVUnpackError) { - groupIdExists = true; + matchExists = true; validArgumentCount++; } break; @@ -6640,7 +5539,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfScenesClusterRemoveAllScenesCallback(apCommandObj, groupId); + emberAfTvChannelClusterChangeChannelCallback(apCommandObj, const_cast(match)); } else { @@ -6652,16 +5551,16 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_REMOVE_SCENE_COMMAND_ID: { + case ZCL_CHANGE_CHANNEL_BY_NUMBER_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t groupId; - bool groupIdExists = false; - uint8_t sceneId; - bool sceneIdExists = false; + uint16_t majorNumber; + bool majorNumberExists = false; + uint16_t minorNumber; + bool minorNumberExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -6669,30 +5568,30 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (groupIdExists) + if (majorNumberExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(groupId); + TLVUnpackError = aDataTlv.Get(majorNumber); if (CHIP_NO_ERROR == TLVUnpackError) { - groupIdExists = true; + majorNumberExists = true; validArgumentCount++; } break; case 1: - if (sceneIdExists) + if (minorNumberExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(sceneId); + TLVUnpackError = aDataTlv.Get(minorNumber); if (CHIP_NO_ERROR == TLVUnpackError) { - sceneIdExists = true; + minorNumberExists = true; validArgumentCount++; } break; @@ -6723,7 +5622,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfScenesClusterRemoveSceneCallback(apCommandObj, groupId, sceneId); + emberAfTvChannelClusterChangeChannelByNumberCallback(apCommandObj, majorNumber, minorNumber); } else { @@ -6735,16 +5634,14 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_STORE_SCENE_COMMAND_ID: { + case ZCL_SKIP_CHANNEL_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t groupId; - bool groupIdExists = false; - uint8_t sceneId; - bool sceneIdExists = false; + uint16_t Count; + bool CountExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -6752,30 +5649,16 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (groupIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(groupId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - groupIdExists = true; - validArgumentCount++; - } - break; - case 1: - if (sceneIdExists) + if (CountExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(sceneId); + TLVUnpackError = aDataTlv.Get(Count); if (CHIP_NO_ERROR == TLVUnpackError) { - sceneIdExists = true; + CountExists = true; validArgumentCount++; } break; @@ -6803,10 +5686,10 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfScenesClusterStoreSceneCallback(apCommandObj, groupId, sceneId); + emberAfTvChannelClusterSkipChannelCallback(apCommandObj, Count); } else { @@ -6814,20 +5697,40 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_VIEW_SCENE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_TV_CHANNEL_CLUSTER_ID); + break; + } + } + } +} + +} // namespace TvChannel + +namespace TargetNavigator { + +void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_NAVIGATE_TARGET_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t groupId; - bool groupIdExists = false; - uint8_t sceneId; - bool sceneIdExists = false; + uint8_t target; + bool targetExists = false; + const uint8_t * data; + bool dataExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -6835,30 +5738,31 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (groupIdExists) + if (targetExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(groupId); + TLVUnpackError = aDataTlv.Get(target); if (CHIP_NO_ERROR == TLVUnpackError) { - groupIdExists = true; + targetExists = true; validArgumentCount++; } break; case 1: - if (sceneIdExists) + if (dataExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(sceneId); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(data); if (CHIP_NO_ERROR == TLVUnpackError) { - sceneIdExists = true; + dataExists = true; validArgumentCount++; } break; @@ -6889,7 +5793,7 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfScenesClusterViewSceneCallback(apCommandObj, groupId, sceneId); + emberAfTargetNavigatorClusterNavigateTargetCallback(apCommandObj, target, const_cast(data)); } else { @@ -6905,14 +5809,14 @@ void DispatchServerCommand(app::Command * apCommandObj, CommandId aCommandId, En // Unrecognized command ID, error status will apply. apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_SCENES_CLUSTER_ID); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_TARGET_NAVIGATOR_CLUSTER_ID); break; } } } } -} // namespace Scenes +} // namespace TargetNavigator } // namespace clusters @@ -6926,11 +5830,14 @@ void DispatchSingleClusterCommand(chip::ClusterId aClusterId, chip::CommandId aC SuccessOrExit(aReader.EnterContainer(dataTlvType)); switch (aClusterId) { - case ZCL_BARRIER_CONTROL_CLUSTER_ID: - clusters::BarrierControl::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); + case ZCL_ACCOUNT_LOGIN_CLUSTER_ID: + clusters::AccountLogin::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); + break; + case ZCL_APPLICATION_LAUNCHER_CLUSTER_ID: + clusters::ApplicationLauncher::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); break; - case ZCL_BASIC_CLUSTER_ID: - clusters::Basic::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); + case ZCL_AUDIO_OUTPUT_CLUSTER_ID: + clusters::AudioOutput::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); break; case ZCL_BINDING_CLUSTER_ID: clusters::Binding::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); @@ -6947,21 +5854,18 @@ void DispatchSingleClusterCommand(chip::ClusterId aClusterId, chip::CommandId aC case ZCL_GENERAL_COMMISSIONING_CLUSTER_ID: clusters::GeneralCommissioning::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); break; - case ZCL_GROUPS_CLUSTER_ID: - clusters::Groups::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); - break; case ZCL_IAS_ZONE_CLUSTER_ID: clusters::IasZone::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); break; - case ZCL_IDENTIFY_CLUSTER_ID: - clusters::Identify::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); - break; - case ZCL_LEVEL_CONTROL_CLUSTER_ID: - clusters::LevelControl::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); + case ZCL_KEYPAD_INPUT_CLUSTER_ID: + clusters::KeypadInput::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); break; case ZCL_LOW_POWER_CLUSTER_ID: clusters::LowPower::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); break; + case ZCL_MEDIA_INPUT_CLUSTER_ID: + clusters::MediaInput::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); + break; case ZCL_MEDIA_PLAYBACK_CLUSTER_ID: clusters::MediaPlayback::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); break; @@ -6971,8 +5875,11 @@ void DispatchSingleClusterCommand(chip::ClusterId aClusterId, chip::CommandId aC case ZCL_ON_OFF_CLUSTER_ID: clusters::OnOff::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); break; - case ZCL_SCENES_CLUSTER_ID: - clusters::Scenes::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); + case ZCL_TV_CHANNEL_CLUSTER_ID: + clusters::TvChannel::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); + break; + case ZCL_TARGET_NAVIGATOR_CLUSTER_ID: + clusters::TargetNavigator::DispatchServerCommand(apCommandObj, aCommandId, aEndPointId, aReader); break; default: // Unrecognized cluster ID, error status will apply. diff --git a/examples/tv-app/tv-common/gen/af-structs.h b/examples/tv-app/tv-common/gen/af-structs.h index b19ca54657a27a..16a5ef656d51ef 100644 --- a/examples/tv-app/tv-common/gen/af-structs.h +++ b/examples/tv-app/tv-common/gen/af-structs.h @@ -34,9 +34,9 @@ typedef struct _ApplicationLauncherApp // Struct for AudioOutputInfo typedef struct _AudioOutputInfo { - uint8_t Index; - uint8_t OutputType; - uint8_t * Name; + uint8_t index; + uint8_t outputType; + uint8_t * name; } EmberAfAudioOutputInfo; // Struct for BasicCommissioningInfoType @@ -100,17 +100,44 @@ typedef struct _ConfigureReportingStatusRecord // Struct for ContentLaunchAdditionalInfo typedef struct _ContentLaunchAdditionalInfo { - uint8_t * Name; - uint8_t * Value; + uint8_t * name; + uint8_t * value; } EmberAfContentLaunchAdditionalInfo; -// Struct for ContentLaunchSearch -typedef struct _ContentLaunchSearch +// Struct for ContentLaunchBrandingInformation +typedef struct _ContentLaunchBrandingInformation +{ + uint8_t * providerName; + uint8_t background; + uint8_t logo; + uint8_t progressBar; + uint8_t splash; + uint8_t waterMark; +} EmberAfContentLaunchBrandingInformation; + +// Struct for ContentLaunchDimension +typedef struct _ContentLaunchDimension +{ + uint8_t * width; + uint8_t * height; + uint8_t metric; +} EmberAfContentLaunchDimension; + +// Struct for ContentLaunchParamater +typedef struct _ContentLaunchParamater { - uint8_t EntitiesList; - uint8_t * searchWindowStart; - uint8_t * searchWindowEnd; -} EmberAfContentLaunchSearch; + uint8_t Type; + uint8_t * Value; + /* TYPE WARNING: array array defaults to */ uint8_t * ExternalIDList; +} EmberAfContentLaunchParamater; + +// Struct for ContentLaunchStyleInformation +typedef struct _ContentLaunchStyleInformation +{ + uint8_t * imageUrl; + uint8_t * color; + uint8_t size; +} EmberAfContentLaunchStyleInformation; // Struct for DebtPayload typedef struct _DebtPayload @@ -253,12 +280,19 @@ typedef uint8_t EmberAfIdentity; // Struct for MediaInputInfo typedef struct _MediaInputInfo { - uint8_t Index; - uint8_t InputType; - uint8_t * Name; - uint8_t * Description; + uint8_t index; + uint8_t inputType; + uint8_t * name; + uint8_t * description; } EmberAfMediaInputInfo; +// Struct for MediaPlaybackPosition +typedef struct _MediaPlaybackPosition +{ + uint64_t updatedAt; + uint64_t position; +} EmberAfMediaPlaybackPosition; + // Struct for NavigateTargetTargetInfo typedef struct _NavigateTargetTargetInfo { @@ -485,20 +519,20 @@ typedef struct _TransferredPhase // Struct for TvChannelInfo typedef struct _TvChannelInfo { - uint16_t MajorNumber; - uint16_t MinorNumber; - uint8_t * Name; - uint8_t * CallSign; - uint8_t * AffiliateCallSign; + uint16_t majorNumber; + uint16_t minorNumber; + uint8_t * name; + uint8_t * callSign; + uint8_t * affiliateCallSign; } EmberAfTvChannelInfo; // Struct for TvChannelLineupInfo typedef struct _TvChannelLineupInfo { - uint8_t * OperatorName; - uint8_t * LineupName; - uint8_t * PostalCode; - uint8_t LineupInfoType; + uint8_t * operatorName; + uint8_t * lineupName; + uint8_t * postalCode; + uint8_t lineupInfoType; } EmberAfTvChannelLineupInfo; // Struct for WiFiInterfaceScanResult diff --git a/examples/tv-app/tv-common/gen/attribute-id.h b/examples/tv-app/tv-common/gen/attribute-id.h index 6c224f5faf016e..8e7aa393464caf 100644 --- a/examples/tv-app/tv-common/gen/attribute-id.h +++ b/examples/tv-app/tv-common/gen/attribute-id.h @@ -1167,7 +1167,14 @@ // Client attributes // Server attributes -#define ZCL_CURRENT_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_START_TIME_ATTRIBUTE_ID (0x0001) +#define ZCL_MEDIA_PLAYBACK_DURATION_ATTRIBUTE_ID (0x0002) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_UPDATED_AT_ATTRIBUTE_ID (0x0003) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_ATTRIBUTE_ID (0x0004) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SPEED_ATTRIBUTE_ID (0x0005) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_END_ATTRIBUTE_ID (0x0006) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_START_ATTRIBUTE_ID (0x0007) // Attribute ids for cluster: Media Input @@ -1194,6 +1201,8 @@ // Client attributes // Server attributes +#define ZCL_CONTENT_LAUNCHER_ACCEPTS_HEADER_ATTRIBUTE_ID (0x0000) +#define ZCL_CONTENT_LAUNCHER_SUPPORTED_STREAMING_TYPES_ATTRIBUTE_ID (0x0001) // Attribute ids for cluster: Audio Output @@ -1209,7 +1218,8 @@ // Server attributes #define ZCL_APPLICATION_LAUNCHER_LIST_ATTRIBUTE_ID (0x0000) -#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_CATALOG_VENDOR_ID_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_APPLICATION_ID_ATTRIBUTE_ID (0x0002) // Attribute ids for cluster: Application Basic diff --git a/examples/tv-app/tv-common/gen/call-command-handler.cpp b/examples/tv-app/tv-common/gen/call-command-handler.cpp index 029a67f5851137..17b5393e5ac11e 100644 --- a/examples/tv-app/tv-common/gen/call-command-handler.cpp +++ b/examples/tv-app/tv-common/gen/call-command-handler.cpp @@ -28,9 +28,11 @@ using namespace chip; +EmberAfStatus emberAfAccountLoginClusterServerCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfApplicationBasicClusterServerCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfApplicationLauncherClusterServerCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfAudioOutputClusterServerCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfBarrierControlClusterServerCommandParse(EmberAfClusterCommand * cmd); -EmberAfStatus emberAfBasicClusterServerCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfBindingClusterServerCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfColorControlClusterServerCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfContentLaunchClusterServerCommandParse(EmberAfClusterCommand * cmd); @@ -40,13 +42,18 @@ EmberAfStatus emberAfGroupKeyManagementClusterServerCommandParse(EmberAfClusterC EmberAfStatus emberAfGroupsClusterServerCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfIasZoneClusterServerCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfIdentifyClusterServerCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfKeypadInputClusterServerCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfLevelControlClusterServerCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfLowPowerClusterServerCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfMediaInputClusterServerCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfMediaPlaybackClusterServerCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfNetworkCommissioningClusterServerCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfOnOffClusterServerCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfScenesClusterServerCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfTvChannelClusterServerCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfTargetNavigatorClusterServerCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfTemperatureMeasurementClusterServerCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfWakeOnLanClusterServerCommandParse(EmberAfClusterCommand * cmd); static EmberAfStatus status(bool wasHandled, bool clusterExists, bool mfgSpecific) { @@ -87,15 +94,22 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) { switch (cmd->apsFrame->clusterId) { + case ZCL_ACCOUNT_LOGIN_CLUSTER_ID: + result = emberAfAccountLoginClusterServerCommandParse(cmd); + break; case ZCL_APPLICATION_BASIC_CLUSTER_ID: // No commands are enabled for cluster Application Basic result = status(false, true, cmd->mfgSpecific); break; - case ZCL_BARRIER_CONTROL_CLUSTER_ID: - result = emberAfBarrierControlClusterServerCommandParse(cmd); + case ZCL_APPLICATION_LAUNCHER_CLUSTER_ID: + result = emberAfApplicationLauncherClusterServerCommandParse(cmd); break; - case ZCL_BASIC_CLUSTER_ID: - result = emberAfBasicClusterServerCommandParse(cmd); + case ZCL_AUDIO_OUTPUT_CLUSTER_ID: + result = emberAfAudioOutputClusterServerCommandParse(cmd); + break; + case ZCL_BARRIER_CONTROL_CLUSTER_ID: + // No commands are enabled for cluster Barrier Control + result = status(false, true, cmd->mfgSpecific); break; case ZCL_BINDING_CLUSTER_ID: result = emberAfBindingClusterServerCommandParse(cmd); @@ -117,20 +131,29 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) result = status(false, true, cmd->mfgSpecific); break; case ZCL_GROUPS_CLUSTER_ID: - result = emberAfGroupsClusterServerCommandParse(cmd); + // No commands are enabled for cluster Groups + result = status(false, true, cmd->mfgSpecific); break; case ZCL_IAS_ZONE_CLUSTER_ID: result = emberAfIasZoneClusterServerCommandParse(cmd); break; case ZCL_IDENTIFY_CLUSTER_ID: - result = emberAfIdentifyClusterServerCommandParse(cmd); + // No commands are enabled for cluster Identify + result = status(false, true, cmd->mfgSpecific); + break; + case ZCL_KEYPAD_INPUT_CLUSTER_ID: + result = emberAfKeypadInputClusterServerCommandParse(cmd); break; case ZCL_LEVEL_CONTROL_CLUSTER_ID: - result = emberAfLevelControlClusterServerCommandParse(cmd); + // No commands are enabled for cluster Level Control + result = status(false, true, cmd->mfgSpecific); break; case ZCL_LOW_POWER_CLUSTER_ID: result = emberAfLowPowerClusterServerCommandParse(cmd); break; + case ZCL_MEDIA_INPUT_CLUSTER_ID: + result = emberAfMediaInputClusterServerCommandParse(cmd); + break; case ZCL_MEDIA_PLAYBACK_CLUSTER_ID: result = emberAfMediaPlaybackClusterServerCommandParse(cmd); break; @@ -141,12 +164,23 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) result = emberAfOnOffClusterServerCommandParse(cmd); break; case ZCL_SCENES_CLUSTER_ID: - result = emberAfScenesClusterServerCommandParse(cmd); + // No commands are enabled for cluster Scenes + result = status(false, true, cmd->mfgSpecific); + break; + case ZCL_TV_CHANNEL_CLUSTER_ID: + result = emberAfTvChannelClusterServerCommandParse(cmd); + break; + case ZCL_TARGET_NAVIGATOR_CLUSTER_ID: + result = emberAfTargetNavigatorClusterServerCommandParse(cmd); break; case ZCL_TEMP_MEASUREMENT_CLUSTER_ID: // No commands are enabled for cluster Temperature Measurement result = status(false, true, cmd->mfgSpecific); break; + case ZCL_WAKE_ON_LAN_CLUSTER_ID: + // No commands are enabled for cluster Wake on LAN + result = status(false, true, cmd->mfgSpecific); + break; default: // Unrecognized cluster ID, error status will apply. break; @@ -157,7 +191,7 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) // Cluster specific command parsing -EmberAfStatus emberAfBarrierControlClusterServerCommandParse(EmberAfClusterCommand * cmd) +EmberAfStatus emberAfAccountLoginClusterServerCommandParse(EmberAfClusterCommand * cmd) { bool wasHandled = false; @@ -165,21 +199,37 @@ EmberAfStatus emberAfBarrierControlClusterServerCommandParse(EmberAfClusterComma { switch (cmd->commandId) { - case ZCL_BARRIER_CONTROL_GO_TO_PERCENT_COMMAND_ID: { + case ZCL_GET_SETUP_PIN_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; - uint8_t percentOpen; + uint8_t * tempAccountIdentifier; - if (cmd->bufLen < payloadOffset + 1) + if (cmd->bufLen < payloadOffset + 1u) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - percentOpen = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + tempAccountIdentifier = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); - wasHandled = emberAfBarrierControlClusterBarrierControlGoToPercentCallback(nullptr, percentOpen); + wasHandled = emberAfAccountLoginClusterGetSetupPINCallback(nullptr, tempAccountIdentifier); break; } - case ZCL_BARRIER_CONTROL_STOP_COMMAND_ID: { - wasHandled = emberAfBarrierControlClusterBarrierControlStopCallback(nullptr); + case ZCL_LOGIN_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t * tempAccountIdentifier; + uint8_t * setupPIN; + + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + tempAccountIdentifier = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + emberAfStringLength(tempAccountIdentifier) + 1u); + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + setupPIN = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfAccountLoginClusterLoginCallback(nullptr, tempAccountIdentifier, setupPIN); break; } default: { @@ -190,21 +240,79 @@ EmberAfStatus emberAfBarrierControlClusterServerCommandParse(EmberAfClusterComma } return status(wasHandled, true, cmd->mfgSpecific); } -EmberAfStatus emberAfBasicClusterServerCommandParse(EmberAfClusterCommand * cmd) +EmberAfStatus emberAfApplicationLauncherClusterServerCommandParse(EmberAfClusterCommand * cmd) { bool wasHandled = false; - if (cmd->mfgSpecific) + if (!cmd->mfgSpecific) { - if (cmd->mfgCode == 4098 && cmd->commandId == ZCL_MFG_SPECIFIC_PING_COMMAND_ID) + switch (cmd->commandId) { - wasHandled = emberAfBasicClusterMfgSpecificPingCallback(nullptr); + case ZCL_LAUNCH_APP_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t * data; + /* TYPE WARNING: array array defaults to */ uint8_t * application; + + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + data = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + emberAfStringLength(data) + 1u); + application = cmd->buffer + payloadOffset; + + wasHandled = emberAfApplicationLauncherClusterLaunchAppCallback(nullptr, data, application); + break; + } + default: { + // Unrecognized command ID, error status will apply. + break; + } } } - else + return status(wasHandled, true, cmd->mfgSpecific); +} +EmberAfStatus emberAfAudioOutputClusterServerCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) { switch (cmd->commandId) { + case ZCL_RENAME_OUTPUT_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t index; + uint8_t * name; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + index = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + 1); + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + name = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfAudioOutputClusterRenameOutputCallback(nullptr, index, name); + break; + } + case ZCL_SELECT_OUTPUT_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t index; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + index = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfAudioOutputClusterSelectOutputCallback(nullptr, index); + break; + } default: { // Unrecognized command ID, error status will apply. break; @@ -305,40 +413,6 @@ EmberAfStatus emberAfColorControlClusterServerCommandParse(EmberAfClusterCommand { switch (cmd->commandId) { - case ZCL_MOVE_COLOR_COMMAND_ID: { - uint16_t payloadOffset = cmd->payloadStartIndex; - int16_t rateX; - int16_t rateY; - uint8_t optionsMask; - uint8_t optionsOverride; - - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - rateX = static_cast(emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen)); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - rateY = static_cast(emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen)); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - optionsMask = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - optionsOverride = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - - wasHandled = emberAfColorControlClusterMoveColorCallback(nullptr, rateX, rateY, optionsMask, optionsOverride); - break; - } case ZCL_MOVE_COLOR_TEMPERATURE_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; uint8_t moveMode; @@ -456,48 +530,6 @@ EmberAfStatus emberAfColorControlClusterServerCommandParse(EmberAfClusterCommand wasHandled = emberAfColorControlClusterMoveSaturationCallback(nullptr, moveMode, rate, optionsMask, optionsOverride); break; } - case ZCL_MOVE_TO_COLOR_COMMAND_ID: { - uint16_t payloadOffset = cmd->payloadStartIndex; - uint16_t colorX; - uint16_t colorY; - uint16_t transitionTime; - uint8_t optionsMask; - uint8_t optionsOverride; - - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - colorX = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - colorY = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - transitionTime = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - optionsMask = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - optionsOverride = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - - wasHandled = emberAfColorControlClusterMoveToColorCallback(nullptr, colorX, colorY, transitionTime, optionsMask, - optionsOverride); - break; - } case ZCL_MOVE_TO_COLOR_TEMPERATURE_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; uint16_t colorTemperature; @@ -652,48 +684,6 @@ EmberAfStatus emberAfColorControlClusterServerCommandParse(EmberAfClusterCommand optionsOverride); break; } - case ZCL_STEP_COLOR_COMMAND_ID: { - uint16_t payloadOffset = cmd->payloadStartIndex; - int16_t stepX; - int16_t stepY; - uint16_t transitionTime; - uint8_t optionsMask; - uint8_t optionsOverride; - - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - stepX = static_cast(emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen)); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - stepY = static_cast(emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen)); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - transitionTime = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - optionsMask = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - optionsOverride = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - - wasHandled = - emberAfColorControlClusterStepColorCallback(nullptr, stepX, stepY, transitionTime, optionsMask, optionsOverride); - break; - } case ZCL_STEP_COLOR_TEMPERATURE_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; uint8_t stepMode; @@ -872,11 +862,43 @@ EmberAfStatus emberAfContentLaunchClusterServerCommandParse(EmberAfClusterComman switch (cmd->commandId) { case ZCL_LAUNCH_CONTENT_COMMAND_ID: { - wasHandled = emberAfContentLaunchClusterLaunchContentCallback(nullptr); + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t autoPlay; + uint8_t * data; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + autoPlay = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + 1); + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + data = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfContentLaunchClusterLaunchContentCallback(nullptr, autoPlay, data); break; } case ZCL_LAUNCH_URL_COMMAND_ID: { - wasHandled = emberAfContentLaunchClusterLaunchURLCallback(nullptr); + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t * contentURL; + uint8_t * displayString; + + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + contentURL = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + emberAfStringLength(contentURL) + 1u); + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + displayString = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfContentLaunchClusterLaunchURLCallback(nullptr, contentURL, displayString); break; } default: { @@ -1087,19 +1109,6 @@ EmberAfStatus emberAfDoorLockClusterServerCommandParse(EmberAfClusterCommand * c wasHandled = emberAfDoorLockClusterGetYeardayScheduleCallback(nullptr, scheduleId, userId); break; } - case ZCL_LOCK_DOOR_COMMAND_ID: { - uint16_t payloadOffset = cmd->payloadStartIndex; - uint8_t * PIN; - - if (cmd->bufLen < payloadOffset + 1u) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - PIN = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); - - wasHandled = emberAfDoorLockClusterLockDoorCallback(nullptr, PIN); - break; - } case ZCL_SET_HOLIDAY_SCHEDULE_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; uint8_t scheduleId; @@ -1314,19 +1323,6 @@ EmberAfStatus emberAfDoorLockClusterServerCommandParse(EmberAfClusterCommand * c emberAfDoorLockClusterSetYeardayScheduleCallback(nullptr, scheduleId, userId, localStartTime, localEndTime); break; } - case ZCL_UNLOCK_DOOR_COMMAND_ID: { - uint16_t payloadOffset = cmd->payloadStartIndex; - uint8_t * PIN; - - if (cmd->bufLen < payloadOffset + 1u) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - PIN = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); - - wasHandled = emberAfDoorLockClusterUnlockDoorCallback(nullptr, PIN); - break; - } case ZCL_UNLOCK_WITH_TIMEOUT_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; uint16_t timeoutInSeconds; @@ -1437,7 +1433,7 @@ EmberAfStatus emberAfGeneralCommissioningClusterServerCommandParse(EmberAfCluste } return status(wasHandled, true, cmd->mfgSpecific); } -EmberAfStatus emberAfGroupsClusterServerCommandParse(EmberAfClusterCommand * cmd) +EmberAfStatus emberAfIasZoneClusterServerCommandParse(EmberAfClusterCommand * cmd) { bool wasHandled = false; @@ -1445,90 +1441,73 @@ EmberAfStatus emberAfGroupsClusterServerCommandParse(EmberAfClusterCommand * cmd { switch (cmd->commandId) { - case ZCL_ADD_GROUP_COMMAND_ID: { + case ZCL_ZONE_ENROLL_RESPONSE_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; - uint16_t groupId; - uint8_t * groupName; + uint8_t enrollResponseCode; + uint8_t zoneId; - if (cmd->bufLen < payloadOffset + 2) + if (cmd->bufLen < payloadOffset + 1) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 1u) + enrollResponseCode = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + 1); + if (cmd->bufLen < payloadOffset + 1) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - groupName = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + zoneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - wasHandled = emberAfGroupsClusterAddGroupCallback(nullptr, groupId, groupName); + wasHandled = emberAfIasZoneClusterZoneEnrollResponseCallback(nullptr, enrollResponseCode, zoneId); break; } - case ZCL_ADD_GROUP_IF_IDENTIFYING_COMMAND_ID: { - uint16_t payloadOffset = cmd->payloadStartIndex; - uint16_t groupId; - uint8_t * groupName; - - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 1u) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - groupName = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); - - wasHandled = emberAfGroupsClusterAddGroupIfIdentifyingCallback(nullptr, groupId, groupName); + default: { + // Unrecognized command ID, error status will apply. break; } - case ZCL_GET_GROUP_MEMBERSHIP_COMMAND_ID: { + } + } + return status(wasHandled, true, cmd->mfgSpecific); +} +EmberAfStatus emberAfKeypadInputClusterServerCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_SEND_KEY_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; - uint8_t groupCount; - /* TYPE WARNING: array array defaults to */ uint8_t * groupList; + uint8_t keyCode; if (cmd->bufLen < payloadOffset + 1) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - groupCount = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - groupList = cmd->buffer + payloadOffset; + keyCode = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - wasHandled = emberAfGroupsClusterGetGroupMembershipCallback(nullptr, groupCount, groupList); + wasHandled = emberAfKeypadInputClusterSendKeyCallback(nullptr, keyCode); break; } - case ZCL_REMOVE_ALL_GROUPS_COMMAND_ID: { - wasHandled = emberAfGroupsClusterRemoveAllGroupsCallback(nullptr); + default: { + // Unrecognized command ID, error status will apply. break; } - case ZCL_REMOVE_GROUP_COMMAND_ID: { - uint16_t payloadOffset = cmd->payloadStartIndex; - uint16_t groupId; - - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - - wasHandled = emberAfGroupsClusterRemoveGroupCallback(nullptr, groupId); - break; } - case ZCL_VIEW_GROUP_COMMAND_ID: { - uint16_t payloadOffset = cmd->payloadStartIndex; - uint16_t groupId; - - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); + } + return status(wasHandled, true, cmd->mfgSpecific); +} +EmberAfStatus emberAfLowPowerClusterServerCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; - wasHandled = emberAfGroupsClusterViewGroupCallback(nullptr, groupId); + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_SLEEP_COMMAND_ID: { + wasHandled = emberAfLowPowerClusterSleepCallback(nullptr); break; } default: { @@ -1539,7 +1518,7 @@ EmberAfStatus emberAfGroupsClusterServerCommandParse(EmberAfClusterCommand * cmd } return status(wasHandled, true, cmd->mfgSpecific); } -EmberAfStatus emberAfIasZoneClusterServerCommandParse(EmberAfClusterCommand * cmd) +EmberAfStatus emberAfMediaInputClusterServerCommandParse(EmberAfClusterCommand * cmd) { bool wasHandled = false; @@ -1547,57 +1526,45 @@ EmberAfStatus emberAfIasZoneClusterServerCommandParse(EmberAfClusterCommand * cm { switch (cmd->commandId) { - case ZCL_ZONE_ENROLL_RESPONSE_COMMAND_ID: { + case ZCL_HIDE_INPUT_STATUS_COMMAND_ID: { + wasHandled = emberAfMediaInputClusterHideInputStatusCallback(nullptr); + break; + } + case ZCL_RENAME_INPUT_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; - uint8_t enrollResponseCode; - uint8_t zoneId; + uint8_t index; + uint8_t * name; if (cmd->bufLen < payloadOffset + 1) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - enrollResponseCode = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 1) + index = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + 1); + if (cmd->bufLen < payloadOffset + 1u) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - zoneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + name = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); - wasHandled = emberAfIasZoneClusterZoneEnrollResponseCallback(nullptr, enrollResponseCode, zoneId); + wasHandled = emberAfMediaInputClusterRenameInputCallback(nullptr, index, name); break; } - default: { - // Unrecognized command ID, error status will apply. - break; - } - } - } - return status(wasHandled, true, cmd->mfgSpecific); -} -EmberAfStatus emberAfIdentifyClusterServerCommandParse(EmberAfClusterCommand * cmd) -{ - bool wasHandled = false; - - if (!cmd->mfgSpecific) - { - switch (cmd->commandId) - { - case ZCL_IDENTIFY_COMMAND_ID: { + case ZCL_SELECT_INPUT_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; - uint16_t identifyTime; + uint8_t index; - if (cmd->bufLen < payloadOffset + 2) + if (cmd->bufLen < payloadOffset + 1) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - identifyTime = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); + index = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - wasHandled = emberAfIdentifyClusterIdentifyCallback(nullptr, identifyTime); + wasHandled = emberAfMediaInputClusterSelectInputCallback(nullptr, index); break; } - case ZCL_IDENTIFY_QUERY_COMMAND_ID: { - wasHandled = emberAfIdentifyClusterIdentifyQueryCallback(nullptr); + case ZCL_SHOW_INPUT_STATUS_COMMAND_ID: { + wasHandled = emberAfMediaInputClusterShowInputStatusCallback(nullptr); break; } default: { @@ -1608,7 +1575,7 @@ EmberAfStatus emberAfIdentifyClusterServerCommandParse(EmberAfClusterCommand * c } return status(wasHandled, true, cmd->mfgSpecific); } -EmberAfStatus emberAfLevelControlClusterServerCommandParse(EmberAfClusterCommand * cmd) +EmberAfStatus emberAfMediaPlaybackClusterServerCommandParse(EmberAfClusterCommand * cmd) { bool wasHandled = false; @@ -1616,281 +1583,75 @@ EmberAfStatus emberAfLevelControlClusterServerCommandParse(EmberAfClusterCommand { switch (cmd->commandId) { - case ZCL_MOVE_COMMAND_ID: { - uint16_t payloadOffset = cmd->payloadStartIndex; - uint8_t moveMode; - uint8_t rate; - uint8_t optionMask; - uint8_t optionOverride; - - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - moveMode = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - rate = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - optionMask = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - optionOverride = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - - wasHandled = emberAfLevelControlClusterMoveCallback(nullptr, moveMode, rate, optionMask, optionOverride); + case ZCL_MEDIA_FAST_FORWARD_COMMAND_ID: { + wasHandled = emberAfMediaPlaybackClusterMediaFastForwardCallback(nullptr); break; } - case ZCL_MOVE_TO_LEVEL_COMMAND_ID: { - uint16_t payloadOffset = cmd->payloadStartIndex; - uint8_t level; - uint16_t transitionTime; - uint8_t optionMask; - uint8_t optionOverride; - - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - level = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - transitionTime = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - optionMask = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - optionOverride = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - - wasHandled = emberAfLevelControlClusterMoveToLevelCallback(nullptr, level, transitionTime, optionMask, optionOverride); + case ZCL_MEDIA_NEXT_COMMAND_ID: { + wasHandled = emberAfMediaPlaybackClusterMediaNextCallback(nullptr); break; } - case ZCL_MOVE_TO_LEVEL_WITH_ON_OFF_COMMAND_ID: { - uint16_t payloadOffset = cmd->payloadStartIndex; - uint8_t level; - uint16_t transitionTime; - - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - level = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - transitionTime = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - - wasHandled = emberAfLevelControlClusterMoveToLevelWithOnOffCallback(nullptr, level, transitionTime); + case ZCL_MEDIA_PAUSE_COMMAND_ID: { + wasHandled = emberAfMediaPlaybackClusterMediaPauseCallback(nullptr); break; } - case ZCL_MOVE_WITH_ON_OFF_COMMAND_ID: { - uint16_t payloadOffset = cmd->payloadStartIndex; - uint8_t moveMode; - uint8_t rate; - - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - moveMode = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - rate = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - - wasHandled = emberAfLevelControlClusterMoveWithOnOffCallback(nullptr, moveMode, rate); + case ZCL_MEDIA_PLAY_COMMAND_ID: { + wasHandled = emberAfMediaPlaybackClusterMediaPlayCallback(nullptr); + break; + } + case ZCL_MEDIA_PREVIOUS_COMMAND_ID: { + wasHandled = emberAfMediaPlaybackClusterMediaPreviousCallback(nullptr); + break; + } + case ZCL_MEDIA_REWIND_COMMAND_ID: { + wasHandled = emberAfMediaPlaybackClusterMediaRewindCallback(nullptr); break; } - case ZCL_STEP_COMMAND_ID: { + case ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; - uint8_t stepMode; - uint8_t stepSize; - uint16_t transitionTime; - uint8_t optionMask; - uint8_t optionOverride; + uint64_t deltaPositionMilliseconds; - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - stepMode = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - stepSize = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - transitionTime = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - optionMask = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 1) + if (cmd->bufLen < payloadOffset + 8) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - optionOverride = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + deltaPositionMilliseconds = emberAfGetInt64u(cmd->buffer, payloadOffset, cmd->bufLen); - wasHandled = - emberAfLevelControlClusterStepCallback(nullptr, stepMode, stepSize, transitionTime, optionMask, optionOverride); + wasHandled = emberAfMediaPlaybackClusterMediaSkipBackwardCallback(nullptr, deltaPositionMilliseconds); break; } - case ZCL_STEP_WITH_ON_OFF_COMMAND_ID: { + case ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; - uint8_t stepMode; - uint8_t stepSize; - uint16_t transitionTime; + uint64_t deltaPositionMilliseconds; - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - stepMode = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - stepSize = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 2) + if (cmd->bufLen < payloadOffset + 8) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - transitionTime = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); + deltaPositionMilliseconds = emberAfGetInt64u(cmd->buffer, payloadOffset, cmd->bufLen); - wasHandled = emberAfLevelControlClusterStepWithOnOffCallback(nullptr, stepMode, stepSize, transitionTime); + wasHandled = emberAfMediaPlaybackClusterMediaSkipForwardCallback(nullptr, deltaPositionMilliseconds); break; } - case ZCL_STOP_COMMAND_ID: { + case ZCL_MEDIA_SKIP_SEEK_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; - uint8_t optionMask; - uint8_t optionOverride; + uint64_t position; - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - optionMask = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 1) + if (cmd->bufLen < payloadOffset + 8) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - optionOverride = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + position = emberAfGetInt64u(cmd->buffer, payloadOffset, cmd->bufLen); - wasHandled = emberAfLevelControlClusterStopCallback(nullptr, optionMask, optionOverride); - break; - } - case ZCL_STOP_WITH_ON_OFF_COMMAND_ID: { - wasHandled = emberAfLevelControlClusterStopWithOnOffCallback(nullptr); - break; - } - default: { - // Unrecognized command ID, error status will apply. - break; - } - } - } - return status(wasHandled, true, cmd->mfgSpecific); -} -EmberAfStatus emberAfLowPowerClusterServerCommandParse(EmberAfClusterCommand * cmd) -{ - bool wasHandled = false; - - if (!cmd->mfgSpecific) - { - switch (cmd->commandId) - { - case ZCL_SLEEP_COMMAND_ID: { - wasHandled = emberAfLowPowerClusterSleepCallback(nullptr); - break; - } - default: { - // Unrecognized command ID, error status will apply. - break; - } - } - } - return status(wasHandled, true, cmd->mfgSpecific); -} -EmberAfStatus emberAfMediaPlaybackClusterServerCommandParse(EmberAfClusterCommand * cmd) -{ - bool wasHandled = false; - - if (!cmd->mfgSpecific) - { - switch (cmd->commandId) - { - case ZCL_FAST_FORWARD_REQUEST_COMMAND_ID: { - wasHandled = emberAfMediaPlaybackClusterFastForwardRequestCallback(nullptr); - break; - } - case ZCL_NEXT_REQUEST_COMMAND_ID: { - wasHandled = emberAfMediaPlaybackClusterNextRequestCallback(nullptr); - break; - } - case ZCL_PAUSE_REQUEST_COMMAND_ID: { - wasHandled = emberAfMediaPlaybackClusterPauseRequestCallback(nullptr); - break; - } - case ZCL_PLAY_REQUEST_COMMAND_ID: { - wasHandled = emberAfMediaPlaybackClusterPlayRequestCallback(nullptr); - break; - } - case ZCL_PREVIOUS_REQUEST_COMMAND_ID: { - wasHandled = emberAfMediaPlaybackClusterPreviousRequestCallback(nullptr); - break; - } - case ZCL_REWIND_REQUEST_COMMAND_ID: { - wasHandled = emberAfMediaPlaybackClusterRewindRequestCallback(nullptr); - break; - } - case ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID: { - wasHandled = emberAfMediaPlaybackClusterSkipBackwardRequestCallback(nullptr); - break; - } - case ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID: { - wasHandled = emberAfMediaPlaybackClusterSkipForwardRequestCallback(nullptr); + wasHandled = emberAfMediaPlaybackClusterMediaSkipSeekCallback(nullptr, position); break; } - case ZCL_START_OVER_REQUEST_COMMAND_ID: { - wasHandled = emberAfMediaPlaybackClusterStartOverRequestCallback(nullptr); + case ZCL_MEDIA_START_OVER_COMMAND_ID: { + wasHandled = emberAfMediaPlaybackClusterMediaStartOverCallback(nullptr); break; } - case ZCL_STOP_REQUEST_COMMAND_ID: { - wasHandled = emberAfMediaPlaybackClusterStopRequestCallback(nullptr); + case ZCL_MEDIA_STOP_COMMAND_ID: { + wasHandled = emberAfMediaPlaybackClusterMediaStopCallback(nullptr); break; } default: { @@ -2078,7 +1839,7 @@ EmberAfStatus emberAfOnOffClusterServerCommandParse(EmberAfClusterCommand * cmd) } return status(wasHandled, true, cmd->mfgSpecific); } -EmberAfStatus emberAfScenesClusterServerCommandParse(EmberAfClusterCommand * cmd) +EmberAfStatus emberAfTvChannelClusterServerCommandParse(EmberAfClusterCommand * cmd) { bool wasHandled = false; @@ -2086,155 +1847,86 @@ EmberAfStatus emberAfScenesClusterServerCommandParse(EmberAfClusterCommand * cmd { switch (cmd->commandId) { - case ZCL_ADD_SCENE_COMMAND_ID: { + case ZCL_CHANGE_CHANNEL_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; - uint16_t groupId; - uint8_t sceneId; - uint16_t transitionTime; - uint8_t * sceneName; - /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets; + uint8_t * match; - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - transitionTime = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 2); if (cmd->bufLen < payloadOffset + 1u) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - sceneName = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + emberAfStringLength(sceneName) + 1u); - extensionFieldSets = cmd->buffer + payloadOffset; + match = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); - wasHandled = - emberAfScenesClusterAddSceneCallback(nullptr, groupId, sceneId, transitionTime, sceneName, extensionFieldSets); + wasHandled = emberAfTvChannelClusterChangeChannelCallback(nullptr, match); break; } - case ZCL_GET_SCENE_MEMBERSHIP_COMMAND_ID: { + case ZCL_CHANGE_CHANNEL_BY_NUMBER_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; - uint16_t groupId; + uint16_t majorNumber; + uint16_t minorNumber; if (cmd->bufLen < payloadOffset + 2) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - - wasHandled = emberAfScenesClusterGetSceneMembershipCallback(nullptr, groupId); - break; - } - case ZCL_RECALL_SCENE_COMMAND_ID: { - uint16_t payloadOffset = cmd->payloadStartIndex; - uint16_t groupId; - uint8_t sceneId; - uint16_t transitionTime; - - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); + majorNumber = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 1); if (cmd->bufLen < payloadOffset + 2) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - transitionTime = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); + minorNumber = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - wasHandled = emberAfScenesClusterRecallSceneCallback(nullptr, groupId, sceneId, transitionTime); + wasHandled = emberAfTvChannelClusterChangeChannelByNumberCallback(nullptr, majorNumber, minorNumber); break; } - case ZCL_REMOVE_ALL_SCENES_COMMAND_ID: { + case ZCL_SKIP_CHANNEL_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; - uint16_t groupId; + uint16_t Count; if (cmd->bufLen < payloadOffset + 2) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); + Count = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - wasHandled = emberAfScenesClusterRemoveAllScenesCallback(nullptr, groupId); + wasHandled = emberAfTvChannelClusterSkipChannelCallback(nullptr, Count); break; } - case ZCL_REMOVE_SCENE_COMMAND_ID: { - uint16_t payloadOffset = cmd->payloadStartIndex; - uint16_t groupId; - uint8_t sceneId; - - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - - wasHandled = emberAfScenesClusterRemoveSceneCallback(nullptr, groupId, sceneId); + default: { + // Unrecognized command ID, error status will apply. break; } - case ZCL_STORE_SCENE_COMMAND_ID: { - uint16_t payloadOffset = cmd->payloadStartIndex; - uint16_t groupId; - uint8_t sceneId; - - if (cmd->bufLen < payloadOffset + 2) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 1) - { - return EMBER_ZCL_STATUS_MALFORMED_COMMAND; - } - sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); - - wasHandled = emberAfScenesClusterStoreSceneCallback(nullptr, groupId, sceneId); - break; } - case ZCL_VIEW_SCENE_COMMAND_ID: { + } + return status(wasHandled, true, cmd->mfgSpecific); +} +EmberAfStatus emberAfTargetNavigatorClusterServerCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_NAVIGATE_TARGET_COMMAND_ID: { uint16_t payloadOffset = cmd->payloadStartIndex; - uint16_t groupId; - uint8_t sceneId; + uint8_t target; + uint8_t * data; - if (cmd->bufLen < payloadOffset + 2) + if (cmd->bufLen < payloadOffset + 1) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - groupId = emberAfGetInt16u(cmd->buffer, payloadOffset, cmd->bufLen); - payloadOffset = static_cast(payloadOffset + 2); - if (cmd->bufLen < payloadOffset + 1) + target = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + 1); + if (cmd->bufLen < payloadOffset + 1u) { return EMBER_ZCL_STATUS_MALFORMED_COMMAND; } - sceneId = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + data = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); - wasHandled = emberAfScenesClusterViewSceneCallback(nullptr, groupId, sceneId); + wasHandled = emberAfTargetNavigatorClusterNavigateTargetCallback(nullptr, target, data); break; } default: { diff --git a/examples/tv-app/tv-common/gen/callback-stub.cpp b/examples/tv-app/tv-common/gen/callback-stub.cpp index 3b2561df22ce0b..4eab1460742a5e 100644 --- a/examples/tv-app/tv-common/gen/callback-stub.cpp +++ b/examples/tv-app/tv-common/gen/callback-stub.cpp @@ -29,15 +29,21 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId) { switch (clusterId) { + case ZCL_ACCOUNT_LOGIN_CLUSTER_ID: + emberAfAccountLoginClusterInitCallback(endpoint); + break; case ZCL_APPLICATION_BASIC_CLUSTER_ID: emberAfApplicationBasicClusterInitCallback(endpoint); break; + case ZCL_APPLICATION_LAUNCHER_CLUSTER_ID: + emberAfApplicationLauncherClusterInitCallback(endpoint); + break; + case ZCL_AUDIO_OUTPUT_CLUSTER_ID: + emberAfAudioOutputClusterInitCallback(endpoint); + break; case ZCL_BARRIER_CONTROL_CLUSTER_ID: emberAfBarrierControlClusterInitCallback(endpoint); break; - case ZCL_BASIC_CLUSTER_ID: - emberAfBasicClusterInitCallback(endpoint); - break; case ZCL_BINDING_CLUSTER_ID: emberAfBindingClusterInitCallback(endpoint); break; @@ -65,12 +71,18 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId) case ZCL_IDENTIFY_CLUSTER_ID: emberAfIdentifyClusterInitCallback(endpoint); break; + case ZCL_KEYPAD_INPUT_CLUSTER_ID: + emberAfKeypadInputClusterInitCallback(endpoint); + break; case ZCL_LEVEL_CONTROL_CLUSTER_ID: emberAfLevelControlClusterInitCallback(endpoint); break; case ZCL_LOW_POWER_CLUSTER_ID: emberAfLowPowerClusterInitCallback(endpoint); break; + case ZCL_MEDIA_INPUT_CLUSTER_ID: + emberAfMediaInputClusterInitCallback(endpoint); + break; case ZCL_MEDIA_PLAYBACK_CLUSTER_ID: emberAfMediaPlaybackClusterInitCallback(endpoint); break; @@ -83,26 +95,45 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId) case ZCL_SCENES_CLUSTER_ID: emberAfScenesClusterInitCallback(endpoint); break; + case ZCL_TV_CHANNEL_CLUSTER_ID: + emberAfTvChannelClusterInitCallback(endpoint); + break; + case ZCL_TARGET_NAVIGATOR_CLUSTER_ID: + emberAfTargetNavigatorClusterInitCallback(endpoint); + break; case ZCL_TEMP_MEASUREMENT_CLUSTER_ID: emberAfTemperatureMeasurementClusterInitCallback(endpoint); break; + case ZCL_WAKE_ON_LAN_CLUSTER_ID: + emberAfWakeOnLanClusterInitCallback(endpoint); + break; default: // Unrecognized cluster ID break; } } +void __attribute__((weak)) emberAfAccountLoginClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfApplicationBasicClusterInitCallback(EndpointId endpoint) { // To prevent warning (void) endpoint; } -void __attribute__((weak)) emberAfBarrierControlClusterInitCallback(EndpointId endpoint) +void __attribute__((weak)) emberAfApplicationLauncherClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} +void __attribute__((weak)) emberAfAudioOutputClusterInitCallback(EndpointId endpoint) { // To prevent warning (void) endpoint; } -void __attribute__((weak)) emberAfBasicClusterInitCallback(EndpointId endpoint) +void __attribute__((weak)) emberAfBarrierControlClusterInitCallback(EndpointId endpoint) { // To prevent warning (void) endpoint; @@ -152,6 +183,11 @@ void __attribute__((weak)) emberAfIdentifyClusterInitCallback(EndpointId endpoin // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfKeypadInputClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfLevelControlClusterInitCallback(EndpointId endpoint) { // To prevent warning @@ -162,6 +198,11 @@ void __attribute__((weak)) emberAfLowPowerClusterInitCallback(EndpointId endpoin // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfMediaInputClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfMediaPlaybackClusterInitCallback(EndpointId endpoint) { // To prevent warning @@ -182,11 +223,26 @@ void __attribute__((weak)) emberAfScenesClusterInitCallback(EndpointId endpoint) // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfTvChannelClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} +void __attribute__((weak)) emberAfTargetNavigatorClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfTemperatureMeasurementClusterInitCallback(EndpointId endpoint) { // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfWakeOnLanClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} // // Non-Cluster Related Callbacks diff --git a/examples/tv-app/tv-common/gen/callback.h b/examples/tv-app/tv-common/gen/callback.h index 270ecff88ce5d4..4c9ddbf5967064 100644 --- a/examples/tv-app/tv-common/gen/callback.h +++ b/examples/tv-app/tv-common/gen/callback.h @@ -40,6 +40,14 @@ void emberAfClusterInitCallback(chip::EndpointId endpoint, chip::ClusterId clust // Cluster Init Functions +/** @brief Account Login Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfAccountLoginClusterInitCallback(chip::EndpointId endpoint); + /** @brief Application Basic Cluster Init * * Cluster Init @@ -48,21 +56,29 @@ void emberAfClusterInitCallback(chip::EndpointId endpoint, chip::ClusterId clust */ void emberAfApplicationBasicClusterInitCallback(chip::EndpointId endpoint); -/** @brief Barrier Control Cluster Init +/** @brief Application Launcher Cluster Init * * Cluster Init * * @param endpoint Endpoint that is being initialized */ -void emberAfBarrierControlClusterInitCallback(chip::EndpointId endpoint); +void emberAfApplicationLauncherClusterInitCallback(chip::EndpointId endpoint); -/** @brief Basic Cluster Init +/** @brief Audio Output Cluster Init * * Cluster Init * * @param endpoint Endpoint that is being initialized */ -void emberAfBasicClusterInitCallback(chip::EndpointId endpoint); +void emberAfAudioOutputClusterInitCallback(chip::EndpointId endpoint); + +/** @brief Barrier Control Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfBarrierControlClusterInitCallback(chip::EndpointId endpoint); /** @brief Binding Cluster Init * @@ -136,6 +152,14 @@ void emberAfIasZoneClusterInitCallback(chip::EndpointId endpoint); */ void emberAfIdentifyClusterInitCallback(chip::EndpointId endpoint); +/** @brief Keypad Input Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfKeypadInputClusterInitCallback(chip::EndpointId endpoint); + /** @brief Level Control Cluster Init * * Cluster Init @@ -152,6 +176,14 @@ void emberAfLevelControlClusterInitCallback(chip::EndpointId endpoint); */ void emberAfLowPowerClusterInitCallback(chip::EndpointId endpoint); +/** @brief Media Input Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfMediaInputClusterInitCallback(chip::EndpointId endpoint); + /** @brief Media Playback Cluster Init * * Cluster Init @@ -184,6 +216,22 @@ void emberAfOnOffClusterInitCallback(chip::EndpointId endpoint); */ void emberAfScenesClusterInitCallback(chip::EndpointId endpoint); +/** @brief TV Channel Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfTvChannelClusterInitCallback(chip::EndpointId endpoint); + +/** @brief Target Navigator Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfTargetNavigatorClusterInitCallback(chip::EndpointId endpoint); + /** @brief Temperature Measurement Cluster Init * * Cluster Init @@ -192,8 +240,86 @@ void emberAfScenesClusterInitCallback(chip::EndpointId endpoint); */ void emberAfTemperatureMeasurementClusterInitCallback(chip::EndpointId endpoint); +/** @brief Wake on LAN Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfWakeOnLanClusterInitCallback(chip::EndpointId endpoint); + // Cluster Server/Client Init Functions +// +// Account Login Cluster server +// + +/** @brief Account Login Cluster Server Init + * + * Server Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfAccountLoginClusterServerInitCallback(chip::EndpointId endpoint); + +/** @brief Account Login Cluster Server Attribute Changed + * + * Server Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfAccountLoginClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Account Login Cluster Server Manufacturer Specific Attribute Changed + * + * Server Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfAccountLoginClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Account Login Cluster Server Message Sent + * + * Server Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfAccountLoginClusterServerMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Account Login Cluster Server Pre Attribute Changed + * + * server Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfAccountLoginClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Account Login Cluster Server Tick + * + * server Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfAccountLoginClusterServerTickCallback(chip::EndpointId endpoint); + // // Application Basic Cluster server // @@ -266,27 +392,27 @@ EmberAfStatus emberAfApplicationBasicClusterServerPreAttributeChangedCallback(ch void emberAfApplicationBasicClusterServerTickCallback(chip::EndpointId endpoint); // -// Barrier Control Cluster server +// Application Launcher Cluster server // -/** @brief Barrier Control Cluster Server Init +/** @brief Application Launcher Cluster Server Init * * Server Init * * @param endpoint Endpoint that is being initialized */ -void emberAfBarrierControlClusterServerInitCallback(chip::EndpointId endpoint); +void emberAfApplicationLauncherClusterServerInitCallback(chip::EndpointId endpoint); -/** @brief Barrier Control Cluster Server Attribute Changed +/** @brief Application Launcher Cluster Server Attribute Changed * * Server Attribute Changed * * @param endpoint Endpoint that is being initialized * @param attributeId Attribute that changed */ -void emberAfBarrierControlClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); +void emberAfApplicationLauncherClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); -/** @brief Barrier Control Cluster Server Manufacturer Specific Attribute Changed +/** @brief Application Launcher Cluster Server Manufacturer Specific Attribute Changed * * Server Manufacturer Specific Attribute Changed * @@ -294,11 +420,11 @@ void emberAfBarrierControlClusterServerAttributeChangedCallback(chip::EndpointId * @param attributeId Attribute that changed * @param manufacturerCode Manufacturer Code of the attribute that changed */ -void emberAfBarrierControlClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, - chip::AttributeId attributeId, - uint16_t manufacturerCode); +void emberAfApplicationLauncherClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); -/** @brief Barrier Control Cluster Server Message Sent +/** @brief Application Launcher Cluster Server Message Sent * * Server Message Sent * @@ -309,11 +435,11 @@ void emberAfBarrierControlClusterServerManufacturerSpecificAttributeChangedCallb * @param message The message that was sent * @param status The status of the sent message */ -void emberAfBarrierControlClusterServerMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, - EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, - EmberStatus status); +void emberAfApplicationLauncherClusterServerMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); -/** @brief Barrier Control Cluster Server Pre Attribute Changed +/** @brief Application Launcher Cluster Server Pre Attribute Changed * * server Pre Attribute Changed * @@ -323,41 +449,41 @@ void emberAfBarrierControlClusterServerMessageSentCallback(EmberOutgoingMessageT * @param size Attribute size * @param value Attribute value */ -EmberAfStatus emberAfBarrierControlClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, - chip::AttributeId attributeId, - EmberAfAttributeType attributeType, uint8_t size, - uint8_t * value); +EmberAfStatus emberAfApplicationLauncherClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); -/** @brief Barrier Control Cluster Server Tick +/** @brief Application Launcher Cluster Server Tick * * server Tick * * @param endpoint Endpoint that is being served */ -void emberAfBarrierControlClusterServerTickCallback(chip::EndpointId endpoint); +void emberAfApplicationLauncherClusterServerTickCallback(chip::EndpointId endpoint); // -// Basic Cluster server +// Audio Output Cluster server // -/** @brief Basic Cluster Server Init +/** @brief Audio Output Cluster Server Init * * Server Init * * @param endpoint Endpoint that is being initialized */ -void emberAfBasicClusterServerInitCallback(chip::EndpointId endpoint); +void emberAfAudioOutputClusterServerInitCallback(chip::EndpointId endpoint); -/** @brief Basic Cluster Server Attribute Changed +/** @brief Audio Output Cluster Server Attribute Changed * * Server Attribute Changed * * @param endpoint Endpoint that is being initialized * @param attributeId Attribute that changed */ -void emberAfBasicClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); +void emberAfAudioOutputClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); -/** @brief Basic Cluster Server Manufacturer Specific Attribute Changed +/** @brief Audio Output Cluster Server Manufacturer Specific Attribute Changed * * Server Manufacturer Specific Attribute Changed * @@ -365,10 +491,11 @@ void emberAfBasicClusterServerAttributeChangedCallback(chip::EndpointId endpoint * @param attributeId Attribute that changed * @param manufacturerCode Manufacturer Code of the attribute that changed */ -void emberAfBasicClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, - uint16_t manufacturerCode); +void emberAfAudioOutputClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); -/** @brief Basic Cluster Server Message Sent +/** @brief Audio Output Cluster Server Message Sent * * Server Message Sent * @@ -379,10 +506,11 @@ void emberAfBasicClusterServerManufacturerSpecificAttributeChangedCallback(chip: * @param message The message that was sent * @param status The status of the sent message */ -void emberAfBasicClusterServerMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, - EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, EmberStatus status); +void emberAfAudioOutputClusterServerMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); -/** @brief Basic Cluster Server Pre Attribute Changed +/** @brief Audio Output Cluster Server Pre Attribute Changed * * server Pre Attribute Changed * @@ -392,17 +520,88 @@ void emberAfBasicClusterServerMessageSentCallback(EmberOutgoingMessageType type, * @param size Attribute size * @param value Attribute value */ -EmberAfStatus emberAfBasicClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, - EmberAfAttributeType attributeType, uint8_t size, - uint8_t * value); +EmberAfStatus emberAfAudioOutputClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Audio Output Cluster Server Tick + * + * server Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfAudioOutputClusterServerTickCallback(chip::EndpointId endpoint); + +// +// Barrier Control Cluster server +// + +/** @brief Barrier Control Cluster Server Init + * + * Server Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfBarrierControlClusterServerInitCallback(chip::EndpointId endpoint); + +/** @brief Barrier Control Cluster Server Attribute Changed + * + * Server Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfBarrierControlClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Barrier Control Cluster Server Manufacturer Specific Attribute Changed + * + * Server Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfBarrierControlClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Barrier Control Cluster Server Message Sent + * + * Server Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfBarrierControlClusterServerMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Barrier Control Cluster Server Pre Attribute Changed + * + * server Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfBarrierControlClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); -/** @brief Basic Cluster Server Tick +/** @brief Barrier Control Cluster Server Tick * * server Tick * * @param endpoint Endpoint that is being served */ -void emberAfBasicClusterServerTickCallback(chip::EndpointId endpoint); +void emberAfBarrierControlClusterServerTickCallback(chip::EndpointId endpoint); // // Binding Cluster server @@ -1036,6 +1235,76 @@ EmberAfStatus emberAfIdentifyClusterServerPreAttributeChangedCallback(chip::Endp */ void emberAfIdentifyClusterServerTickCallback(chip::EndpointId endpoint); +// +// Keypad Input Cluster server +// + +/** @brief Keypad Input Cluster Server Init + * + * Server Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfKeypadInputClusterServerInitCallback(chip::EndpointId endpoint); + +/** @brief Keypad Input Cluster Server Attribute Changed + * + * Server Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfKeypadInputClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Keypad Input Cluster Server Manufacturer Specific Attribute Changed + * + * Server Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfKeypadInputClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Keypad Input Cluster Server Message Sent + * + * Server Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfKeypadInputClusterServerMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Keypad Input Cluster Server Pre Attribute Changed + * + * server Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfKeypadInputClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Keypad Input Cluster Server Tick + * + * server Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfKeypadInputClusterServerTickCallback(chip::EndpointId endpoint); + // // Level Control Cluster server // @@ -1177,27 +1446,27 @@ EmberAfStatus emberAfLowPowerClusterServerPreAttributeChangedCallback(chip::Endp void emberAfLowPowerClusterServerTickCallback(chip::EndpointId endpoint); // -// Media Playback Cluster server +// Media Input Cluster server // -/** @brief Media Playback Cluster Server Init +/** @brief Media Input Cluster Server Init * * Server Init * * @param endpoint Endpoint that is being initialized */ -void emberAfMediaPlaybackClusterServerInitCallback(chip::EndpointId endpoint); +void emberAfMediaInputClusterServerInitCallback(chip::EndpointId endpoint); -/** @brief Media Playback Cluster Server Attribute Changed +/** @brief Media Input Cluster Server Attribute Changed * * Server Attribute Changed * * @param endpoint Endpoint that is being initialized * @param attributeId Attribute that changed */ -void emberAfMediaPlaybackClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); +void emberAfMediaInputClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); -/** @brief Media Playback Cluster Server Manufacturer Specific Attribute Changed +/** @brief Media Input Cluster Server Manufacturer Specific Attribute Changed * * Server Manufacturer Specific Attribute Changed * @@ -1205,7 +1474,77 @@ void emberAfMediaPlaybackClusterServerAttributeChangedCallback(chip::EndpointId * @param attributeId Attribute that changed * @param manufacturerCode Manufacturer Code of the attribute that changed */ -void emberAfMediaPlaybackClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, +void emberAfMediaInputClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Media Input Cluster Server Message Sent + * + * Server Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfMediaInputClusterServerMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Media Input Cluster Server Pre Attribute Changed + * + * server Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfMediaInputClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Media Input Cluster Server Tick + * + * server Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfMediaInputClusterServerTickCallback(chip::EndpointId endpoint); + +// +// Media Playback Cluster server +// + +/** @brief Media Playback Cluster Server Init + * + * Server Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfMediaPlaybackClusterServerInitCallback(chip::EndpointId endpoint); + +/** @brief Media Playback Cluster Server Attribute Changed + * + * Server Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfMediaPlaybackClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Media Playback Cluster Server Manufacturer Specific Attribute Changed + * + * Server Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfMediaPlaybackClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, uint16_t manufacturerCode); @@ -1455,6 +1794,147 @@ EmberAfStatus emberAfScenesClusterServerPreAttributeChangedCallback(chip::Endpoi */ void emberAfScenesClusterServerTickCallback(chip::EndpointId endpoint); +// +// TV Channel Cluster server +// + +/** @brief TV Channel Cluster Server Init + * + * Server Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfTvChannelClusterServerInitCallback(chip::EndpointId endpoint); + +/** @brief TV Channel Cluster Server Attribute Changed + * + * Server Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfTvChannelClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief TV Channel Cluster Server Manufacturer Specific Attribute Changed + * + * Server Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfTvChannelClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief TV Channel Cluster Server Message Sent + * + * Server Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfTvChannelClusterServerMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief TV Channel Cluster Server Pre Attribute Changed + * + * server Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfTvChannelClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief TV Channel Cluster Server Tick + * + * server Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfTvChannelClusterServerTickCallback(chip::EndpointId endpoint); + +// +// Target Navigator Cluster server +// + +/** @brief Target Navigator Cluster Server Init + * + * Server Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfTargetNavigatorClusterServerInitCallback(chip::EndpointId endpoint); + +/** @brief Target Navigator Cluster Server Attribute Changed + * + * Server Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfTargetNavigatorClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Target Navigator Cluster Server Manufacturer Specific Attribute Changed + * + * Server Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfTargetNavigatorClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Target Navigator Cluster Server Message Sent + * + * Server Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfTargetNavigatorClusterServerMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Target Navigator Cluster Server Pre Attribute Changed + * + * server Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfTargetNavigatorClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Target Navigator Cluster Server Tick + * + * server Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfTargetNavigatorClusterServerTickCallback(chip::EndpointId endpoint); + // // Temperature Measurement Cluster server // @@ -1526,26 +2006,116 @@ EmberAfStatus emberAfTemperatureMeasurementClusterServerPreAttributeChangedCallb */ void emberAfTemperatureMeasurementClusterServerTickCallback(chip::EndpointId endpoint); +// +// Wake on LAN Cluster server +// + +/** @brief Wake on LAN Cluster Server Init + * + * Server Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfWakeOnLanClusterServerInitCallback(chip::EndpointId endpoint); + +/** @brief Wake on LAN Cluster Server Attribute Changed + * + * Server Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfWakeOnLanClusterServerAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Wake on LAN Cluster Server Manufacturer Specific Attribute Changed + * + * Server Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfWakeOnLanClusterServerManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Wake on LAN Cluster Server Message Sent + * + * Server Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfWakeOnLanClusterServerMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Wake on LAN Cluster Server Pre Attribute Changed + * + * server Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfWakeOnLanClusterServerPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Wake on LAN Cluster Server Tick + * + * server Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfWakeOnLanClusterServerTickCallback(chip::EndpointId endpoint); + // Cluster Commands Callback /** - * @brief Barrier Control Cluster BarrierControlGoToPercent Command callback - * @param percentOpen + * @brief Account Login Cluster GetSetupPIN Command callback + * @param tempAccountIdentifier */ -bool emberAfBarrierControlClusterBarrierControlGoToPercentCallback(chip::app::Command * commandObj, uint8_t percentOpen); +bool emberAfAccountLoginClusterGetSetupPINCallback(chip::app::Command * commandObj, uint8_t * tempAccountIdentifier); /** - * @brief Barrier Control Cluster BarrierControlStop Command callback + * @brief Account Login Cluster Login Command callback + * @param tempAccountIdentifier + * @param setupPIN */ -bool emberAfBarrierControlClusterBarrierControlStopCallback(chip::app::Command * commandObj); +bool emberAfAccountLoginClusterLoginCallback(chip::app::Command * commandObj, uint8_t * tempAccountIdentifier, uint8_t * setupPIN); /** - * @brief Basic Cluster MfgSpecificPing Command callback + * @brief Application Launcher Cluster LaunchApp Command callback + * @param data + * @param application */ -bool emberAfBasicClusterMfgSpecificPingCallback(chip::app::Command * commandObj); +bool emberAfApplicationLauncherClusterLaunchAppCallback(chip::app::Command * commandObj, uint8_t * data, + /* TYPE WARNING: array array defaults to */ uint8_t * application); + +/** + * @brief Audio Output Cluster RenameOutput Command callback + * @param index + * @param name + */ + +bool emberAfAudioOutputClusterRenameOutputCallback(chip::app::Command * commandObj, uint8_t index, uint8_t * name); + +/** + * @brief Audio Output Cluster SelectOutput Command callback + * @param index + */ + +bool emberAfAudioOutputClusterSelectOutputCallback(chip::app::Command * commandObj, uint8_t index); /** * @brief Binding Cluster Bind Command callback @@ -1569,17 +2139,6 @@ bool emberAfBindingClusterBindCallback(chip::app::Command * commandObj, chip::No bool emberAfBindingClusterUnbindCallback(chip::app::Command * commandObj, chip::NodeId nodeId, chip::GroupId groupId, chip::EndpointId endpointId, chip::ClusterId clusterId); -/** - * @brief Color Control Cluster MoveColor Command callback - * @param rateX - * @param rateY - * @param optionsMask - * @param optionsOverride - */ - -bool emberAfColorControlClusterMoveColorCallback(chip::app::Command * commandObj, int16_t rateX, int16_t rateY, uint8_t optionsMask, - uint8_t optionsOverride); - /** * @brief Color Control Cluster MoveColorTemperature Command callback * @param moveMode @@ -1616,18 +2175,6 @@ bool emberAfColorControlClusterMoveHueCallback(chip::app::Command * commandObj, bool emberAfColorControlClusterMoveSaturationCallback(chip::app::Command * commandObj, uint8_t moveMode, uint8_t rate, uint8_t optionsMask, uint8_t optionsOverride); -/** - * @brief Color Control Cluster MoveToColor Command callback - * @param colorX - * @param colorY - * @param transitionTime - * @param optionsMask - * @param optionsOverride - */ - -bool emberAfColorControlClusterMoveToColorCallback(chip::app::Command * commandObj, uint16_t colorX, uint16_t colorY, - uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride); - /** * @brief Color Control Cluster MoveToColorTemperature Command callback * @param colorTemperature @@ -1676,18 +2223,6 @@ bool emberAfColorControlClusterMoveToHueAndSaturationCallback(chip::app::Command bool emberAfColorControlClusterMoveToSaturationCallback(chip::app::Command * commandObj, uint8_t saturation, uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride); -/** - * @brief Color Control Cluster StepColor Command callback - * @param stepX - * @param stepY - * @param transitionTime - * @param optionsMask - * @param optionsOverride - */ - -bool emberAfColorControlClusterStepColorCallback(chip::app::Command * commandObj, int16_t stepX, int16_t stepY, - uint16_t transitionTime, uint8_t optionsMask, uint8_t optionsOverride); - /** * @brief Color Control Cluster StepColorTemperature Command callback * @param stepMode @@ -1738,15 +2273,19 @@ bool emberAfColorControlClusterStopMoveStepCallback(chip::app::Command * command /** * @brief Content Launch Cluster LaunchContent Command callback + * @param autoPlay + * @param data */ -bool emberAfContentLaunchClusterLaunchContentCallback(chip::app::Command * commandObj); +bool emberAfContentLaunchClusterLaunchContentCallback(chip::app::Command * commandObj, uint8_t autoPlay, uint8_t * data); /** * @brief Content Launch Cluster LaunchURL Command callback + * @param contentURL + * @param displayString */ -bool emberAfContentLaunchClusterLaunchURLCallback(chip::app::Command * commandObj); +bool emberAfContentLaunchClusterLaunchURLCallback(chip::app::Command * commandObj, uint8_t * contentURL, uint8_t * displayString); /** * @brief Door Lock Cluster ClearAllPins Command callback @@ -1848,13 +2387,6 @@ bool emberAfDoorLockClusterGetWeekdayScheduleCallback(chip::app::Command * comma bool emberAfDoorLockClusterGetYeardayScheduleCallback(chip::app::Command * commandObj, uint8_t scheduleId, uint16_t userId); -/** - * @brief Door Lock Cluster LockDoor Command callback - * @param pin - */ - -bool emberAfDoorLockClusterLockDoorCallback(chip::app::Command * commandObj, uint8_t * PIN); - /** * @brief Door Lock Cluster SetHolidaySchedule Command callback * @param scheduleId @@ -1922,13 +2454,6 @@ bool emberAfDoorLockClusterSetWeekdayScheduleCallback(chip::app::Command * comma bool emberAfDoorLockClusterSetYeardayScheduleCallback(chip::app::Command * commandObj, uint8_t scheduleId, uint16_t userId, uint32_t localStartTime, uint32_t localEndTime); -/** - * @brief Door Lock Cluster UnlockDoor Command callback - * @param pin - */ - -bool emberAfDoorLockClusterUnlockDoorCallback(chip::app::Command * commandObj, uint8_t * PIN); - /** * @brief Door Lock Cluster UnlockWithTimeout Command callback * @param timeoutInSeconds @@ -1964,51 +2489,6 @@ bool emberAfGeneralCommissioningClusterCommissioningCompleteCallback(chip::app:: bool emberAfGeneralCommissioningClusterSetRegulatoryConfigCallback(chip::app::Command * commandObj, uint8_t location, uint8_t * countryCode, uint64_t breadcrumb, uint32_t timeoutMs); -/** - * @brief Groups Cluster AddGroup Command callback - * @param groupId - * @param groupName - */ - -bool emberAfGroupsClusterAddGroupCallback(chip::app::Command * commandObj, uint16_t groupId, uint8_t * groupName); - -/** - * @brief Groups Cluster AddGroupIfIdentifying Command callback - * @param groupId - * @param groupName - */ - -bool emberAfGroupsClusterAddGroupIfIdentifyingCallback(chip::app::Command * commandObj, uint16_t groupId, uint8_t * groupName); - -/** - * @brief Groups Cluster GetGroupMembership Command callback - * @param groupCount - * @param groupList - */ - -bool emberAfGroupsClusterGetGroupMembershipCallback(chip::app::Command * commandObj, uint8_t groupCount, - /* TYPE WARNING: array array defaults to */ uint8_t * groupList); - -/** - * @brief Groups Cluster RemoveAllGroups Command callback - */ - -bool emberAfGroupsClusterRemoveAllGroupsCallback(chip::app::Command * commandObj); - -/** - * @brief Groups Cluster RemoveGroup Command callback - * @param groupId - */ - -bool emberAfGroupsClusterRemoveGroupCallback(chip::app::Command * commandObj, uint16_t groupId); - -/** - * @brief Groups Cluster ViewGroup Command callback - * @param groupId - */ - -bool emberAfGroupsClusterViewGroupCallback(chip::app::Command * commandObj, uint16_t groupId); - /** * @brief IAS Zone Cluster ZoneEnrollResponse Command callback * @param enrollResponseCode @@ -2018,158 +2498,113 @@ bool emberAfGroupsClusterViewGroupCallback(chip::app::Command * commandObj, uint bool emberAfIasZoneClusterZoneEnrollResponseCallback(chip::app::Command * commandObj, uint8_t enrollResponseCode, uint8_t zoneId); /** - * @brief Identify Cluster Identify Command callback - * @param identifyTime + * @brief Keypad Input Cluster SendKey Command callback + * @param keyCode */ -bool emberAfIdentifyClusterIdentifyCallback(chip::app::Command * commandObj, uint16_t identifyTime); +bool emberAfKeypadInputClusterSendKeyCallback(chip::app::Command * commandObj, uint8_t keyCode); /** - * @brief Identify Cluster IdentifyQuery Command callback - */ - -bool emberAfIdentifyClusterIdentifyQueryCallback(chip::app::Command * commandObj); - -/** - * @brief Level Control Cluster Move Command callback - * @param moveMode - * @param rate - * @param optionMask - * @param optionOverride - */ - -bool emberAfLevelControlClusterMoveCallback(chip::app::Command * commandObj, uint8_t moveMode, uint8_t rate, uint8_t optionMask, - uint8_t optionOverride); - -/** - * @brief Level Control Cluster MoveToLevel Command callback - * @param level - * @param transitionTime - * @param optionMask - * @param optionOverride - */ - -bool emberAfLevelControlClusterMoveToLevelCallback(chip::app::Command * commandObj, uint8_t level, uint16_t transitionTime, - uint8_t optionMask, uint8_t optionOverride); - -/** - * @brief Level Control Cluster MoveToLevelWithOnOff Command callback - * @param level - * @param transitionTime - */ - -bool emberAfLevelControlClusterMoveToLevelWithOnOffCallback(chip::app::Command * commandObj, uint8_t level, - uint16_t transitionTime); - -/** - * @brief Level Control Cluster MoveWithOnOff Command callback - * @param moveMode - * @param rate + * @brief Low Power Cluster Sleep Command callback */ -bool emberAfLevelControlClusterMoveWithOnOffCallback(chip::app::Command * commandObj, uint8_t moveMode, uint8_t rate); +bool emberAfLowPowerClusterSleepCallback(chip::app::Command * commandObj); /** - * @brief Level Control Cluster Step Command callback - * @param stepMode - * @param stepSize - * @param transitionTime - * @param optionMask - * @param optionOverride + * @brief Media Input Cluster HideInputStatus Command callback */ -bool emberAfLevelControlClusterStepCallback(chip::app::Command * commandObj, uint8_t stepMode, uint8_t stepSize, - uint16_t transitionTime, uint8_t optionMask, uint8_t optionOverride); +bool emberAfMediaInputClusterHideInputStatusCallback(chip::app::Command * commandObj); /** - * @brief Level Control Cluster StepWithOnOff Command callback - * @param stepMode - * @param stepSize - * @param transitionTime + * @brief Media Input Cluster RenameInput Command callback + * @param index + * @param name */ -bool emberAfLevelControlClusterStepWithOnOffCallback(chip::app::Command * commandObj, uint8_t stepMode, uint8_t stepSize, - uint16_t transitionTime); +bool emberAfMediaInputClusterRenameInputCallback(chip::app::Command * commandObj, uint8_t index, uint8_t * name); /** - * @brief Level Control Cluster Stop Command callback - * @param optionMask - * @param optionOverride + * @brief Media Input Cluster SelectInput Command callback + * @param index */ -bool emberAfLevelControlClusterStopCallback(chip::app::Command * commandObj, uint8_t optionMask, uint8_t optionOverride); +bool emberAfMediaInputClusterSelectInputCallback(chip::app::Command * commandObj, uint8_t index); /** - * @brief Level Control Cluster StopWithOnOff Command callback + * @brief Media Input Cluster ShowInputStatus Command callback */ -bool emberAfLevelControlClusterStopWithOnOffCallback(chip::app::Command * commandObj); +bool emberAfMediaInputClusterShowInputStatusCallback(chip::app::Command * commandObj); /** - * @brief Low Power Cluster Sleep Command callback + * @brief Media Playback Cluster MediaFastForward Command callback */ -bool emberAfLowPowerClusterSleepCallback(chip::app::Command * commandObj); +bool emberAfMediaPlaybackClusterMediaFastForwardCallback(chip::app::Command * commandObj); /** - * @brief Media Playback Cluster FastForwardRequest Command callback + * @brief Media Playback Cluster MediaNext Command callback */ -bool emberAfMediaPlaybackClusterFastForwardRequestCallback(chip::app::Command * commandObj); +bool emberAfMediaPlaybackClusterMediaNextCallback(chip::app::Command * commandObj); /** - * @brief Media Playback Cluster NextRequest Command callback + * @brief Media Playback Cluster MediaPause Command callback */ -bool emberAfMediaPlaybackClusterNextRequestCallback(chip::app::Command * commandObj); +bool emberAfMediaPlaybackClusterMediaPauseCallback(chip::app::Command * commandObj); /** - * @brief Media Playback Cluster PauseRequest Command callback + * @brief Media Playback Cluster MediaPlay Command callback */ -bool emberAfMediaPlaybackClusterPauseRequestCallback(chip::app::Command * commandObj); +bool emberAfMediaPlaybackClusterMediaPlayCallback(chip::app::Command * commandObj); /** - * @brief Media Playback Cluster PlayRequest Command callback + * @brief Media Playback Cluster MediaPrevious Command callback */ -bool emberAfMediaPlaybackClusterPlayRequestCallback(chip::app::Command * commandObj); +bool emberAfMediaPlaybackClusterMediaPreviousCallback(chip::app::Command * commandObj); /** - * @brief Media Playback Cluster PreviousRequest Command callback + * @brief Media Playback Cluster MediaRewind Command callback */ -bool emberAfMediaPlaybackClusterPreviousRequestCallback(chip::app::Command * commandObj); +bool emberAfMediaPlaybackClusterMediaRewindCallback(chip::app::Command * commandObj); /** - * @brief Media Playback Cluster RewindRequest Command callback + * @brief Media Playback Cluster MediaSkipBackward Command callback + * @param deltaPositionMilliseconds */ -bool emberAfMediaPlaybackClusterRewindRequestCallback(chip::app::Command * commandObj); +bool emberAfMediaPlaybackClusterMediaSkipBackwardCallback(chip::app::Command * commandObj, uint64_t deltaPositionMilliseconds); /** - * @brief Media Playback Cluster SkipBackwardRequest Command callback + * @brief Media Playback Cluster MediaSkipForward Command callback + * @param deltaPositionMilliseconds */ -bool emberAfMediaPlaybackClusterSkipBackwardRequestCallback(chip::app::Command * commandObj); +bool emberAfMediaPlaybackClusterMediaSkipForwardCallback(chip::app::Command * commandObj, uint64_t deltaPositionMilliseconds); /** - * @brief Media Playback Cluster SkipForwardRequest Command callback + * @brief Media Playback Cluster MediaSkipSeek Command callback + * @param position */ -bool emberAfMediaPlaybackClusterSkipForwardRequestCallback(chip::app::Command * commandObj); +bool emberAfMediaPlaybackClusterMediaSkipSeekCallback(chip::app::Command * commandObj, uint64_t position); /** - * @brief Media Playback Cluster StartOverRequest Command callback + * @brief Media Playback Cluster MediaStartOver Command callback */ -bool emberAfMediaPlaybackClusterStartOverRequestCallback(chip::app::Command * commandObj); +bool emberAfMediaPlaybackClusterMediaStartOverCallback(chip::app::Command * commandObj); /** - * @brief Media Playback Cluster StopRequest Command callback + * @brief Media Playback Cluster MediaStop Command callback */ -bool emberAfMediaPlaybackClusterStopRequestCallback(chip::app::Command * commandObj); +bool emberAfMediaPlaybackClusterMediaStopCallback(chip::app::Command * commandObj); /** * @brief Network Commissioning Cluster DisableNetwork Command callback @@ -2238,65 +2673,35 @@ bool emberAfOnOffClusterOnCallback(chip::app::Command * commandObj); bool emberAfOnOffClusterToggleCallback(chip::app::Command * commandObj); /** - * @brief Scenes Cluster AddScene Command callback - * @param groupId - * @param sceneId - * @param transitionTime - * @param sceneName - * @param extensionFieldSets - */ - -bool emberAfScenesClusterAddSceneCallback(chip::app::Command * commandObj, uint16_t groupId, uint8_t sceneId, - uint16_t transitionTime, uint8_t * sceneName, - /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets); - -/** - * @brief Scenes Cluster GetSceneMembership Command callback - * @param groupId - */ - -bool emberAfScenesClusterGetSceneMembershipCallback(chip::app::Command * commandObj, uint16_t groupId); - -/** - * @brief Scenes Cluster RecallScene Command callback - * @param groupId - * @param sceneId - * @param transitionTime - */ - -bool emberAfScenesClusterRecallSceneCallback(chip::app::Command * commandObj, uint16_t groupId, uint8_t sceneId, - uint16_t transitionTime); - -/** - * @brief Scenes Cluster RemoveAllScenes Command callback - * @param groupId + * @brief TV Channel Cluster ChangeChannel Command callback + * @param match */ -bool emberAfScenesClusterRemoveAllScenesCallback(chip::app::Command * commandObj, uint16_t groupId); +bool emberAfTvChannelClusterChangeChannelCallback(chip::app::Command * commandObj, uint8_t * match); /** - * @brief Scenes Cluster RemoveScene Command callback - * @param groupId - * @param sceneId + * @brief TV Channel Cluster ChangeChannelByNumber Command callback + * @param majorNumber + * @param minorNumber */ -bool emberAfScenesClusterRemoveSceneCallback(chip::app::Command * commandObj, uint16_t groupId, uint8_t sceneId); +bool emberAfTvChannelClusterChangeChannelByNumberCallback(chip::app::Command * commandObj, uint16_t majorNumber, + uint16_t minorNumber); /** - * @brief Scenes Cluster StoreScene Command callback - * @param groupId - * @param sceneId + * @brief TV Channel Cluster SkipChannel Command callback + * @param count */ -bool emberAfScenesClusterStoreSceneCallback(chip::app::Command * commandObj, uint16_t groupId, uint8_t sceneId); +bool emberAfTvChannelClusterSkipChannelCallback(chip::app::Command * commandObj, uint16_t Count); /** - * @brief Scenes Cluster ViewScene Command callback - * @param groupId - * @param sceneId + * @brief Target Navigator Cluster NavigateTarget Command callback + * @param target + * @param data */ -bool emberAfScenesClusterViewSceneCallback(chip::app::Command * commandObj, uint16_t groupId, uint8_t sceneId); +bool emberAfTargetNavigatorClusterNavigateTargetCallback(chip::app::Command * commandObj, uint8_t target, uint8_t * data); // // Non-Cluster Related Callbacks diff --git a/examples/tv-app/tv-common/gen/client-command-macro.h b/examples/tv-app/tv-common/gen/client-command-macro.h index c976129992f7e6..1cfc06d80ce7c2 100644 --- a/examples/tv-app/tv-common/gen/client-command-macro.h +++ b/examples/tv-app/tv-common/gen/client-command-macro.h @@ -3361,95 +3361,126 @@ \ ZCL_NAVIGATE_TARGET_COMMAND_ID, "uuuu", target, status, data, data); -/** @brief Command description for PlayRequest +/** @brief Command description for MediaPlay * - * Command: PlayRequest + * Command: MediaPlay + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPlayRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPlay(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_PLAY_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PLAY_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PauseRequest +/** @brief Command description for MediaPause * - * Command: PauseRequest + * Command: MediaPause + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPauseRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPause(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PAUSE_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PAUSE_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StopRequest +/** @brief Command description for MediaStop * - * Command: StopRequest + * Command: MediaStop + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStopRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStop(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_STOP_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_STOP_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StartOverRequest +/** @brief Command description for MediaStartOver * - * Command: StartOverRequest + * Command: MediaStartOver + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStartOverRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStartOver(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_START_OVER_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_START_OVER_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PreviousRequest +/** @brief Command description for MediaPrevious * - * Command: PreviousRequest + * Command: MediaPrevious + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPreviousRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPrevious(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PREVIOUS_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PREVIOUS_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for NextRequest +/** @brief Command description for MediaNext * - * Command: NextRequest + * Command: MediaNext + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterNextRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaNext(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_NEXT_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_NEXT_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for RewindRequest +/** @brief Command description for MediaRewind * - * Command: RewindRequest + * Command: MediaRewind + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterRewindRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaRewind(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_REWIND_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_REWIND_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for FastForwardRequest +/** @brief Command description for MediaFastForward * - * Command: FastForwardRequest + * Command: MediaFastForward + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterFastForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaFastForward(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_FAST_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_FAST_FORWARD_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for SkipForwardRequest +/** @brief Command description for MediaSkipForward * - * Command: SkipForwardRequest + * Command: MediaSkipForward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipForward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); -/** @brief Command description for SkipBackwardRequest +/** @brief Command description for MediaSkipBackward * - * Command: SkipBackwardRequest + * Command: MediaSkipBackward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipBackwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipBackward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); + +/** @brief Command description for MediaSkipSeek + * + * Command: MediaSkipSeek + * @param position INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus + */ +#define emberAfFillCommandMedia \ + PlaybackClusterMediaSkipSeek(position, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ + \ + ZCL_MEDIA_SKIP_SEEK_COMMAND_ID, "uu", position, mediaPlaybackStatus); /** @brief Command description for SelectInput * @@ -3502,7 +3533,7 @@ /** @brief Command description for SendKey * * Command: SendKey - * @param keyCode INT8U + * @param keyCode KeypadInputCecKeyCode * @param status KeypadInputStatus */ #define emberAfFillCommandKeypad \ @@ -3513,23 +3544,30 @@ /** @brief Command description for LaunchContent * * Command: LaunchContent + * @param autoPlay BOOLEAN + * @param data CHAR_STRING + * @param data CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchContent(contentLaunchStatus) \ + LaunchClusterLaunchContent(autoPlay, data, data, contentLaunchStatus) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_CONTENT_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_CONTENT_COMMAND_ID, "uuuu", autoPlay, data, data, contentLaunchStatus); /** @brief Command description for LaunchURL * * Command: LaunchURL + * @param contentURL CHAR_STRING + * @param data CHAR_STRING + * @param displayString CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchURL(contentLaunchStatus) emberAfFillExternalBuffer(mask, \ + LaunchClusterLaunchURL(contentURL, data, displayString, contentLaunchStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_URL_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_URL_COMMAND_ID, "uuuu", contentURL, data, displayString, contentLaunchStatus); /** @brief Command description for SelectOutput * @@ -3555,17 +3593,17 @@ /** @brief Command description for LaunchApp * * Command: LaunchApp + * @param data CHAR_STRING + * @param status ApplicationLauncherStatus * @param application ApplicationLauncherApp [] * @param applicationLen int - * @param status ApplicationLauncherStatus - * @param data CHAR_STRING * @param data CHAR_STRING */ #define emberAfFillCommandApplication \ - LauncherClusterLaunchApp(application, applicationLen, status, data, data) \ + LauncherClusterLaunchApp(data, status, application, applicationLen, data) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_APP_COMMAND_ID, "buuu", application, applicationLen, status, data, data); + ZCL_LAUNCH_APP_COMMAND_ID, "uubu", data, status, application, applicationLen, data); /** @brief Command description for GetSetupPIN * diff --git a/examples/tv-app/tv-common/gen/command-id.h b/examples/tv-app/tv-common/gen/command-id.h index e3c8f93cadb923..25ee08826f030c 100644 --- a/examples/tv-app/tv-common/gen/command-id.h +++ b/examples/tv-app/tv-common/gen/command-id.h @@ -415,17 +415,28 @@ #define ZCL_NAVIGATE_TARGET_RESPONSE_COMMAND_ID (0x00) // Commands for cluster: Media Playback -#define ZCL_PLAY_REQUEST_COMMAND_ID (0x00) -#define ZCL_PLAYBACK_COMMAND_ID (0x00) -#define ZCL_PAUSE_REQUEST_COMMAND_ID (0x01) -#define ZCL_STOP_REQUEST_COMMAND_ID (0x02) -#define ZCL_START_OVER_REQUEST_COMMAND_ID (0x03) -#define ZCL_PREVIOUS_REQUEST_COMMAND_ID (0x04) -#define ZCL_NEXT_REQUEST_COMMAND_ID (0x05) -#define ZCL_REWIND_REQUEST_COMMAND_ID (0x06) -#define ZCL_FAST_FORWARD_REQUEST_COMMAND_ID (0x07) -#define ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID (0x08) -#define ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID (0x09) +#define ZCL_MEDIA_PLAY_COMMAND_ID (0x00) +#define ZCL_MEDIA_PLAY_RESPONSE_COMMAND_ID (0x00) +#define ZCL_MEDIA_PAUSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_PAUSE_RESPONSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_STOP_COMMAND_ID (0x02) +#define ZCL_MEDIA_STOP_RESPONSE_COMMAND_ID (0x02) +#define ZCL_MEDIA_START_OVER_COMMAND_ID (0x03) +#define ZCL_MEDIA_START_OVER_RESPONSE_COMMAND_ID (0x03) +#define ZCL_MEDIA_PREVIOUS_COMMAND_ID (0x04) +#define ZCL_MEDIA_PREVIOUS_RESPONSE_COMMAND_ID (0x04) +#define ZCL_MEDIA_NEXT_COMMAND_ID (0x05) +#define ZCL_MEDIA_NEXT_RESPONSE_COMMAND_ID (0x05) +#define ZCL_MEDIA_REWIND_COMMAND_ID (0x06) +#define ZCL_MEDIA_REWIND_RESPONSE_COMMAND_ID (0x06) +#define ZCL_MEDIA_FAST_FORWARD_COMMAND_ID (0x07) +#define ZCL_MEDIA_FAST_FORWARD_RESPONSE_COMMAND_ID (0x07) +#define ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_BACKWARD_RESPONSE_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_SEEK_COMMAND_ID (0x0A) +#define ZCL_MEDIA_SKIP_SEEK_RESPONSE_COMMAND_ID (0x0A) // Commands for cluster: Media Input #define ZCL_SELECT_INPUT_COMMAND_ID (0x00) diff --git a/examples/tv-app/tv-common/gen/endpoint_config.h b/examples/tv-app/tv-common/gen/endpoint_config.h index b5639bb4a112f0..95fd02872e8c02 100644 --- a/examples/tv-app/tv-common/gen/endpoint_config.h +++ b/examples/tv-app/tv-common/gen/endpoint_config.h @@ -27,99 +27,151 @@ #define GENERATED_DEFAULTS \ { \ \ - /* Endpoint: 1, Cluster: General Commissioning (server), big-endian */ \ + /* Endpoint: 0, Cluster: Wake on LAN (server), big-endian */ \ \ - /* 0 - FabricId, */ \ - 1, 'o', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + /* 0 - wake on lan mac address, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 8 - Breadcrumb, */ \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + /* Endpoint: 0, Cluster: TV Channel (server), big-endian */ \ \ - /* Endpoint: 3, Cluster: Application Basic (server), big-endian */ \ + /* 32 - tv channel list, */ \ + 1, 'o', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 16 - vendor name, */ \ + /* 64 - tv channel lineup, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 48 - application name, */ \ + /* Endpoint: 0, Cluster: Target Navigator (server), big-endian */ \ + \ + /* 96 - target navigator list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 80 - application id, */ \ + /* Endpoint: 0, Cluster: Media Playback (server), big-endian */ \ + \ + /* 128 - start time, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, \ + \ + /* 136 - duration, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 144 - updated at, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 152 - posistion, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 160 - playback speed, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 168 - seek range end, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 176 - seek range start, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* Endpoint: 0, Cluster: Media Input (server), big-endian */ \ + \ + /* 184 - media input list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 4, Cluster: Application Basic (server), big-endian */ \ + /* Endpoint: 0, Cluster: Content Launch (server), big-endian */ \ \ - /* 112 - vendor name, */ \ + /* 216 - accepts header list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 144 - application name, */ \ + /* Endpoint: 0, Cluster: Application Launcher (server), big-endian */ \ + \ + /* 248 - application launcher list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 176 - application id, */ \ + /* Endpoint: 1, Cluster: Audio Output (server), big-endian */ \ + \ + /* 280 - audio output list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 5, Cluster: Application Basic (server), big-endian */ \ + /* Endpoint: 2, Cluster: Media Playback (server), big-endian */ \ + \ + /* 312 - start time, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, \ + \ + /* 320 - duration, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 328 - updated at, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 336 - posistion, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 344 - playback speed, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 208 - vendor name, */ \ + /* 352 - seek range end, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 360 - seek range start, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* Endpoint: 2, Cluster: Application Basic (server), big-endian */ \ + \ + /* 368 - vendor name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 240 - application name, */ \ + /* 400 - application name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 272 - application id, */ \ + /* 432 - application id, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 6, Cluster: Basic (server), big-endian */ \ + /* Endpoint: 3, Cluster: Application Basic (server), big-endian */ \ \ - /* 304 - VendorName, */ \ + /* 464 - vendor name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 336 - ProductName, */ \ + /* 496 - application name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 368 - UserLabel, */ \ + /* 528 - application id, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 400 - Location, */ \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + /* Endpoint: 4, Cluster: Application Basic (server), big-endian */ \ \ - /* 416 - HardwareVersionString, */ \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + /* 560 - vendor name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - \ - /* 480 - SoftwareVersion, */ \ - 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 484 - SoftwareVersionString, */ \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + /* 592 - application name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 624 - application id, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 6, Cluster: General Commissioning (server), big-endian */ \ + /* Endpoint: 5, Cluster: General Commissioning (server), big-endian */ \ \ - /* 548 - FabricId, */ \ + /* 656 - FabricId, */ \ 1, 'o', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 556 - Breadcrumb, */ \ + /* 664 - Breadcrumb, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 6, Cluster: Color Control (server), big-endian */ \ + /* Endpoint: 5, Cluster: Color Control (server), big-endian */ \ \ - /* 564 - compensation text, */ \ + /* 672 - compensation text, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -135,28 +187,28 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 6, Cluster: IAS Zone (server), big-endian */ \ + /* Endpoint: 5, Cluster: IAS Zone (server), big-endian */ \ \ - /* 818 - IAS CIE address, */ \ + /* 926 - IAS CIE address, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 6, Cluster: Application Basic (server), big-endian */ \ + /* Endpoint: 5, Cluster: Application Basic (server), big-endian */ \ \ - /* 826 - vendor name, */ \ + /* 934 - vendor name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 858 - application name, */ \ + /* 966 - application name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 890 - application id, */ \ + /* 998 - application id, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 6, Cluster: Group Key Management (server), big-endian */ \ + /* Endpoint: 5, Cluster: Group Key Management (server), big-endian */ \ \ - /* 922 - groups, */ \ + /* 1030 - groups, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -172,7 +224,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 1176 - group keys, */ \ + /* 1284 - group keys, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -193,99 +245,151 @@ #define GENERATED_DEFAULTS \ { \ \ - /* Endpoint: 1, Cluster: General Commissioning (server), little-endian */ \ + /* Endpoint: 0, Cluster: Wake on LAN (server), little-endian */ \ \ - /* 0 - FabricId, */ \ - 1, 'o', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + /* 0 - wake on lan mac address, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 8 - Breadcrumb, */ \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + /* Endpoint: 0, Cluster: TV Channel (server), little-endian */ \ \ - /* Endpoint: 3, Cluster: Application Basic (server), little-endian */ \ + /* 32 - tv channel list, */ \ + 1, 'o', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 16 - vendor name, */ \ + /* 64 - tv channel lineup, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 48 - application name, */ \ + /* Endpoint: 0, Cluster: Target Navigator (server), little-endian */ \ + \ + /* 96 - target navigator list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 80 - application id, */ \ + /* Endpoint: 0, Cluster: Media Playback (server), little-endian */ \ + \ + /* 128 - start time, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, \ + \ + /* 136 - duration, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 144 - updated at, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 152 - posistion, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 160 - playback speed, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 168 - seek range end, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 176 - seek range start, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* Endpoint: 0, Cluster: Media Input (server), little-endian */ \ + \ + /* 184 - media input list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 4, Cluster: Application Basic (server), little-endian */ \ + /* Endpoint: 0, Cluster: Content Launch (server), little-endian */ \ \ - /* 112 - vendor name, */ \ + /* 216 - accepts header list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 144 - application name, */ \ + /* Endpoint: 0, Cluster: Application Launcher (server), little-endian */ \ + \ + /* 248 - application launcher list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 176 - application id, */ \ + /* Endpoint: 1, Cluster: Audio Output (server), little-endian */ \ + \ + /* 280 - audio output list, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 5, Cluster: Application Basic (server), little-endian */ \ + /* Endpoint: 2, Cluster: Media Playback (server), little-endian */ \ + \ + /* 312 - start time, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, \ + \ + /* 320 - duration, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 328 - updated at, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 336 - posistion, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 208 - vendor name, */ \ + /* 344 - playback speed, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 352 - seek range end, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 360 - seek range start, */ \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* Endpoint: 2, Cluster: Application Basic (server), little-endian */ \ + \ + /* 368 - vendor name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 240 - application name, */ \ + /* 400 - application name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 272 - application id, */ \ + /* 432 - application id, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 6, Cluster: Basic (server), little-endian */ \ + /* Endpoint: 3, Cluster: Application Basic (server), little-endian */ \ \ - /* 304 - VendorName, */ \ + /* 464 - vendor name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 336 - ProductName, */ \ + /* 496 - application name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 368 - UserLabel, */ \ + /* 528 - application id, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 400 - Location, */ \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + /* Endpoint: 4, Cluster: Application Basic (server), little-endian */ \ \ - /* 416 - HardwareVersionString, */ \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + /* 560 - vendor name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - \ - /* 480 - SoftwareVersion, */ \ - 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 484 - SoftwareVersionString, */ \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + /* 592 - application name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + \ + /* 624 - application id, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 6, Cluster: General Commissioning (server), little-endian */ \ + /* Endpoint: 5, Cluster: General Commissioning (server), little-endian */ \ \ - /* 548 - FabricId, */ \ + /* 656 - FabricId, */ \ 1, 'o', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 556 - Breadcrumb, */ \ + /* 664 - Breadcrumb, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 6, Cluster: Color Control (server), little-endian */ \ + /* Endpoint: 5, Cluster: Color Control (server), little-endian */ \ \ - /* 564 - compensation text, */ \ + /* 672 - compensation text, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -301,28 +405,28 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 6, Cluster: IAS Zone (server), little-endian */ \ + /* Endpoint: 5, Cluster: IAS Zone (server), little-endian */ \ \ - /* 818 - IAS CIE address, */ \ + /* 926 - IAS CIE address, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 6, Cluster: Application Basic (server), little-endian */ \ + /* Endpoint: 5, Cluster: Application Basic (server), little-endian */ \ \ - /* 826 - vendor name, */ \ + /* 934 - vendor name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 858 - application name, */ \ + /* 966 - application name, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 890 - application id, */ \ + /* 998 - application id, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* Endpoint: 6, Cluster: Group Key Management (server), little-endian */ \ + /* Endpoint: 5, Cluster: Group Key Management (server), little-endian */ \ \ - /* 922 - groups, */ \ + /* 1030 - groups, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -338,7 +442,7 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ \ - /* 1176 - group keys, */ \ + /* 1284 - group keys, */ \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ @@ -357,7 +461,7 @@ #endif // BIGENDIAN_CPU -#define GENERATED_DEFAULTS_COUNT (27) +#define GENERATED_DEFAULTS_COUNT (40) #define ZAP_TYPE(type) ZCL_##type##_ATTRIBUTE_TYPE #define ZAP_LONG_DEFAULTS_INDEX(index) \ @@ -385,82 +489,159 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 152 +#define GENERATED_ATTRIBUTE_COUNT 188 #define GENERATED_ATTRIBUTES \ { \ \ - /* Endpoint: 1, Cluster: On/off (server) */ \ - { 0x0000, ZAP_TYPE(BOOLEAN), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* on/off */ \ - { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(2) }, /* cluster revision */ \ + /* Endpoint: 0, Cluster: Identify (server) */ \ + { 0x0000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0x0000) }, /* identify time */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(2) }, /* cluster revision */ \ + \ + /* Endpoint: 0, Cluster: Groups (server) */ \ + { 0x0000, ZAP_TYPE(BITMAP8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* name support */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) }, /* cluster revision */ \ + \ + /* Endpoint: 0, Cluster: Scenes (server) */ \ + { 0x0000, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* scene count */ \ + { 0x0001, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* current scene */ \ + { 0x0002, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* current group */ \ + { 0x0003, ZAP_TYPE(BOOLEAN), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* scene valid */ \ + { 0x0004, ZAP_TYPE(BITMAP8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* name support */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) }, /* cluster revision */ \ + \ + /* Endpoint: 0, Cluster: On/off (server) */ \ + { 0x0000, ZAP_TYPE(BOOLEAN), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* on/off */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(2) }, /* cluster revision */ \ \ - /* Endpoint: 1, Cluster: General Commissioning (server) */ \ - { 0x0000, ZAP_TYPE(OCTET_STRING), 8, 0, ZAP_LONG_DEFAULTS_INDEX(0) }, /* FabricId */ \ - { 0x0001, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(8) }, /* Breadcrumb */ \ - { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + /* Endpoint: 0, Cluster: Level Control (server) */ \ + { 0x0000, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* current level */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) }, /* cluster revision */ \ \ - /* Endpoint: 1, Cluster: Media Playback (server) */ \ - { 0x0000, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* current state */ \ + /* Endpoint: 0, Cluster: General Commissioning (server) */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ - /* Endpoint: 1, Cluster: Low Power (server) */ \ + /* Endpoint: 0, Cluster: Color Control (server) */ \ + { 0x0003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x616B) }, /* current x */ \ + { 0x0004, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x607D) }, /* current y */ \ + { 0x000F, ZAP_TYPE(BITMAP8), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0x00) }, /* color control options */ \ + { 0x400D, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* couple color temp to level min-mireds */ \ + { 0x4010, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), \ + ZAP_EMPTY_DEFAULT() }, /* start up color temperature mireds */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) }, /* cluster revision */ \ + \ + /* Endpoint: 0, Cluster: Wake on LAN (server) */ \ + { 0x0000, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(0) }, /* wake on lan mac address */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 0, Cluster: TV Channel (server) */ \ + { 0x0000, ZAP_TYPE(OCTET_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(32) }, /* tv channel list */ \ + { 0x0001, ZAP_TYPE(OCTET_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(64) }, /* tv channel lineup */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 0, Cluster: Target Navigator (server) */ \ + { 0x0000, ZAP_TYPE(OCTET_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(96) }, /* target navigator list */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 0, Cluster: Media Playback (server) */ \ + { 0x0000, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* playback state */ \ + { 0x0001, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(128) }, /* start time */ \ + { 0x0002, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(136) }, /* duration */ \ + { 0x0003, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(144) }, /* updated at */ \ + { 0x0004, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(152) }, /* posistion */ \ + { 0x0005, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(160) }, /* playback speed */ \ + { 0x0006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(168) }, /* seek range end */ \ + { 0x0007, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(176) }, /* seek range start */ \ + \ + /* Endpoint: 0, Cluster: Media Input (server) */ \ + { 0x0000, ZAP_TYPE(OCTET_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(184) }, /* media input list */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 0, Cluster: Low Power (server) */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ - /* Endpoint: 1, Cluster: Content Launch (server) */ \ + /* Endpoint: 0, Cluster: Keypad Input (server) */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ - /* Endpoint: 2, Cluster: On/off (server) */ \ + /* Endpoint: 0, Cluster: Content Launch (server) */ \ + { 0x0000, ZAP_TYPE(OCTET_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(216) }, /* accepts header list */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 0, Cluster: Application Launcher (server) */ \ + { 0x0000, ZAP_TYPE(OCTET_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(248) }, /* application launcher list */ \ + { 0x0001, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* catalog vendor id */ \ + { 0x0002, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* application id */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: On/off (server) */ \ { 0x0000, ZAP_TYPE(BOOLEAN), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* on/off */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(2) }, /* cluster revision */ \ \ - /* Endpoint: 2, Cluster: Level Control (server) */ \ + /* Endpoint: 1, Cluster: Level Control (server) */ \ { 0x0000, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* current level */ \ - { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) }, /* cluster revision */ \ \ - /* Endpoint: 3, Cluster: Content Launch (server) */ \ + /* Endpoint: 1, Cluster: Audio Output (server) */ \ + { 0x0000, ZAP_TYPE(OCTET_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(280) }, /* audio output list */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 2, Cluster: Media Playback (server) */ \ + { 0x0000, ZAP_TYPE(ENUM8), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* playback state */ \ + { 0x0001, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(312) }, /* start time */ \ + { 0x0002, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(320) }, /* duration */ \ + { 0x0003, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(328) }, /* updated at */ \ + { 0x0004, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(336) }, /* posistion */ \ + { 0x0005, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(344) }, /* playback speed */ \ + { 0x0006, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(352) }, /* seek range end */ \ + { 0x0007, ZAP_TYPE(INT64U), 8, 0, ZAP_LONG_DEFAULTS_INDEX(360) }, /* seek range start */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 2, Cluster: Content Launch (server) */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ - /* Endpoint: 3, Cluster: Application Basic (server) */ \ - { 0x0000, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(16) }, /* vendor name */ \ - { 0x0001, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* vendor id */ \ - { 0x0002, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(48) }, /* application name */ \ - { 0x0003, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* product id */ \ - { 0x0005, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(80) }, /* application id */ \ - { 0x0006, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* catalog vendor id */ \ - { 0x0007, ZAP_TYPE(ENUM8), 1, 0, ZAP_SIMPLE_DEFAULT(0x01) }, /* application satus */ \ - { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + /* Endpoint: 2, Cluster: Application Basic (server) */ \ + { 0x0000, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(368) }, /* vendor name */ \ + { 0x0001, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* vendor id */ \ + { 0x0002, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(400) }, /* application name */ \ + { 0x0003, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* product id */ \ + { 0x0005, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(432) }, /* application id */ \ + { 0x0006, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* catalog vendor id */ \ + { 0x0007, ZAP_TYPE(ENUM8), 1, 0, ZAP_SIMPLE_DEFAULT(0x01) }, /* application satus */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ - /* Endpoint: 4, Cluster: Application Basic (server) */ \ - { 0x0000, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(112) }, /* vendor name */ \ + /* Endpoint: 2, Cluster: Account Login (server) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 3, Cluster: Application Basic (server) */ \ + { 0x0000, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(464) }, /* vendor name */ \ { 0x0001, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* vendor id */ \ - { 0x0002, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(144) }, /* application name */ \ + { 0x0002, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(496) }, /* application name */ \ { 0x0003, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* product id */ \ - { 0x0005, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(176) }, /* application id */ \ + { 0x0005, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(528) }, /* application id */ \ { 0x0006, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* catalog vendor id */ \ { 0x0007, ZAP_TYPE(ENUM8), 1, 0, ZAP_SIMPLE_DEFAULT(0x01) }, /* application satus */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ - /* Endpoint: 5, Cluster: Content Launch (server) */ \ + /* Endpoint: 4, Cluster: Content Launch (server) */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ - /* Endpoint: 5, Cluster: Application Basic (server) */ \ - { 0x0000, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(208) }, /* vendor name */ \ + /* Endpoint: 4, Cluster: Application Basic (server) */ \ + { 0x0000, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(560) }, /* vendor name */ \ { 0x0001, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* vendor id */ \ - { 0x0002, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(240) }, /* application name */ \ + { 0x0002, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(592) }, /* application name */ \ { 0x0003, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* product id */ \ - { 0x0005, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(272) }, /* application id */ \ + { 0x0005, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(624) }, /* application id */ \ { 0x0006, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* catalog vendor id */ \ { 0x0007, ZAP_TYPE(ENUM8), 1, 0, ZAP_SIMPLE_DEFAULT(0x01) }, /* application satus */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: Identify (server) */ \ + /* Endpoint: 5, Cluster: Identify (server) */ \ { 0x0000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0x0000) }, /* identify time */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(2) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: Groups (server) */ \ + /* Endpoint: 5, Cluster: Groups (server) */ \ { 0x0000, ZAP_TYPE(BITMAP8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* name support */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: Scenes (server) */ \ + /* Endpoint: 5, Cluster: Scenes (server) */ \ { 0x0000, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* scene count */ \ { 0x0001, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* current scene */ \ { 0x0002, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* current group */ \ @@ -468,61 +649,43 @@ { 0x0004, ZAP_TYPE(BITMAP8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* name support */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: On/off (server) */ \ + /* Endpoint: 5, Cluster: On/off (server) */ \ { 0x0000, ZAP_TYPE(BOOLEAN), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* on/off */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(2) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: Level Control (server) */ \ + /* Endpoint: 5, Cluster: Level Control (server) */ \ { 0x0000, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* current level */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: Basic (server) */ \ - { 0x0000, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_EMPTY_DEFAULT() }, /* InteractionModelVersion */ \ - { 0x0001, ZAP_TYPE(CHAR_STRING), 32, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_LONG_DEFAULTS_INDEX(304) }, /* VendorName */ \ - { 0x0002, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_EMPTY_DEFAULT() }, /* VendorID */ \ - { 0x0003, ZAP_TYPE(CHAR_STRING), 32, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_LONG_DEFAULTS_INDEX(336) }, /* ProductName */ \ - { 0x0004, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_EMPTY_DEFAULT() }, /* ProductID */ \ - { 0x0005, ZAP_TYPE(CHAR_STRING), 32, ZAP_ATTRIBUTE_MASK(SINGLETON) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_LONG_DEFAULTS_INDEX(368) }, /* UserLabel */ \ - { 0x0006, ZAP_TYPE(CHAR_STRING), 16, ZAP_ATTRIBUTE_MASK(SINGLETON) | ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_LONG_DEFAULTS_INDEX(400) }, /* Location */ \ - { 0x0007, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(0x00) }, /* HardwareVersion */ \ - { 0x0008, ZAP_TYPE(CHAR_STRING), 64, ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_LONG_DEFAULTS_INDEX(416) }, /* HardwareVersionString */ \ - { 0x0009, ZAP_TYPE(INT32U), 4, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_LONG_DEFAULTS_INDEX(480) }, /* SoftwareVersion */ \ - { 0x000A, ZAP_TYPE(CHAR_STRING), 64, ZAP_ATTRIBUTE_MASK(SINGLETON), \ - ZAP_LONG_DEFAULTS_INDEX(484) }, /* SoftwareVersionString */ \ - { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(SINGLETON), ZAP_SIMPLE_DEFAULT(3) }, /* cluster revision */ \ - \ - /* Endpoint: 6, Cluster: General Commissioning (server) */ \ - { 0x0000, ZAP_TYPE(OCTET_STRING), 8, 0, ZAP_LONG_DEFAULTS_INDEX(548) }, /* FabricId */ \ - { 0x0001, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(556) }, /* Breadcrumb */ \ + /* Endpoint: 5, Cluster: General Commissioning (server) */ \ + { 0x0000, ZAP_TYPE(OCTET_STRING), 8, 0, ZAP_LONG_DEFAULTS_INDEX(656) }, /* FabricId */ \ + { 0x0001, ZAP_TYPE(INT64U), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_LONG_DEFAULTS_INDEX(664) }, /* Breadcrumb */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: Network Commissioning (server) */ \ + /* Endpoint: 5, Cluster: Network Commissioning (server) */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: Door Lock (server) */ \ + /* Endpoint: 5, Cluster: Door Lock (server) */ \ { 0x0000, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* lock state */ \ { 0x0001, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* lock type */ \ { 0x0002, ZAP_TYPE(BOOLEAN), 1, 0, ZAP_EMPTY_DEFAULT() }, /* actuator enabled */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: Barrier Control (server) */ \ + /* Endpoint: 5, Cluster: Barrier Control (server) */ \ { 0x0001, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* barrier moving state */ \ { 0x0002, ZAP_TYPE(BITMAP16), 2, 0, ZAP_EMPTY_DEFAULT() }, /* barrier safety status */ \ { 0x0003, ZAP_TYPE(BITMAP8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* barrier capabilities */ \ { 0x000A, ZAP_TYPE(INT8U), 1, 0, ZAP_EMPTY_DEFAULT() }, /* barrier position */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: Color Control (server) */ \ + /* Endpoint: 5, Cluster: Color Control (server) */ \ { 0x0000, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* current hue */ \ { 0x0001, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* current saturation */ \ { 0x0002, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* remaining time */ \ { 0x0003, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x616B) }, /* current x */ \ { 0x0004, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x607D) }, /* current y */ \ { 0x0005, ZAP_TYPE(ENUM8), 1, 0, ZAP_EMPTY_DEFAULT() }, /* drift compensation */ \ - { 0x0006, ZAP_TYPE(CHAR_STRING), 254, 0, ZAP_LONG_DEFAULTS_INDEX(564) }, /* compensation text */ \ + { 0x0006, ZAP_TYPE(CHAR_STRING), 254, 0, ZAP_LONG_DEFAULTS_INDEX(672) }, /* compensation text */ \ { 0x0007, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x00FA) }, /* color temperature */ \ { 0x0008, ZAP_TYPE(ENUM8), 1, 0, ZAP_SIMPLE_DEFAULT(0x01) }, /* color mode */ \ { 0x000F, ZAP_TYPE(BITMAP8), 1, ZAP_ATTRIBUTE_MASK(WRITABLE), ZAP_SIMPLE_DEFAULT(0x00) }, /* color control options */ \ @@ -569,40 +732,40 @@ ZAP_EMPTY_DEFAULT() }, /* start up color temperature mireds */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: Temperature Measurement (server) */ \ + /* Endpoint: 5, Cluster: Temperature Measurement (server) */ \ { 0x0000, ZAP_TYPE(INT16S), 2, 0, ZAP_SIMPLE_DEFAULT(0x8000) }, /* measured value */ \ { 0x0001, ZAP_TYPE(INT16S), 2, 0, ZAP_SIMPLE_DEFAULT(0x8000) }, /* min measured value */ \ { 0x0002, ZAP_TYPE(INT16S), 2, 0, ZAP_SIMPLE_DEFAULT(0x8000) }, /* max measured value */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(3) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: IAS Zone (server) */ \ + /* Endpoint: 5, Cluster: IAS Zone (server) */ \ { 0x0000, ZAP_TYPE(ENUM8), 1, 0, ZAP_SIMPLE_DEFAULT(0x00) }, /* zone state */ \ { 0x0001, ZAP_TYPE(ENUM16), 2, 0, ZAP_EMPTY_DEFAULT() }, /* zone type */ \ { 0x0002, ZAP_TYPE(BITMAP16), 2, 0, ZAP_SIMPLE_DEFAULT(0x0000) }, /* zone status */ \ { 0x0010, ZAP_TYPE(IEEE_ADDRESS), 8, ZAP_ATTRIBUTE_MASK(WRITABLE), \ - ZAP_LONG_DEFAULTS_INDEX(818) }, /* IAS CIE address */ \ + ZAP_LONG_DEFAULTS_INDEX(926) }, /* IAS CIE address */ \ { 0x0011, ZAP_TYPE(INT8U), 1, 0, ZAP_SIMPLE_DEFAULT(0xff) }, /* Zone ID */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(2) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: Low Power (server) */ \ + /* Endpoint: 5, Cluster: Low Power (server) */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: Application Basic (server) */ \ - { 0x0000, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(826) }, /* vendor name */ \ + /* Endpoint: 5, Cluster: Application Basic (server) */ \ + { 0x0000, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(934) }, /* vendor name */ \ { 0x0001, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* vendor id */ \ - { 0x0002, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(858) }, /* application name */ \ + { 0x0002, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(966) }, /* application name */ \ { 0x0003, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* product id */ \ - { 0x0005, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(890) }, /* application id */ \ + { 0x0005, ZAP_TYPE(CHAR_STRING), 32, 0, ZAP_LONG_DEFAULTS_INDEX(998) }, /* application id */ \ { 0x0006, ZAP_TYPE(INT16U), 2, 0, ZAP_EMPTY_DEFAULT() }, /* catalog vendor id */ \ { 0x0007, ZAP_TYPE(ENUM8), 1, 0, ZAP_SIMPLE_DEFAULT(0x01) }, /* application satus */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: Binding (server) */ \ + /* Endpoint: 5, Cluster: Binding (server) */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ - /* Endpoint: 6, Cluster: Group Key Management (server) */ \ - { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(922) }, /* groups */ \ - { 0x0001, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(1176) }, /* group keys */ \ + /* Endpoint: 5, Cluster: Group Key Management (server) */ \ + { 0x0000, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(1030) }, /* groups */ \ + { 0x0001, ZAP_TYPE(ARRAY), 254, 0, ZAP_LONG_DEFAULTS_INDEX(1284) }, /* group keys */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, 0, ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ } @@ -611,12 +774,6 @@ // Cluster function static arrays #define GENERATED_FUNCTION_ARRAYS \ - const EmberAfGenericClusterFunction chipFuncArrayOnOffServer[] = { \ - (EmberAfGenericClusterFunction) emberAfOnOffClusterServerInitCallback, \ - }; \ - const EmberAfGenericClusterFunction chipFuncArrayLevelControlServer[] = { \ - (EmberAfGenericClusterFunction) emberAfLevelControlClusterServerInitCallback, \ - }; \ const EmberAfGenericClusterFunction chipFuncArrayIdentifyServer[] = { \ (EmberAfGenericClusterFunction) emberAfIdentifyClusterServerInitCallback, \ (EmberAfGenericClusterFunction) emberAfIdentifyClusterServerAttributeChangedCallback, \ @@ -627,15 +784,18 @@ const EmberAfGenericClusterFunction chipFuncArrayScenesServer[] = { \ (EmberAfGenericClusterFunction) emberAfScenesClusterServerInitCallback, \ }; \ - const EmberAfGenericClusterFunction chipFuncArrayBasicServer[] = { \ - (EmberAfGenericClusterFunction) emberAfBasicClusterServerInitCallback, \ + const EmberAfGenericClusterFunction chipFuncArrayOnOffServer[] = { \ + (EmberAfGenericClusterFunction) emberAfOnOffClusterServerInitCallback, \ }; \ - const EmberAfGenericClusterFunction chipFuncArrayDoorLockServer[] = { \ - (EmberAfGenericClusterFunction) emberAfDoorLockClusterServerAttributeChangedCallback, \ + const EmberAfGenericClusterFunction chipFuncArrayLevelControlServer[] = { \ + (EmberAfGenericClusterFunction) emberAfLevelControlClusterServerInitCallback, \ }; \ const EmberAfGenericClusterFunction chipFuncArrayColorControlServer[] = { \ (EmberAfGenericClusterFunction) emberAfColorControlClusterServerInitCallback, \ }; \ + const EmberAfGenericClusterFunction chipFuncArrayDoorLockServer[] = { \ + (EmberAfGenericClusterFunction) emberAfDoorLockClusterServerAttributeChangedCallback, \ + }; \ const EmberAfGenericClusterFunction chipFuncArrayIasZoneServer[] = { \ (EmberAfGenericClusterFunction) emberAfIasZoneClusterServerInitCallback, \ (EmberAfGenericClusterFunction) emberAfIasZoneClusterServerMessageSentCallback, \ @@ -643,135 +803,184 @@ }; #define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask -#define GENERATED_CLUSTER_COUNT 29 +#define GENERATED_CLUSTER_COUNT 42 #define GENERATED_CLUSTERS \ { \ - { \ - 0x0006, \ - ZAP_ATTRIBUTE_INDEX(0), \ - 2, \ - 3, \ - ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ - chipFuncArrayOnOffServer \ - }, /* Endpoint: 1, Cluster: On/off (server) */ \ + { 0x0003, \ + ZAP_ATTRIBUTE_INDEX(0), \ + 2, \ + 4, \ + ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ + chipFuncArrayIdentifyServer }, /* Endpoint: 0, Cluster: Identify (server) */ \ + { 0x0004, \ + ZAP_ATTRIBUTE_INDEX(2), \ + 2, \ + 3, \ + ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ + chipFuncArrayGroupsServer }, /* Endpoint: 0, Cluster: Groups (server) */ \ + { 0x0005, \ + ZAP_ATTRIBUTE_INDEX(4), \ + 6, \ + 8, \ + ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ + chipFuncArrayScenesServer }, /* Endpoint: 0, Cluster: Scenes (server) */ \ + { 0x0006, \ + ZAP_ATTRIBUTE_INDEX(10), \ + 2, \ + 3, \ + ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ + chipFuncArrayOnOffServer }, /* Endpoint: 0, Cluster: On/off (server) */ \ + { 0x0008, \ + ZAP_ATTRIBUTE_INDEX(12), \ + 2, \ + 3, \ + ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ + chipFuncArrayLevelControlServer }, /* Endpoint: 0, Cluster: Level Control (server) */ \ + { \ + 0x0030, ZAP_ATTRIBUTE_INDEX(14), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 0, Cluster: General Commissioning (server) */ \ + { 0x0300, \ + ZAP_ATTRIBUTE_INDEX(15), \ + 6, \ + 11, \ + ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ + chipFuncArrayColorControlServer }, /* Endpoint: 0, Cluster: Color Control (server) */ \ { \ - 0x0030, ZAP_ATTRIBUTE_INDEX(2), 3, 18, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 1, Cluster: General Commissioning (server) */ \ + 0x0503, ZAP_ATTRIBUTE_INDEX(21), 2, 34, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 0, Cluster: Wake on LAN (server) */ \ { \ - 0x0506, ZAP_ATTRIBUTE_INDEX(5), 2, 4, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 1, Cluster: Media Playback (server) */ \ + 0x0504, ZAP_ATTRIBUTE_INDEX(23), 3, 66, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 0, Cluster: TV Channel (server) */ \ { \ - 0x0508, ZAP_ATTRIBUTE_INDEX(7), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 1, Cluster: Low Power (server) */ \ + 0x0505, ZAP_ATTRIBUTE_INDEX(26), 2, 34, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 0, Cluster: Target Navigator (server) */ \ { \ - 0x050A, ZAP_ATTRIBUTE_INDEX(8), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 1, Cluster: Content Launch (server) */ \ + 0x0506, ZAP_ATTRIBUTE_INDEX(28), 8, 57, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 0, Cluster: Media Playback (server) */ \ + { \ + 0x0507, ZAP_ATTRIBUTE_INDEX(36), 2, 34, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 0, Cluster: Media Input (server) */ \ + { \ + 0x0508, ZAP_ATTRIBUTE_INDEX(38), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 0, Cluster: Low Power (server) */ \ + { \ + 0x0509, ZAP_ATTRIBUTE_INDEX(39), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 0, Cluster: Keypad Input (server) */ \ + { \ + 0x050A, ZAP_ATTRIBUTE_INDEX(40), 2, 34, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 0, Cluster: Content Launch (server) */ \ + { \ + 0x050C, ZAP_ATTRIBUTE_INDEX(42), 4, 36, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 0, Cluster: Application Launcher (server) */ \ { 0x0006, \ - ZAP_ATTRIBUTE_INDEX(9), \ + ZAP_ATTRIBUTE_INDEX(46), \ 2, \ 3, \ ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ - chipFuncArrayOnOffServer }, /* Endpoint: 2, Cluster: On/off (server) */ \ + chipFuncArrayOnOffServer }, /* Endpoint: 1, Cluster: On/off (server) */ \ { 0x0008, \ - ZAP_ATTRIBUTE_INDEX(11), \ - 2, \ - 3, \ + ZAP_ATTRIBUTE_INDEX(48), \ + 1, \ + 1, \ ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ - chipFuncArrayLevelControlServer }, /* Endpoint: 2, Cluster: Level Control (server) */ \ + chipFuncArrayLevelControlServer }, /* Endpoint: 1, Cluster: Level Control (server) */ \ { \ - 0x050A, ZAP_ATTRIBUTE_INDEX(13), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 3, Cluster: Content Launch (server) */ \ + 0x050B, ZAP_ATTRIBUTE_INDEX(49), 2, 34, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 1, Cluster: Audio Output (server) */ \ { \ - 0x050D, ZAP_ATTRIBUTE_INDEX(14), 8, 105, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 3, Cluster: Application Basic (server) */ \ + 0x0506, ZAP_ATTRIBUTE_INDEX(51), 9, 59, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 2, Cluster: Media Playback (server) */ \ { \ - 0x050D, ZAP_ATTRIBUTE_INDEX(22), 8, 105, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 4, Cluster: Application Basic (server) */ \ + 0x050A, ZAP_ATTRIBUTE_INDEX(60), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 2, Cluster: Content Launch (server) */ \ { \ - 0x050A, ZAP_ATTRIBUTE_INDEX(30), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 5, Cluster: Content Launch (server) */ \ + 0x050D, ZAP_ATTRIBUTE_INDEX(61), 8, 105, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 2, Cluster: Application Basic (server) */ \ { \ - 0x050D, ZAP_ATTRIBUTE_INDEX(31), 8, 105, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 5, Cluster: Application Basic (server) */ \ + 0x050E, ZAP_ATTRIBUTE_INDEX(69), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 2, Cluster: Account Login (server) */ \ + { \ + 0x050D, ZAP_ATTRIBUTE_INDEX(70), 8, 105, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 3, Cluster: Application Basic (server) */ \ + { \ + 0x050A, ZAP_ATTRIBUTE_INDEX(78), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 4, Cluster: Content Launch (server) */ \ + { \ + 0x050D, ZAP_ATTRIBUTE_INDEX(79), 8, 105, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 4, Cluster: Application Basic (server) */ \ { 0x0003, \ - ZAP_ATTRIBUTE_INDEX(39), \ + ZAP_ATTRIBUTE_INDEX(87), \ 2, \ 4, \ ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ - chipFuncArrayIdentifyServer }, /* Endpoint: 6, Cluster: Identify (server) */ \ + chipFuncArrayIdentifyServer }, /* Endpoint: 5, Cluster: Identify (server) */ \ { 0x0004, \ - ZAP_ATTRIBUTE_INDEX(41), \ + ZAP_ATTRIBUTE_INDEX(89), \ 2, \ 3, \ ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ - chipFuncArrayGroupsServer }, /* Endpoint: 6, Cluster: Groups (server) */ \ + chipFuncArrayGroupsServer }, /* Endpoint: 5, Cluster: Groups (server) */ \ { 0x0005, \ - ZAP_ATTRIBUTE_INDEX(43), \ + ZAP_ATTRIBUTE_INDEX(91), \ 6, \ 8, \ ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ - chipFuncArrayScenesServer }, /* Endpoint: 6, Cluster: Scenes (server) */ \ + chipFuncArrayScenesServer }, /* Endpoint: 5, Cluster: Scenes (server) */ \ { 0x0006, \ - ZAP_ATTRIBUTE_INDEX(49), \ + ZAP_ATTRIBUTE_INDEX(97), \ 2, \ 3, \ ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ - chipFuncArrayOnOffServer }, /* Endpoint: 6, Cluster: On/off (server) */ \ + chipFuncArrayOnOffServer }, /* Endpoint: 5, Cluster: On/off (server) */ \ { 0x0008, \ - ZAP_ATTRIBUTE_INDEX(51), \ + ZAP_ATTRIBUTE_INDEX(99), \ 2, \ 3, \ ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ - chipFuncArrayLevelControlServer }, /* Endpoint: 6, Cluster: Level Control (server) */ \ - { 0x0028, \ - ZAP_ATTRIBUTE_INDEX(53), \ - 12, \ - 254, \ - ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ - chipFuncArrayBasicServer }, /* Endpoint: 6, Cluster: Basic (server) */ \ + chipFuncArrayLevelControlServer }, /* Endpoint: 5, Cluster: Level Control (server) */ \ { \ - 0x0030, ZAP_ATTRIBUTE_INDEX(65), 3, 18, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 6, Cluster: General Commissioning (server) */ \ + 0x0030, ZAP_ATTRIBUTE_INDEX(101), 3, 18, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 5, Cluster: General Commissioning (server) */ \ { \ - 0x0031, ZAP_ATTRIBUTE_INDEX(68), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 6, Cluster: Network Commissioning (server) */ \ + 0x0031, ZAP_ATTRIBUTE_INDEX(104), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 5, Cluster: Network Commissioning (server) */ \ { 0x0101, \ - ZAP_ATTRIBUTE_INDEX(69), \ + ZAP_ATTRIBUTE_INDEX(105), \ 4, \ 5, \ ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \ - chipFuncArrayDoorLockServer }, /* Endpoint: 6, Cluster: Door Lock (server) */ \ + chipFuncArrayDoorLockServer }, /* Endpoint: 5, Cluster: Door Lock (server) */ \ { \ - 0x0103, ZAP_ATTRIBUTE_INDEX(73), 5, 7, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 6, Cluster: Barrier Control (server) */ \ + 0x0103, ZAP_ATTRIBUTE_INDEX(109), 5, 7, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 5, Cluster: Barrier Control (server) */ \ { 0x0300, \ - ZAP_ATTRIBUTE_INDEX(78), \ + ZAP_ATTRIBUTE_INDEX(114), \ 51, \ 336, \ ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \ - chipFuncArrayColorControlServer }, /* Endpoint: 6, Cluster: Color Control (server) */ \ + chipFuncArrayColorControlServer }, /* Endpoint: 5, Cluster: Color Control (server) */ \ { \ - 0x0402, ZAP_ATTRIBUTE_INDEX(129), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 6, Cluster: Temperature Measurement (server) */ \ + 0x0402, ZAP_ATTRIBUTE_INDEX(165), 4, 8, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 5, Cluster: Temperature Measurement (server) */ \ { 0x0500, \ - ZAP_ATTRIBUTE_INDEX(133), \ + ZAP_ATTRIBUTE_INDEX(169), \ 6, \ 16, \ ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION) | \ ZAP_CLUSTER_MASK(MESSAGE_SENT_FUNCTION), \ - chipFuncArrayIasZoneServer }, /* Endpoint: 6, Cluster: IAS Zone (server) */ \ + chipFuncArrayIasZoneServer }, /* Endpoint: 5, Cluster: IAS Zone (server) */ \ { \ - 0x0508, ZAP_ATTRIBUTE_INDEX(139), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 6, Cluster: Low Power (server) */ \ + 0x0508, ZAP_ATTRIBUTE_INDEX(175), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 5, Cluster: Low Power (server) */ \ { \ - 0x050D, ZAP_ATTRIBUTE_INDEX(140), 8, 105, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 6, Cluster: Application Basic (server) */ \ + 0x050D, ZAP_ATTRIBUTE_INDEX(176), 8, 105, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 5, Cluster: Application Basic (server) */ \ { \ - 0xF000, ZAP_ATTRIBUTE_INDEX(148), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 6, Cluster: Binding (server) */ \ + 0xF000, ZAP_ATTRIBUTE_INDEX(184), 1, 2, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 5, Cluster: Binding (server) */ \ { \ - 0xF004, ZAP_ATTRIBUTE_INDEX(149), 3, 510, ZAP_CLUSTER_MASK(SERVER), NULL \ - }, /* Endpoint: 6, Cluster: Group Key Management (server) */ \ + 0xF004, ZAP_ATTRIBUTE_INDEX(185), 3, 510, ZAP_CLUSTER_MASK(SERVER), NULL \ + }, /* Endpoint: 5, Cluster: Group Key Management (server) */ \ } #define ZAP_CLUSTER_INDEX(index) ((EmberAfCluster *) (&generatedClusters[index])) @@ -779,18 +988,18 @@ // This is an array of EmberAfEndpointType structures. #define GENERATED_ENDPOINT_TYPES \ { \ - { ZAP_CLUSTER_INDEX(0), 5, 29 }, { ZAP_CLUSTER_INDEX(5), 2, 6 }, { ZAP_CLUSTER_INDEX(7), 2, 107 }, \ - { ZAP_CLUSTER_INDEX(9), 1, 105 }, { ZAP_CLUSTER_INDEX(10), 2, 107 }, { ZAP_CLUSTER_INDEX(12), 17, 1286 }, \ + { ZAP_CLUSTER_INDEX(0), 16, 333 }, { ZAP_CLUSTER_INDEX(16), 3, 38 }, { ZAP_CLUSTER_INDEX(19), 4, 168 }, \ + { ZAP_CLUSTER_INDEX(23), 1, 105 }, { ZAP_CLUSTER_INDEX(24), 2, 107 }, { ZAP_CLUSTER_INDEX(26), 16, 1032 }, \ } // Largest attribute size is needed for various buffers #define ATTRIBUTE_LARGEST (255) // Total size of singleton attributes -#define ATTRIBUTE_SINGLETONS_SIZE (254) +#define ATTRIBUTE_SINGLETONS_SIZE (0) // Total size of attribute storage -#define ATTRIBUTE_MAX_SIZE (1640) +#define ATTRIBUTE_MAX_SIZE (1783) // Number of fixed endpoints #define FIXED_ENDPOINT_COUNT (6) @@ -799,7 +1008,7 @@ // the array is the endpoint number. #define FIXED_ENDPOINT_ARRAY \ { \ - 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006 \ + 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005 \ } // Array of profile ids @@ -834,16 +1043,58 @@ // Array of EmberAfCommandMetadata structs. #define ZAP_COMMAND_MASK(mask) COMMAND_MASK_##mask -#define EMBER_AF_GENERATED_COMMAND_COUNT (145) +#define EMBER_AF_GENERATED_COMMAND_COUNT (230) #define GENERATED_COMMANDS \ { \ \ - /* Endpoint: 1, Cluster: On/off (server) */ \ - { 0x0006, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Off */ \ + /* Endpoint: 0, Cluster: Identify (server) */ \ + { 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Identify */ \ + { 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* IdentifyQueryResponse */ \ + { 0x0003, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* IdentifyQuery */ \ + \ + /* Endpoint: 0, Cluster: Groups (server) */ \ + { 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* AddGroup */ \ + { 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* AddGroupResponse */ \ + { 0x0004, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ViewGroup */ \ + { 0x0004, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* ViewGroupResponse */ \ + { 0x0004, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* GetGroupMembership */ \ + { 0x0004, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* GetGroupMembershipResponse */ \ + { 0x0004, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* RemoveGroup */ \ + { 0x0004, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* RemoveGroupResponse */ \ + { 0x0004, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* RemoveAllGroups */ \ + { 0x0004, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* AddGroupIfIdentifying */ \ + \ + /* Endpoint: 0, Cluster: Scenes (server) */ \ + { 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* AddScene */ \ + { 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* AddSceneResponse */ \ + { 0x0005, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ViewScene */ \ + { 0x0005, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* ViewSceneResponse */ \ + { 0x0005, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* RemoveScene */ \ + { 0x0005, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* RemoveSceneResponse */ \ + { 0x0005, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* RemoveAllScenes */ \ + { 0x0005, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* RemoveAllScenesResponse */ \ + { 0x0005, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* StoreScene */ \ + { 0x0005, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* StoreSceneResponse */ \ + { 0x0005, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* RecallScene */ \ + { 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* GetSceneMembership */ \ + { 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* GetSceneMembershipResponse */ \ + \ + /* Endpoint: 0, Cluster: On/off (server) */ \ + { 0x0006, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Off */ \ { 0x0006, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On */ \ { 0x0006, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Toggle */ \ \ - /* Endpoint: 1, Cluster: General Commissioning (server) */ \ + /* Endpoint: 0, Cluster: Level Control (server) */ \ + { 0x0008, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MoveToLevel */ \ + { 0x0008, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Move */ \ + { 0x0008, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Step */ \ + { 0x0008, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Stop */ \ + { 0x0008, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MoveToLevelWithOnOff */ \ + { 0x0008, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MoveWithOnOff */ \ + { 0x0008, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* StepWithOnOff */ \ + { 0x0008, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* StopWithOnOff */ \ + \ + /* Endpoint: 0, Cluster: General Commissioning (server) */ \ { 0x0030, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ArmFailSafe */ \ { 0x0030, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* ArmFailSafeResponse */ \ { 0x0030, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* SetRegulatoryConfig */ \ @@ -851,34 +1102,74 @@ { 0x0030, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* CommissioningComplete */ \ { 0x0030, 0x05, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* CommissioningCompleteResponse */ \ \ - /* Endpoint: 1, Cluster: Media Playback (server) */ \ - { 0x0506, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* PlayRequest */ \ - { 0x0506, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Playback */ \ - { 0x0506, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* PauseRequest */ \ - { 0x0506, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* StopRequest */ \ - { 0x0506, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* StartOverRequest */ \ - { 0x0506, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* PreviousRequest */ \ - { 0x0506, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* NextRequest */ \ - { 0x0506, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* RewindRequest */ \ - { 0x0506, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* FastForwardRequest */ \ - { 0x0506, 0x08, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* SkipForwardRequest */ \ - { 0x0506, 0x09, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* SkipBackwardRequest */ \ - \ - /* Endpoint: 1, Cluster: Low Power (server) */ \ + /* Endpoint: 0, Cluster: Color Control (server) */ \ + { 0x0300, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MoveToColor */ \ + { 0x0300, 0x08, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MoveColor */ \ + { 0x0300, 0x09, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* StepColor */ \ + \ + /* Endpoint: 0, Cluster: TV Channel (server) */ \ + { 0x0504, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ChangeChannel */ \ + { 0x0504, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* ChangeChannelResponse */ \ + { 0x0504, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ChangeChannelByNumber */ \ + { 0x0504, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* SkipChannel */ \ + \ + /* Endpoint: 0, Cluster: Target Navigator (server) */ \ + { 0x0505, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* NavigateTarget */ \ + { 0x0505, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* NavigateTargetResponse */ \ + \ + /* Endpoint: 0, Cluster: Media Playback (server) */ \ + { 0x0506, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaPlay */ \ + { 0x0506, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaPlayResponse */ \ + { 0x0506, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaPause */ \ + { 0x0506, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaPauseResponse */ \ + { 0x0506, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaStop */ \ + { 0x0506, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaStopResponse */ \ + { 0x0506, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaStartOver */ \ + { 0x0506, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaStartOverResponse */ \ + { 0x0506, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaPrevious */ \ + { 0x0506, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaPreviousResponse */ \ + { 0x0506, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaNext */ \ + { 0x0506, 0x05, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaNextResponse */ \ + { 0x0506, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaRewind */ \ + { 0x0506, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaRewindResponse */ \ + { 0x0506, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaFastForward */ \ + { 0x0506, 0x07, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaFastForwardResponse */ \ + { 0x0506, 0x08, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaSkipForward */ \ + { 0x0506, 0x08, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaSkipForwardResponse */ \ + { 0x0506, 0x09, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaSkipBackward */ \ + { 0x0506, 0x09, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaSkipBackwardResponse */ \ + { 0x0506, 0x0A, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaSkipSeek */ \ + { 0x0506, 0x0A, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaSkipSeekResponse */ \ + \ + /* Endpoint: 0, Cluster: Media Input (server) */ \ + { 0x0507, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* SelectInput */ \ + { 0x0507, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ShowInputStatus */ \ + { 0x0507, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* HideInputStatus */ \ + { 0x0507, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* RenameInput */ \ + \ + /* Endpoint: 0, Cluster: Low Power (server) */ \ { 0x0508, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Sleep */ \ \ - /* Endpoint: 1, Cluster: Content Launch (server) */ \ + /* Endpoint: 0, Cluster: Keypad Input (server) */ \ + { 0x0509, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* SendKey */ \ + { 0x0509, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* SendKeyResponse */ \ + \ + /* Endpoint: 0, Cluster: Content Launch (server) */ \ { 0x050A, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* LaunchContent */ \ { 0x050A, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* LaunchContentResponse */ \ { 0x050A, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* LaunchURL */ \ { 0x050A, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* LaunchURLResponse */ \ \ - /* Endpoint: 2, Cluster: On/off (server) */ \ + /* Endpoint: 0, Cluster: Application Launcher (server) */ \ + { 0x050C, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* LaunchApp */ \ + { 0x050C, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* LaunchAppResponse */ \ + \ + /* Endpoint: 1, Cluster: On/off (server) */ \ { 0x0006, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Off */ \ { 0x0006, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On */ \ { 0x0006, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Toggle */ \ \ - /* Endpoint: 2, Cluster: Level Control (server) */ \ + /* Endpoint: 1, Cluster: Level Control (server) */ \ { 0x0008, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MoveToLevel */ \ { 0x0008, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Move */ \ { 0x0008, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Step */ \ @@ -888,24 +1179,57 @@ { 0x0008, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* StepWithOnOff */ \ { 0x0008, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* StopWithOnOff */ \ \ - /* Endpoint: 3, Cluster: Content Launch (server) */ \ + /* Endpoint: 1, Cluster: Audio Output (server) */ \ + { 0x050B, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* SelectOutput */ \ + { 0x050B, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* RenameOutput */ \ + \ + /* Endpoint: 2, Cluster: Media Playback (server) */ \ + { 0x0506, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaPlay */ \ + { 0x0506, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaPlayResponse */ \ + { 0x0506, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaPause */ \ + { 0x0506, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaPauseResponse */ \ + { 0x0506, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaStop */ \ + { 0x0506, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaStopResponse */ \ + { 0x0506, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaStartOver */ \ + { 0x0506, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaStartOverResponse */ \ + { 0x0506, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaPrevious */ \ + { 0x0506, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaPreviousResponse */ \ + { 0x0506, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaNext */ \ + { 0x0506, 0x05, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaNextResponse */ \ + { 0x0506, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaRewind */ \ + { 0x0506, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaRewindResponse */ \ + { 0x0506, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaFastForward */ \ + { 0x0506, 0x07, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaFastForwardResponse */ \ + { 0x0506, 0x08, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaSkipForward */ \ + { 0x0506, 0x08, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaSkipForwardResponse */ \ + { 0x0506, 0x09, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaSkipBackward */ \ + { 0x0506, 0x09, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaSkipBackwardResponse */ \ + { 0x0506, 0x0A, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaSkipSeek */ \ + { 0x0506, 0x0A, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaSkipSeekResponse */ \ + \ + /* Endpoint: 2, Cluster: Content Launch (server) */ \ { 0x050A, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* LaunchContent */ \ { 0x050A, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* LaunchContentResponse */ \ { 0x050A, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* LaunchURL */ \ { 0x050A, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* LaunchURLResponse */ \ \ - /* Endpoint: 5, Cluster: Content Launch (server) */ \ + /* Endpoint: 2, Cluster: Account Login (server) */ \ + { 0x050E, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* GetSetupPIN */ \ + { 0x050E, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* GetSetupPINResponse */ \ + { 0x050E, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Login */ \ + \ + /* Endpoint: 4, Cluster: Content Launch (server) */ \ { 0x050A, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* LaunchContent */ \ { 0x050A, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* LaunchContentResponse */ \ { 0x050A, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* LaunchURL */ \ { 0x050A, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* LaunchURLResponse */ \ \ - /* Endpoint: 6, Cluster: Identify (server) */ \ + /* Endpoint: 5, Cluster: Identify (server) */ \ { 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Identify */ \ { 0x0003, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* IdentifyQueryResponse */ \ { 0x0003, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* IdentifyQuery */ \ \ - /* Endpoint: 6, Cluster: Groups (server) */ \ + /* Endpoint: 5, Cluster: Groups (server) */ \ { 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* AddGroup */ \ { 0x0004, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* AddGroupResponse */ \ { 0x0004, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ViewGroup */ \ @@ -917,7 +1241,7 @@ { 0x0004, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* RemoveAllGroups */ \ { 0x0004, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* AddGroupIfIdentifying */ \ \ - /* Endpoint: 6, Cluster: Scenes (server) */ \ + /* Endpoint: 5, Cluster: Scenes (server) */ \ { 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* AddScene */ \ { 0x0005, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* AddSceneResponse */ \ { 0x0005, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ViewScene */ \ @@ -932,12 +1256,12 @@ { 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* GetSceneMembership */ \ { 0x0005, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* GetSceneMembershipResponse */ \ \ - /* Endpoint: 6, Cluster: On/off (server) */ \ + /* Endpoint: 5, Cluster: On/off (server) */ \ { 0x0006, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Off */ \ { 0x0006, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* On */ \ { 0x0006, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Toggle */ \ \ - /* Endpoint: 6, Cluster: Level Control (server) */ \ + /* Endpoint: 5, Cluster: Level Control (server) */ \ { 0x0008, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MoveToLevel */ \ { 0x0008, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Move */ \ { 0x0008, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Step */ \ @@ -947,20 +1271,14 @@ { 0x0008, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* StepWithOnOff */ \ { 0x0008, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* StopWithOnOff */ \ \ - /* Endpoint: 6, Cluster: Basic (server) */ \ - { 0x0028, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* StartUp */ \ - { 0x0028, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* ShutDown */ \ - { 0x0028, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* Leave */ \ - { 0x0028, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* MfgSpecificPing */ \ - \ - /* Endpoint: 6, Cluster: General Commissioning (server) */ \ + /* Endpoint: 5, Cluster: General Commissioning (server) */ \ { 0x0030, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ArmFailSafe */ \ { 0x0030, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* ArmFailSafeResponse */ \ { 0x0030, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* SetRegulatoryConfig */ \ { 0x0030, 0x03, \ ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* SetRegulatoryConfigResponse */ \ \ - /* Endpoint: 6, Cluster: Network Commissioning (server) */ \ + /* Endpoint: 5, Cluster: Network Commissioning (server) */ \ { 0x0031, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ScanNetworks */ \ { 0x0031, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* ScanNetworksResponse */ \ { 0x0031, 0x0A, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* RemoveNetwork */ \ @@ -971,7 +1289,7 @@ { 0x0031, 0x0F, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* DisableNetworkResponse */ \ { 0x0031, 0x10, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* GetLastNetworkCommissioningResult */ \ \ - /* Endpoint: 6, Cluster: Door Lock (server) */ \ + /* Endpoint: 5, Cluster: Door Lock (server) */ \ { 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* LockDoor */ \ { 0x0101, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* LockDoorResponse */ \ { 0x0101, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* UnlockDoor */ \ @@ -998,11 +1316,11 @@ { 0x0101, 0x18, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* ClearRfid */ \ { 0x0101, 0x19, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* ClearAllRfids */ \ \ - /* Endpoint: 6, Cluster: Barrier Control (server) */ \ + /* Endpoint: 5, Cluster: Barrier Control (server) */ \ { 0x0103, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* BarrierControlGoToPercent */ \ { 0x0103, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* BarrierControlStop */ \ \ - /* Endpoint: 6, Cluster: Color Control (server) */ \ + /* Endpoint: 5, Cluster: Color Control (server) */ \ { 0x0300, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* MoveToHue */ \ { 0x0300, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* MoveHue */ \ { 0x0300, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* StepHue */ \ @@ -1018,24 +1336,26 @@ { 0x0300, 0x4B, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* MoveColorTemperature */ \ { 0x0300, 0x4C, ZAP_COMMAND_MASK(INCOMING_SERVER) | ZAP_COMMAND_MASK(OUTGOING_SERVER) }, /* StepColorTemperature */ \ \ - /* Endpoint: 6, Cluster: IAS Zone (server) */ \ + /* Endpoint: 5, Cluster: IAS Zone (server) */ \ { 0x0500, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ZoneEnrollResponse */ \ { 0x0500, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* ZoneStatusChangeNotification */ \ { 0x0500, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* ZoneEnrollRequest */ \ \ - /* Endpoint: 6, Cluster: Low Power (server) */ \ + /* Endpoint: 5, Cluster: Low Power (server) */ \ { 0x0508, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Sleep */ \ \ - /* Endpoint: 6, Cluster: Binding (server) */ \ + /* Endpoint: 5, Cluster: Binding (server) */ \ { 0xF000, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Bind */ \ { 0xF000, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Unbind */ \ } // Array of EmberAfManufacturerCodeEntry structures for commands. -#define GENERATED_COMMAND_MANUFACTURER_CODE_COUNT (1) +#define GENERATED_COMMAND_MANUFACTURER_CODE_COUNT (0) #define GENERATED_COMMAND_MANUFACTURER_CODES \ { \ - { 84, 4098 }, \ + { \ + 0x00, 0x00 \ + } \ } // This is an array of EmberAfManufacturerCodeEntry structures for clusters. @@ -1061,35 +1381,48 @@ #define ZAP_REPORT_DIRECTION(x) ZRD(x) // User options for plugin Reporting -#define EMBER_AF_PLUGIN_REPORTING_TABLE_SIZE (5) +#define EMBER_AF_PLUGIN_REPORTING_TABLE_SIZE (8) #define EMBER_AF_PLUGIN_REPORTING_ENABLE_GROUP_BOUND_REPORTS -#define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS_TABLE_SIZE (5) +#define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS_TABLE_SIZE (8) #define EMBER_AF_GENERATED_REPORTING_CONFIG_DEFAULTS \ { \ \ - /* Endpoint: 1, Cluster: On/off (server) */ \ + /* Endpoint: 0, Cluster: On/off (server) */ \ { \ - ZAP_REPORT_DIRECTION(REPORTED), 0x0001, 0x0006, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } } \ + ZAP_REPORT_DIRECTION(REPORTED), 0x0000, 0x0006, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } } \ }, /* on/off */ \ \ - /* Endpoint: 2, Cluster: On/off (server) */ \ + /* Endpoint: 0, Cluster: Level Control (server) */ \ + { \ + ZAP_REPORT_DIRECTION(REPORTED), 0x0000, 0x0008, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } } \ + }, /* current level */ \ + \ + /* Endpoint: 0, Cluster: Color Control (server) */ \ + { \ + ZAP_REPORT_DIRECTION(REPORTED), 0x0000, 0x0300, 0x0003, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } } \ + }, /* current x */ \ + { \ + ZAP_REPORT_DIRECTION(REPORTED), 0x0000, 0x0300, 0x0004, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } } \ + }, /* current y */ \ + \ + /* Endpoint: 1, Cluster: On/off (server) */ \ { \ - ZAP_REPORT_DIRECTION(REPORTED), 0x0002, 0x0006, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } } \ + ZAP_REPORT_DIRECTION(REPORTED), 0x0001, 0x0006, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } } \ }, /* on/off */ \ \ - /* Endpoint: 2, Cluster: Level Control (server) */ \ + /* Endpoint: 1, Cluster: Level Control (server) */ \ { \ - ZAP_REPORT_DIRECTION(REPORTED), 0x0002, 0x0008, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } } \ + ZAP_REPORT_DIRECTION(REPORTED), 0x0001, 0x0008, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } } \ }, /* current level */ \ \ - /* Endpoint: 6, Cluster: Door Lock (server) */ \ + /* Endpoint: 5, Cluster: Door Lock (server) */ \ { \ - ZAP_REPORT_DIRECTION(REPORTED), 0x0006, 0x0101, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } } \ + ZAP_REPORT_DIRECTION(REPORTED), 0x0005, 0x0101, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } } \ }, /* lock state */ \ \ - /* Endpoint: 6, Cluster: Temperature Measurement (server) */ \ + /* Endpoint: 5, Cluster: Temperature Measurement (server) */ \ { \ - ZAP_REPORT_DIRECTION(REPORTED), 0x0006, 0x0402, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } } \ + ZAP_REPORT_DIRECTION(REPORTED), 0x0005, 0x0402, 0x0000, ZAP_CLUSTER_MASK(SERVER), 0x0000, { { 0, 65344, 0 } } \ }, /* measured value */ \ } diff --git a/examples/tv-app/tv-common/gen/enums.h b/examples/tv-app/tv-common/gen/enums.h index f006d55171bec8..c14422f16eb01d 100644 --- a/examples/tv-app/tv-common/gen/enums.h +++ b/examples/tv-app/tv-common/gen/enums.h @@ -462,6 +462,29 @@ typedef enum EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT3 = 15, } EmberAfCommodityType; +// Enum for ContentLaunchMetricType +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PIXELS = 0, + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PERCENTAGE = 1, +} EmberAfContentLaunchMetricType; + +// Enum for ContentLaunchParameterEnum +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_ACTOR = 0, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHANNEL = 1, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHARACTER = 2, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_EVENT = 3, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_FRANCHISE = 4, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_GENRE = 5, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_LEAGUE = 6, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_POPULARITY = 7, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORT = 8, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORTS_TEAM = 9, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_VIDEO = 10, +} EmberAfContentLaunchParameterEnum; + // Enum for ContentLaunchStatus typedef enum { @@ -470,21 +493,12 @@ typedef enum EMBER_ZCL_CONTENT_LAUNCH_STATUS_AUTH_FAILED = 2, } EmberAfContentLaunchStatus; -// Enum for ContentLaunchType +// Enum for ContentLaunchStreamingType typedef enum { - EMBER_ZCL_CONTENT_LAUNCH_TYPE_ACTOR = 0, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHANNEL = 1, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHARACTER = 2, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_EVENT = 3, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_FRANCHISE = 4, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_GENRE = 5, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_LEAGUE = 6, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_POPULARITY = 7, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORT = 8, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORTS_TEAM = 9, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_VIDEO = 10, -} EmberAfContentLaunchType; + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_DASH = 0, + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_HLS = 1, +} EmberAfContentLaunchStreamingType; // Enum for CppEventResponseCppAuth typedef enum @@ -1617,6 +1631,97 @@ typedef enum EMBER_ZCL_KEY_INDEX_CERTIFICATION = 15, } EmberAfKeyIndex; +// Enum for KeypadInputCecKeyCode +typedef enum +{ + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT = 0, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_UP = 1, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOWN = 2, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT = 3, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT = 4, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_UP = 5, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_DOWN = 6, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_UP = 7, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_DOWN = 8, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ROOT_MENU = 9, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SETUP_MENU = 10, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CONTENTS_MENU = 11, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAVORITE_MENU = 12, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EXIT = 13, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_TOP_MENU = 16, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_CONTEXT_SENSITIVE_MENU = 17, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER_ENTRY_MODE = 29, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER11 = 30, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER12 = 31, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER0_OR_NUMBER10 = 32, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS1 = 33, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS2 = 34, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS3 = 35, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS4 = 36, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS5 = 37, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS6 = 38, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS7 = 39, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS8 = 40, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS9 = 41, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOT = 42, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ENTER = 43, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CLEAR = 44, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NEXT_FAVORITE = 47, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_UP = 48, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_DOWN = 49, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PREVIOUS_CHANNEL = 50, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SOUND_SELECT = 51, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INPUT_SELECT = 52, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DISPLAY_INFORMATION = 53, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_HELP = 54, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_UP = 55, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_DOWN = 56, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER = 64, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_UP = 65, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_DOWN = 66, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE = 67, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY = 68, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP = 69, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE = 70, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD = 71, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_REWIND = 72, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAST_FORWARD = 73, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EJECT = 74, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FORWARD = 75, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_BACKWARD = 76, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_RECORD = 77, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD = 78, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESERVED = 79, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ANGLE = 80, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SUB_PICTURE = 81, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VIDEO_ON_DEMAND = 82, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ELECTRONIC_PROGRAM_GUIDE = 83, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TIMER_PROGRAMMING = 84, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INITIAL_CONFIGURATION = 85, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_BROADCAST_TYPE = 86, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_SOUND_PRESENTATION = 87, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY_FUNCTION = 96, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_PLAY_FUNCTION = 97, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD_FUNCTION = 98, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD_FUNCTION = 99, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_FUNCTION = 100, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE_FUNCTION = 101, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESTORE_VOLUME_FUNCTION = 102, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TUNE_FUNCTION = 103, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_MEDIA_FUNCTION = 104, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AV_INPUT_FUNCTION = 105, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AUDIO_INPUT_FUNCTION = 106, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_TOGGLE_FUNCTION = 107, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_OFF_FUNCTION = 108, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_ON_FUNCTION = 109, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F1_BLUE = 113, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F2_RED = 114, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F3_GREEN = 115, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F4_YELLOW = 116, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F5 = 117, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DATA = 118, +} EmberAfKeypadInputCecKeyCode; + // Enum for KeypadInputStatus typedef enum { @@ -1698,6 +1803,26 @@ typedef enum EMBER_ZCL_MEDIA_INPUT_TYPE_OTHER = 11, } EmberAfMediaInputType; +// Enum for MediaPlaybackState +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PLAYING = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PAUSED = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_NOT_PLAYING = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_BUFFERING = 3, +} EmberAfMediaPlaybackState; + +// Enum for MediaPlaybackStatus +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SUCCESS = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_INVALID_STATE_FOR_COMMAND = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ALLOWED = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ACTIVE = 3, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SPEED_OUT_OF_RANGE = 4, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SEEK_OUT_OF_RANGE = 5, +} EmberAfMediaPlaybackStatus; + // Enum for MessagingControlConfirmation typedef enum { diff --git a/examples/tv-app/tv-common/gen/gen_config.h b/examples/tv-app/tv-common/gen/gen_config.h index b93dbf768c9225..d1adf4a88125bf 100644 --- a/examples/tv-app/tv-common/gen/gen_config.h +++ b/examples/tv-app/tv-common/gen/gen_config.h @@ -29,43 +29,60 @@ #define EMBER_APS_UNICAST_MESSAGE_COUNT 10 /**** Cluster endpoint counts ****/ +#define EMBER_AF_ACCOUNT_LOGIN_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_APPLICATION_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (4) +#define EMBER_AF_APPLICATION_LAUNCHER_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_AUDIO_OUTPUT_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_BARRIER_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1) -#define EMBER_AF_BASIC_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_BINDING_CLUSTER_SERVER_ENDPOINT_COUNT (1) -#define EMBER_AF_COLOR_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_COLOR_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_CONTENT_LAUNCH_CLUSTER_SERVER_ENDPOINT_COUNT (3) #define EMBER_AF_DOOR_LOCK_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_GENERAL_COMMISSIONING_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_GROUP_KEY_MANAGEMENT_CLUSTER_SERVER_ENDPOINT_COUNT (1) -#define EMBER_AF_GROUPS_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_GROUPS_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_IAS_ZONE_CLUSTER_SERVER_ENDPOINT_COUNT (1) -#define EMBER_AF_IDENTIFY_CLUSTER_SERVER_ENDPOINT_COUNT (1) -#define EMBER_AF_LEVEL_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (2) +#define EMBER_AF_IDENTIFY_CLUSTER_SERVER_ENDPOINT_COUNT (2) +#define EMBER_AF_KEYPAD_INPUT_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_LEVEL_CONTROL_CLUSTER_SERVER_ENDPOINT_COUNT (3) #define EMBER_AF_LOW_POWER_CLUSTER_SERVER_ENDPOINT_COUNT (2) -#define EMBER_AF_MEDIA_PLAYBACK_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_MEDIA_INPUT_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_MEDIA_PLAYBACK_CLUSTER_SERVER_ENDPOINT_COUNT (2) #define EMBER_AF_NETWORK_COMMISSIONING_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_ON_OFF_CLUSTER_SERVER_ENDPOINT_COUNT (3) -#define EMBER_AF_SCENES_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_SCENES_CLUSTER_SERVER_ENDPOINT_COUNT (2) +#define EMBER_AF_TV_CHANNEL_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_TARGET_NAVIGATOR_CLUSTER_SERVER_ENDPOINT_COUNT (1) #define EMBER_AF_TEMP_MEASUREMENT_CLUSTER_SERVER_ENDPOINT_COUNT (1) +#define EMBER_AF_WAKE_ON_LAN_CLUSTER_SERVER_ENDPOINT_COUNT (1) /**** Cluster Plugins ****/ +// Use this macro to check if the server side of the Account Login cluster is included +#define ZCL_USING_ACCOUNT_LOGIN_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_ACCOUNT_LOGIN_SERVER +#define EMBER_AF_PLUGIN_ACCOUNT_LOGIN + // Use this macro to check if the server side of the Application Basic cluster is included #define ZCL_USING_APPLICATION_BASIC_CLUSTER_SERVER #define EMBER_AF_PLUGIN_APPLICATION_BASIC_SERVER #define EMBER_AF_PLUGIN_APPLICATION_BASIC +// Use this macro to check if the server side of the Application Launcher cluster is included +#define ZCL_USING_APPLICATION_LAUNCHER_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_APPLICATION_LAUNCHER_SERVER +#define EMBER_AF_PLUGIN_APPLICATION_LAUNCHER + +// Use this macro to check if the server side of the Audio Output cluster is included +#define ZCL_USING_AUDIO_OUTPUT_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_AUDIO_OUTPUT_SERVER +#define EMBER_AF_PLUGIN_AUDIO_OUTPUT + // Use this macro to check if the server side of the Barrier Control cluster is included #define ZCL_USING_BARRIER_CONTROL_CLUSTER_SERVER #define EMBER_AF_PLUGIN_BARRIER_CONTROL_SERVER #define EMBER_AF_PLUGIN_BARRIER_CONTROL -// Use this macro to check if the server side of the Basic cluster is included -#define ZCL_USING_BASIC_CLUSTER_SERVER -#define EMBER_AF_PLUGIN_BASIC_SERVER -#define EMBER_AF_PLUGIN_BASIC - // Use this macro to check if the server side of the Binding cluster is included #define ZCL_USING_BINDING_CLUSTER_SERVER #define EMBER_AF_PLUGIN_BINDING_SERVER @@ -117,6 +134,11 @@ #define EMBER_AF_PLUGIN_IDENTIFY_SERVER #define EMBER_AF_PLUGIN_IDENTIFY +// Use this macro to check if the server side of the Keypad Input cluster is included +#define ZCL_USING_KEYPAD_INPUT_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_KEYPAD_INPUT_SERVER +#define EMBER_AF_PLUGIN_KEYPAD_INPUT + // Use this macro to check if the server side of the Level Control cluster is included #define ZCL_USING_LEVEL_CONTROL_CLUSTER_SERVER #define EMBER_AF_PLUGIN_LEVEL_CONTROL_SERVER @@ -131,6 +153,11 @@ #define EMBER_AF_PLUGIN_LOW_POWER_SERVER #define EMBER_AF_PLUGIN_LOW_POWER +// Use this macro to check if the server side of the Media Input cluster is included +#define ZCL_USING_MEDIA_INPUT_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_MEDIA_INPUT_SERVER +#define EMBER_AF_PLUGIN_MEDIA_INPUT + // Use this macro to check if the server side of the Media Playback cluster is included #define ZCL_USING_MEDIA_PLAYBACK_CLUSTER_SERVER #define EMBER_AF_PLUGIN_MEDIA_PLAYBACK_SERVER @@ -153,7 +180,22 @@ // User options for server plugin Scenes #define EMBER_AF_PLUGIN_SCENES_TABLE_SIZE 3 +// Use this macro to check if the server side of the TV Channel cluster is included +#define ZCL_USING_TV_CHANNEL_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_TV_CHANNEL_SERVER +#define EMBER_AF_PLUGIN_TV_CHANNEL + +// Use this macro to check if the server side of the Target Navigator cluster is included +#define ZCL_USING_TARGET_NAVIGATOR_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_TARGET_NAVIGATOR_SERVER +#define EMBER_AF_PLUGIN_TARGET_NAVIGATOR + // Use this macro to check if the server side of the Temperature Measurement cluster is included #define ZCL_USING_TEMP_MEASUREMENT_CLUSTER_SERVER #define EMBER_AF_PLUGIN_TEMPERATURE_MEASUREMENT_SERVER #define EMBER_AF_PLUGIN_TEMPERATURE_MEASUREMENT + +// Use this macro to check if the server side of the Wake on LAN cluster is included +#define ZCL_USING_WAKE_ON_LAN_CLUSTER_SERVER +#define EMBER_AF_PLUGIN_WAKE_ON_LAN_SERVER +#define EMBER_AF_PLUGIN_WAKE_ON_LAN diff --git a/examples/tv-app/tv-common/tv-app.zap b/examples/tv-app/tv-common/tv-app.zap index 4d459b18134039..6a566987e7a5bb 100644 --- a/examples/tv-app/tv-common/tv-app.zap +++ b/examples/tv-app/tv-common/tv-app.zap @@ -37,35 +37,27 @@ "deviceTypeProfileId": 2457, "clusters": [ { - "name": "On/off", - "code": 6, + "name": "Identify", + "code": 3, "mfgCode": null, - "define": "ON_OFF_CLUSTER", + "define": "IDENTIFY_CLUSTER", "side": "client", "enabled": 0, "commands": [ { - "name": "Off", + "name": "Identify", "code": 0, "mfgCode": null, "source": "client", - "incoming": 1, + "incoming": 0, "outgoing": 1 }, { - "name": "On", + "name": "IdentifyQuery", "code": 1, "mfgCode": null, "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "Toggle", - "code": 2, - "mfgCode": null, - "source": "client", - "incoming": 1, + "incoming": 0, "outgoing": 1 } ], @@ -88,16 +80,25 @@ ] }, { - "name": "On/off", - "code": 6, + "name": "Identify", + "code": 3, "mfgCode": null, - "define": "ON_OFF_CLUSTER", + "define": "IDENTIFY_CLUSTER", "side": "server", "enabled": 1, - "commands": [], + "commands": [ + { + "name": "IdentifyQueryResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], "attributes": [ { - "name": "on/off", + "name": "identify time", "code": 0, "mfgCode": null, "side": "server", @@ -105,8 +106,8 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", - "reportable": 1, + "defaultValue": "0x0000", + "reportable": 0, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -129,35 +130,59 @@ ] }, { - "name": "General Commissioning", - "code": 48, + "name": "Groups", + "code": 4, "mfgCode": null, - "define": "GENERAL_COMMISSIONING_CLUSTER", + "define": "GROUPS_CLUSTER", "side": "client", "enabled": 0, "commands": [ { - "name": "ArmFailSafe", + "name": "AddGroup", "code": 0, "mfgCode": null, "source": "client", - "incoming": 1, + "incoming": 0, "outgoing": 1 }, { - "name": "SetRegulatoryConfig", + "name": "ViewGroup", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "GetGroupMembership", "code": 2, "mfgCode": null, "source": "client", - "incoming": 1, - "outgoing": 0 + "incoming": 0, + "outgoing": 1 }, { - "name": "CommissioningComplete", + "name": "RemoveGroup", + "code": 3, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "RemoveAllGroups", "code": 4, "mfgCode": null, "source": "client", - "incoming": 1, + "incoming": 0, + "outgoing": 1 + }, + { + "name": "AddGroupIfIdentifying", + "code": 5, + "mfgCode": null, + "source": "client", + "incoming": 0, "outgoing": 1 } ], @@ -171,7 +196,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "3", "reportable": 0, "minInterval": 0, "maxInterval": 65344, @@ -180,41 +205,49 @@ ] }, { - "name": "General Commissioning", - "code": 48, + "name": "Groups", + "code": 4, "mfgCode": null, - "define": "GENERAL_COMMISSIONING_CLUSTER", + "define": "GROUPS_CLUSTER", "side": "server", "enabled": 1, "commands": [ { - "name": "ArmFailSafeResponse", + "name": "AddGroupResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "ViewGroupResponse", "code": 1, "mfgCode": null, "source": "server", "incoming": 1, - "outgoing": 1 + "outgoing": 0 }, { - "name": "SetRegulatoryConfigResponse", - "code": 3, + "name": "GetGroupMembershipResponse", + "code": 2, "mfgCode": null, "source": "server", - "incoming": 0, - "outgoing": 1 + "incoming": 1, + "outgoing": 0 }, { - "name": "CommissioningCompleteResponse", - "code": 5, + "name": "RemoveGroupResponse", + "code": 3, "mfgCode": null, "source": "server", "incoming": 1, - "outgoing": 1 + "outgoing": 0 } ], "attributes": [ { - "name": "FabricId", + "name": "name support", "code": 0, "mfgCode": null, "side": "server", @@ -222,21 +255,6 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "o", - "reportable": 0, - "minInterval": 0, - "maxInterval": 65344, - "reportableChange": 0 - }, - { - "name": "Breadcrumb", - "code": 1, - "mfgCode": null, - "side": "server", - "included": 1, - "storageOption": "RAM", - "singleton": 0, - "bounded": 0, "defaultValue": "", "reportable": 0, "minInterval": 0, @@ -252,7 +270,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "3", "reportable": 0, "minInterval": 0, "maxInterval": 65344, @@ -261,91 +279,67 @@ ] }, { - "name": "Media Playback", - "code": 1286, + "name": "Scenes", + "code": 5, "mfgCode": null, - "define": "MEDIA_PLAYBACK_CLUSTER", + "define": "SCENES_CLUSTER", "side": "client", "enabled": 0, "commands": [ { - "name": "PlayRequest", + "name": "AddScene", "code": 0, "mfgCode": null, "source": "client", - "incoming": 1, + "incoming": 0, "outgoing": 1 }, { - "name": "PauseRequest", + "name": "ViewScene", "code": 1, "mfgCode": null, "source": "client", - "incoming": 1, + "incoming": 0, "outgoing": 1 }, { - "name": "StopRequest", + "name": "RemoveScene", "code": 2, "mfgCode": null, "source": "client", - "incoming": 1, + "incoming": 0, "outgoing": 1 }, { - "name": "StartOverRequest", + "name": "RemoveAllScenes", "code": 3, "mfgCode": null, "source": "client", - "incoming": 1, + "incoming": 0, "outgoing": 1 }, { - "name": "PreviousRequest", + "name": "StoreScene", "code": 4, "mfgCode": null, "source": "client", - "incoming": 1, + "incoming": 0, "outgoing": 1 }, { - "name": "NextRequest", + "name": "RecallScene", "code": 5, "mfgCode": null, "source": "client", - "incoming": 1, + "incoming": 0, "outgoing": 1 }, { - "name": "RewindRequest", + "name": "GetSceneMembership", "code": 6, "mfgCode": null, "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "FastForwardRequest", - "code": 7, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "SkipForwardRequest", - "code": 8, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "SkipBackwardRequest", - "code": 9, - "mfgCode": null, - "source": "client", - "incoming": 1, + "incoming": 0, "outgoing": 1 } ], @@ -359,7 +353,7 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "3", "reportable": 0, "minInterval": 0, "maxInterval": 65344, @@ -368,25 +362,65 @@ ] }, { - "name": "Media Playback", - "code": 1286, + "name": "Scenes", + "code": 5, "mfgCode": null, - "define": "MEDIA_PLAYBACK_CLUSTER", + "define": "SCENES_CLUSTER", "side": "server", "enabled": 1, "commands": [ { - "name": "Playback", + "name": "AddSceneResponse", "code": 0, "mfgCode": null, "source": "server", "incoming": 1, - "outgoing": 1 + "outgoing": 0 + }, + { + "name": "ViewSceneResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "RemoveSceneResponse", + "code": 2, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "RemoveAllScenesResponse", + "code": 3, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "StoreSceneResponse", + "code": 4, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "GetSceneMembershipResponse", + "code": 6, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 } ], "attributes": [ { - "name": "current state", + "name": "scene count", "code": 0, "mfgCode": null, "side": "server", @@ -394,44 +428,3035 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "", + "defaultValue": "0x00", "reportable": 0, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "cluster revision", - "code": 65533, + "name": "current scene", + "code": 1, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x0001", + "defaultValue": "0x00", "reportable": 0, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "Low Power", - "code": 1288, + }, + { + "name": "current group", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0000", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "scene valid", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "name support", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "On/off", + "code": 6, + "mfgCode": null, + "define": "ON_OFF_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "Off", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "On", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "Toggle", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "2", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "On/off", + "code": 6, + "mfgCode": null, + "define": "ON_OFF_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "on/off", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "2", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Level Control", + "code": 8, + "mfgCode": null, + "define": "LEVEL_CONTROL_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "MoveToLevel", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "Move", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "Step", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "Stop", + "code": 3, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MoveToLevelWithOnOff", + "code": 4, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MoveWithOnOff", + "code": 5, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "StepWithOnOff", + "code": 6, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "StopWithOnOff", + "code": 7, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Level Control", + "code": 8, + "mfgCode": null, + "define": "LEVEL_CONTROL_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "current level", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "General Commissioning", + "code": 48, + "mfgCode": null, + "define": "GENERAL_COMMISSIONING_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "ArmFailSafe", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "SetRegulatoryConfig", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "CommissioningComplete", + "code": 4, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "General Commissioning", + "code": 48, + "mfgCode": null, + "define": "GENERAL_COMMISSIONING_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "ArmFailSafeResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "SetRegulatoryConfigResponse", + "code": 3, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "CommissioningCompleteResponse", + "code": 5, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Door Lock", + "code": 257, + "mfgCode": null, + "define": "DOOR_LOCK_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "LockDoor", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "UnlockDoor", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Door Lock", + "code": 257, + "mfgCode": null, + "define": "DOOR_LOCK_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "LockDoorResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "UnlockDoorResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "lock state", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "lock type", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "actuator enabled", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "door state", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "enable logging", + "code": 32, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "language", + "code": 33, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "led settings", + "code": 34, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "auto relock time", + "code": 35, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "sound volume", + "code": 36, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "operating mode", + "code": 37, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "default configuration register", + "code": 39, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "enable local programming", + "code": 40, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x01", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "enable one touch locking", + "code": 41, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "enable inside status led", + "code": 42, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "enable privacy mode button", + "code": 43, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "wrong code entry limit", + "code": 48, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "user code temporary disable time", + "code": 49, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "send pin over the air", + "code": 50, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "require pin for rf operation", + "code": 51, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "zigbee security level", + "code": 52, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "alarm mask", + "code": 64, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0000", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "keypad operation event mask", + "code": 65, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0000", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "RF operation event mask", + "code": 66, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0000", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "manual operation event mask", + "code": 67, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0000", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "rfid operation event mask", + "code": 68, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0000", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "keypad programming event mask", + "code": 69, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0000", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "rf programming event mask", + "code": 70, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0000", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "rfid programming event mask", + "code": 71, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0000", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Barrier Control", + "code": 259, + "mfgCode": null, + "define": "BARRIER_CONTROL_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "BarrierControlGoToPercent", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "BarrierControlStop", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Barrier Control", + "code": 259, + "mfgCode": null, + "define": "BARRIER_CONTROL_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [], + "attributes": [ + { + "name": "barrier moving state", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "barrier safety status", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "barrier capabilities", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "barrier position", + "code": 10, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Color Control", + "code": 768, + "mfgCode": null, + "define": "COLOR_CONTROL_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "MoveToColor", + "code": 7, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MoveColor", + "code": 8, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "StepColor", + "code": 9, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Color Control", + "code": 768, + "mfgCode": null, + "define": "COLOR_CONTROL_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "current hue", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "current saturation", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "current x", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x616B", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "current y", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x607D", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "color temperature", + "code": 7, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00FA", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "color control options", + "code": 15, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "couple color temp to level min-mireds", + "code": 16397, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "start up color temperature mireds", + "code": 16400, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Wake on LAN", + "code": 1283, + "mfgCode": null, + "define": "WAKE_ON_LAN_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Wake on LAN", + "code": 1283, + "mfgCode": null, + "define": "WAKE_ON_LAN_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "wake on lan mac address", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "TV Channel", + "code": 1284, + "mfgCode": null, + "define": "TV_CHANNEL_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "ChangeChannel", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "ChangeChannelByNumber", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "SkipChannel", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [] + }, + { + "name": "TV Channel", + "code": 1284, + "mfgCode": null, + "define": "TV_CHANNEL_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "ChangeChannelResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "tv channel list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "o", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "tv channel lineup", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Target Navigator", + "code": 1285, + "mfgCode": null, + "define": "TARGET_NAVIGATOR_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "NavigateTarget", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Target Navigator", + "code": 1285, + "mfgCode": null, + "define": "TARGET_NAVIGATOR_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "NavigateTargetResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "target navigator list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Playback", + "code": 1286, + "mfgCode": null, + "define": "MEDIA_PLAYBACK_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "MediaPlay", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaPause", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaStop", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaStartOver", + "code": 3, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaPrevious", + "code": 4, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaNext", + "code": 5, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaRewind", + "code": 6, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaFastForward", + "code": 7, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaSkipForward", + "code": 8, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaSkipBackward", + "code": 9, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaSkipSeek", + "code": 10, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Playback", + "code": 1286, + "mfgCode": null, + "define": "MEDIA_PLAYBACK_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "MediaPlayResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaPauseResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaStopResponse", + "code": 2, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaStartOverResponse", + "code": 3, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaPreviousResponse", + "code": 4, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaNextResponse", + "code": 5, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaRewindResponse", + "code": 6, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaFastForwardResponse", + "code": 7, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaSkipForwardResponse", + "code": 8, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaSkipBackwardResponse", + "code": 9, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaSkipSeekResponse", + "code": 10, + "mfgCode": null, + "source": "server", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "playback state", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "start time", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0xFF", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "duration", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "updated at", + "code": 3, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "posistion", + "code": 4, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "playback speed", + "code": 5, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "seek range end", + "code": 6, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "seek range start", + "code": 7, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Input", + "code": 1287, + "mfgCode": null, + "define": "MEDIA_INPUT_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "SelectInput", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "ShowInputStatus", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "HideInputStatus", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "RenameInput", + "code": 3, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Input", + "code": 1287, + "mfgCode": null, + "define": "MEDIA_INPUT_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "media input list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Low Power", + "code": 1288, + "mfgCode": null, + "define": "LOW_POWER_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "Sleep", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Low Power", + "code": 1288, + "mfgCode": null, + "define": "LOW_POWER_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Keypad Input", + "code": 1289, + "mfgCode": null, + "define": "KEYPAD_INPUT_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "SendKey", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Keypad Input", + "code": 1289, + "mfgCode": null, + "define": "KEYPAD_INPUT_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "SendKeyResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Content Launch", + "code": 1290, + "mfgCode": null, + "define": "CONTENT_LAUNCH_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "LaunchContent", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "LaunchURL", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Content Launch", + "code": 1290, + "mfgCode": null, + "define": "CONTENT_LAUNCH_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "LaunchContentResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "LaunchURLResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "accepts header list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Application Launcher", + "code": 1292, + "mfgCode": null, + "define": "APPLICATION_LAUNCHER_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "LaunchApp", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Application Launcher", + "code": 1292, + "mfgCode": null, + "define": "APPLICATION_LAUNCHER_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "LaunchAppResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "application launcher list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "catalog vendor id", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "application id", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + } + ] + }, + { + "name": "Anonymous Endpoint Type", + "deviceTypeName": "Speaker", + "deviceTypeCode": 34, + "deviceTypeProfileId": 2457, + "clusters": [ + { + "name": "On/off", + "code": 6, + "mfgCode": null, + "define": "ON_OFF_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "Off", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "On", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "Toggle", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "2", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "On/off", + "code": 6, + "mfgCode": null, + "define": "ON_OFF_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "on/off", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "2", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Level Control", + "code": 8, + "mfgCode": null, + "define": "LEVEL_CONTROL_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "MoveToLevel", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "Move", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "Step", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "Stop", + "code": 3, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MoveToLevelWithOnOff", + "code": 4, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MoveWithOnOff", + "code": 5, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "StepWithOnOff", + "code": 6, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "StopWithOnOff", + "code": 7, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "3", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Level Control", + "code": 8, + "mfgCode": null, + "define": "LEVEL_CONTROL_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "current level", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 1, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Wake on LAN", + "code": 1283, + "mfgCode": null, + "define": "WAKE_ON_LAN_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Wake on LAN", + "code": 1283, + "mfgCode": null, + "define": "WAKE_ON_LAN_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [], + "attributes": [ + { + "name": "wake on lan mac address", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "TV Channel", + "code": 1284, + "mfgCode": null, + "define": "TV_CHANNEL_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "ChangeChannel", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ChangeChannelByNumber", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "SkipChannel", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "TV Channel", + "code": 1284, + "mfgCode": null, + "define": "TV_CHANNEL_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "ChangeChannelResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "tv channel list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "tv channel lineup", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "current tv channel", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Target Navigator", + "code": 1285, + "mfgCode": null, + "define": "TARGET_NAVIGATOR_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "NavigateTarget", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Target Navigator", + "code": 1285, + "mfgCode": null, + "define": "TARGET_NAVIGATOR_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "NavigateTargetResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "target navigator list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Input", + "code": 1287, + "mfgCode": null, + "define": "MEDIA_INPUT_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "SelectInput", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ShowInputStatus", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "HideInputStatus", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "RenameInput", + "code": 3, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Input", + "code": 1287, + "mfgCode": null, + "define": "MEDIA_INPUT_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [], + "attributes": [ + { + "name": "media input list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Low Power", + "code": 1288, + "mfgCode": null, + "define": "LOW_POWER_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "Sleep", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Low Power", + "code": 1288, + "mfgCode": null, + "define": "LOW_POWER_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Keypad Input", + "code": 1289, + "mfgCode": null, + "define": "KEYPAD_INPUT_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "SendKey", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Keypad Input", + "code": 1289, + "mfgCode": null, + "define": "KEYPAD_INPUT_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "SendKeyResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Audio Output", + "code": 1291, "mfgCode": null, - "define": "LOW_POWER_CLUSTER", + "define": "AUDIO_OUTPUT_CLUSTER", "side": "client", "enabled": 0, "commands": [ { - "name": "Sleep", + "name": "SelectOutput", "code": 0, "mfgCode": null, "source": "client", "incoming": 1, "outgoing": 1 + }, + { + "name": "RenameOutput", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 0 } ], "attributes": [ @@ -453,14 +3478,29 @@ ] }, { - "name": "Low Power", - "code": 1288, + "name": "Audio Output", + "code": 1291, "mfgCode": null, - "define": "LOW_POWER_CLUSTER", + "define": "AUDIO_OUTPUT_CLUSTER", "side": "server", "enabled": 1, "commands": [], "attributes": [ + { + "name": "audio output list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, { "name": "cluster revision", "code": 65533, @@ -479,27 +3519,19 @@ ] }, { - "name": "Content Launch", - "code": 1290, + "name": "Application Launcher", + "code": 1292, "mfgCode": null, - "define": "CONTENT_LAUNCH_CLUSTER", + "define": "APPLICATION_LAUNCHER_CLUSTER", "side": "client", "enabled": 0, "commands": [ { - "name": "LaunchContent", + "name": "LaunchApp", "code": 0, "mfgCode": null, "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "LaunchURL", - "code": 1, - "mfgCode": null, - "source": "client", - "incoming": 1, + "incoming": 0, "outgoing": 1 } ], @@ -522,31 +3554,38 @@ ] }, { - "name": "Content Launch", - "code": 1290, + "name": "Application Launcher", + "code": 1292, "mfgCode": null, - "define": "CONTENT_LAUNCH_CLUSTER", + "define": "APPLICATION_LAUNCHER_CLUSTER", "side": "server", - "enabled": 1, + "enabled": 0, "commands": [ { - "name": "LaunchContentResponse", + "name": "LaunchAppResponse", "code": 0, "mfgCode": null, "source": "server", "incoming": 1, - "outgoing": 1 - }, - { - "name": "LaunchURLResponse", - "code": 1, - "mfgCode": null, - "source": "server", - "incoming": 1, - "outgoing": 1 + "outgoing": 0 } ], "attributes": [ + { + "name": "application launcher list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, { "name": "cluster revision", "code": 65533, @@ -568,213 +3607,339 @@ }, { "name": "Anonymous Endpoint Type", - "deviceTypeName": "Speaker", - "deviceTypeCode": 34, + "deviceTypeName": "Content Application", + "deviceTypeCode": 36, "deviceTypeProfileId": 2457, "clusters": [ { - "name": "On/off", - "code": 6, + "name": "Media Playback", + "code": 1286, "mfgCode": null, - "define": "ON_OFF_CLUSTER", + "define": "MEDIA_PLAYBACK_CLUSTER", "side": "client", "enabled": 0, "commands": [ { - "name": "Off", + "name": "MediaPlay", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaPause", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaStop", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaStartOver", + "code": 3, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaPrevious", + "code": 4, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaNext", + "code": 5, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaRewind", + "code": 6, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaFastForward", + "code": 7, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaSkipForward", + "code": 8, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaSkipBackward", + "code": 9, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaSkipSeek", + "code": 10, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Playback", + "code": 1286, + "mfgCode": null, + "define": "MEDIA_PLAYBACK_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "MediaPlayResponse", "code": 0, "mfgCode": null, - "source": "client", + "source": "server", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaPauseResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaStopResponse", + "code": 2, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaStartOverResponse", + "code": 3, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaPreviousResponse", + "code": 4, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaNextResponse", + "code": 5, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaRewindResponse", + "code": 6, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaFastForwardResponse", + "code": 7, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "MediaSkipForwardResponse", + "code": 8, + "mfgCode": null, + "source": "server", "incoming": 1, "outgoing": 1 }, { - "name": "On", - "code": 1, + "name": "MediaSkipBackwardResponse", + "code": 9, "mfgCode": null, - "source": "client", + "source": "server", "incoming": 1, "outgoing": 1 }, { - "name": "Toggle", - "code": 2, + "name": "MediaSkipSeekResponse", + "code": 10, "mfgCode": null, - "source": "client", + "source": "server", "incoming": 1, "outgoing": 1 } ], "attributes": [ { - "name": "cluster revision", - "code": 65533, + "name": "playback state", + "code": 0, "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "0x00", "reportable": 0, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "On/off", - "code": 6, - "mfgCode": null, - "define": "ON_OFF_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "on/off", - "code": 0, + "name": "start time", + "code": 1, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", - "reportable": 1, + "defaultValue": "0xFF", + "reportable": 0, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 }, { - "name": "cluster revision", - "code": 65533, + "name": "duration", + "code": 2, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "2", + "defaultValue": "", "reportable": 0, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "Level Control", - "code": 8, - "mfgCode": null, - "define": "LEVEL_CONTROL_CLUSTER", - "side": "client", - "enabled": 0, - "commands": [ - { - "name": "MoveToLevel", - "code": 0, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "Move", - "code": 1, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "Step", - "code": 2, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 }, { - "name": "Stop", + "name": "updated at", "code": 3, "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 }, { - "name": "MoveToLevelWithOnOff", + "name": "posistion", "code": 4, "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 }, { - "name": "MoveWithOnOff", + "name": "playback speed", "code": 5, "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 }, { - "name": "StepWithOnOff", + "name": "seek range end", "code": 6, "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - }, - { - "name": "StopWithOnOff", - "code": 7, - "mfgCode": null, - "source": "client", - "incoming": 1, - "outgoing": 1 - } - ], - "attributes": [ - { - "name": "cluster revision", - "code": 65533, - "mfgCode": null, - "side": "client", + "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": "", "reportable": 0, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 - } - ] - }, - { - "name": "Level Control", - "code": 8, - "mfgCode": null, - "define": "LEVEL_CONTROL_CLUSTER", - "side": "server", - "enabled": 1, - "commands": [], - "attributes": [ + }, { - "name": "current level", - "code": 0, + "name": "seek range start", + "code": 7, "mfgCode": null, "side": "server", "included": 1, "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "0x00", - "reportable": 1, + "defaultValue": "", + "reportable": 0, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 @@ -788,22 +3953,14 @@ "storageOption": "RAM", "singleton": 0, "bounded": 0, - "defaultValue": "3", + "defaultValue": "0x0001", "reportable": 0, "minInterval": 0, "maxInterval": 65344, "reportableChange": 0 } ] - } - ] - }, - { - "name": "Anonymous Endpoint Type", - "deviceTypeName": "Content Application", - "deviceTypeCode": 36, - "deviceTypeProfileId": 2457, - "clusters": [ + }, { "name": "Content Launch", "code": 1290, @@ -1046,6 +4203,84 @@ "reportableChange": 0 } ] + }, + { + "name": "Account Login", + "code": 1294, + "mfgCode": null, + "define": "ACCOUNT_LOGIN_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "GetSetupPIN", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "Login", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Account Login", + "code": 1294, + "mfgCode": null, + "define": "ACCOUNT_LOGIN_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "GetSetupPINResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] } ] }, @@ -2211,7 +5446,7 @@ "mfgCode": null, "define": "BASIC_CLUSTER", "side": "server", - "enabled": 1, + "enabled": 0, "commands": [ { "name": "StartUp", @@ -5023,42 +8258,42 @@ "endpointTypeName": "Anonymous Endpoint Type", "endpointTypeIndex": 0, "profileId": 2457, - "endpointId": 1, + "endpointId": 0, "networkId": 0 }, { "endpointTypeName": "Anonymous Endpoint Type", "endpointTypeIndex": 1, "profileId": 2457, - "endpointId": 2, + "endpointId": 1, "networkId": 0 }, { "endpointTypeName": "Anonymous Endpoint Type", "endpointTypeIndex": 2, "profileId": 2457, - "endpointId": 3, + "endpointId": 2, "networkId": 0 }, { "endpointTypeName": "Anonymous Endpoint Type", "endpointTypeIndex": 3, "profileId": 2457, - "endpointId": 4, + "endpointId": 3, "networkId": 0 }, { "endpointTypeName": "Anonymous Endpoint Type", "endpointTypeIndex": 4, "profileId": 2457, - "endpointId": 5, + "endpointId": 4, "networkId": 0 }, { "endpointTypeName": "Anonymous Endpoint Type", "endpointTypeIndex": 5, "profileId": 259, - "endpointId": 6, + "endpointId": 5, "networkId": 0 } ], diff --git a/examples/window-app/common/gen/af-structs.h b/examples/window-app/common/gen/af-structs.h index b19ca54657a27a..16a5ef656d51ef 100644 --- a/examples/window-app/common/gen/af-structs.h +++ b/examples/window-app/common/gen/af-structs.h @@ -34,9 +34,9 @@ typedef struct _ApplicationLauncherApp // Struct for AudioOutputInfo typedef struct _AudioOutputInfo { - uint8_t Index; - uint8_t OutputType; - uint8_t * Name; + uint8_t index; + uint8_t outputType; + uint8_t * name; } EmberAfAudioOutputInfo; // Struct for BasicCommissioningInfoType @@ -100,17 +100,44 @@ typedef struct _ConfigureReportingStatusRecord // Struct for ContentLaunchAdditionalInfo typedef struct _ContentLaunchAdditionalInfo { - uint8_t * Name; - uint8_t * Value; + uint8_t * name; + uint8_t * value; } EmberAfContentLaunchAdditionalInfo; -// Struct for ContentLaunchSearch -typedef struct _ContentLaunchSearch +// Struct for ContentLaunchBrandingInformation +typedef struct _ContentLaunchBrandingInformation +{ + uint8_t * providerName; + uint8_t background; + uint8_t logo; + uint8_t progressBar; + uint8_t splash; + uint8_t waterMark; +} EmberAfContentLaunchBrandingInformation; + +// Struct for ContentLaunchDimension +typedef struct _ContentLaunchDimension +{ + uint8_t * width; + uint8_t * height; + uint8_t metric; +} EmberAfContentLaunchDimension; + +// Struct for ContentLaunchParamater +typedef struct _ContentLaunchParamater { - uint8_t EntitiesList; - uint8_t * searchWindowStart; - uint8_t * searchWindowEnd; -} EmberAfContentLaunchSearch; + uint8_t Type; + uint8_t * Value; + /* TYPE WARNING: array array defaults to */ uint8_t * ExternalIDList; +} EmberAfContentLaunchParamater; + +// Struct for ContentLaunchStyleInformation +typedef struct _ContentLaunchStyleInformation +{ + uint8_t * imageUrl; + uint8_t * color; + uint8_t size; +} EmberAfContentLaunchStyleInformation; // Struct for DebtPayload typedef struct _DebtPayload @@ -253,12 +280,19 @@ typedef uint8_t EmberAfIdentity; // Struct for MediaInputInfo typedef struct _MediaInputInfo { - uint8_t Index; - uint8_t InputType; - uint8_t * Name; - uint8_t * Description; + uint8_t index; + uint8_t inputType; + uint8_t * name; + uint8_t * description; } EmberAfMediaInputInfo; +// Struct for MediaPlaybackPosition +typedef struct _MediaPlaybackPosition +{ + uint64_t updatedAt; + uint64_t position; +} EmberAfMediaPlaybackPosition; + // Struct for NavigateTargetTargetInfo typedef struct _NavigateTargetTargetInfo { @@ -485,20 +519,20 @@ typedef struct _TransferredPhase // Struct for TvChannelInfo typedef struct _TvChannelInfo { - uint16_t MajorNumber; - uint16_t MinorNumber; - uint8_t * Name; - uint8_t * CallSign; - uint8_t * AffiliateCallSign; + uint16_t majorNumber; + uint16_t minorNumber; + uint8_t * name; + uint8_t * callSign; + uint8_t * affiliateCallSign; } EmberAfTvChannelInfo; // Struct for TvChannelLineupInfo typedef struct _TvChannelLineupInfo { - uint8_t * OperatorName; - uint8_t * LineupName; - uint8_t * PostalCode; - uint8_t LineupInfoType; + uint8_t * operatorName; + uint8_t * lineupName; + uint8_t * postalCode; + uint8_t lineupInfoType; } EmberAfTvChannelLineupInfo; // Struct for WiFiInterfaceScanResult diff --git a/examples/window-app/common/gen/attribute-id.h b/examples/window-app/common/gen/attribute-id.h index 6c224f5faf016e..8e7aa393464caf 100644 --- a/examples/window-app/common/gen/attribute-id.h +++ b/examples/window-app/common/gen/attribute-id.h @@ -1167,7 +1167,14 @@ // Client attributes // Server attributes -#define ZCL_CURRENT_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_START_TIME_ATTRIBUTE_ID (0x0001) +#define ZCL_MEDIA_PLAYBACK_DURATION_ATTRIBUTE_ID (0x0002) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_UPDATED_AT_ATTRIBUTE_ID (0x0003) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_ATTRIBUTE_ID (0x0004) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SPEED_ATTRIBUTE_ID (0x0005) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_END_ATTRIBUTE_ID (0x0006) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_START_ATTRIBUTE_ID (0x0007) // Attribute ids for cluster: Media Input @@ -1194,6 +1201,8 @@ // Client attributes // Server attributes +#define ZCL_CONTENT_LAUNCHER_ACCEPTS_HEADER_ATTRIBUTE_ID (0x0000) +#define ZCL_CONTENT_LAUNCHER_SUPPORTED_STREAMING_TYPES_ATTRIBUTE_ID (0x0001) // Attribute ids for cluster: Audio Output @@ -1209,7 +1218,8 @@ // Server attributes #define ZCL_APPLICATION_LAUNCHER_LIST_ATTRIBUTE_ID (0x0000) -#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_CATALOG_VENDOR_ID_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_APPLICATION_ID_ATTRIBUTE_ID (0x0002) // Attribute ids for cluster: Application Basic diff --git a/examples/window-app/common/gen/client-command-macro.h b/examples/window-app/common/gen/client-command-macro.h index c976129992f7e6..1cfc06d80ce7c2 100644 --- a/examples/window-app/common/gen/client-command-macro.h +++ b/examples/window-app/common/gen/client-command-macro.h @@ -3361,95 +3361,126 @@ \ ZCL_NAVIGATE_TARGET_COMMAND_ID, "uuuu", target, status, data, data); -/** @brief Command description for PlayRequest +/** @brief Command description for MediaPlay * - * Command: PlayRequest + * Command: MediaPlay + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPlayRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPlay(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_PLAY_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PLAY_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PauseRequest +/** @brief Command description for MediaPause * - * Command: PauseRequest + * Command: MediaPause + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPauseRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPause(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PAUSE_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PAUSE_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StopRequest +/** @brief Command description for MediaStop * - * Command: StopRequest + * Command: MediaStop + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStopRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStop(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_STOP_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_STOP_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StartOverRequest +/** @brief Command description for MediaStartOver * - * Command: StartOverRequest + * Command: MediaStartOver + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStartOverRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStartOver(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_START_OVER_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_START_OVER_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PreviousRequest +/** @brief Command description for MediaPrevious * - * Command: PreviousRequest + * Command: MediaPrevious + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPreviousRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPrevious(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PREVIOUS_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PREVIOUS_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for NextRequest +/** @brief Command description for MediaNext * - * Command: NextRequest + * Command: MediaNext + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterNextRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaNext(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_NEXT_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_NEXT_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for RewindRequest +/** @brief Command description for MediaRewind * - * Command: RewindRequest + * Command: MediaRewind + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterRewindRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaRewind(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_REWIND_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_REWIND_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for FastForwardRequest +/** @brief Command description for MediaFastForward * - * Command: FastForwardRequest + * Command: MediaFastForward + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterFastForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaFastForward(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_FAST_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_FAST_FORWARD_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for SkipForwardRequest +/** @brief Command description for MediaSkipForward * - * Command: SkipForwardRequest + * Command: MediaSkipForward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipForward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); -/** @brief Command description for SkipBackwardRequest +/** @brief Command description for MediaSkipBackward * - * Command: SkipBackwardRequest + * Command: MediaSkipBackward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipBackwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipBackward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); + +/** @brief Command description for MediaSkipSeek + * + * Command: MediaSkipSeek + * @param position INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus + */ +#define emberAfFillCommandMedia \ + PlaybackClusterMediaSkipSeek(position, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ + \ + ZCL_MEDIA_SKIP_SEEK_COMMAND_ID, "uu", position, mediaPlaybackStatus); /** @brief Command description for SelectInput * @@ -3502,7 +3533,7 @@ /** @brief Command description for SendKey * * Command: SendKey - * @param keyCode INT8U + * @param keyCode KeypadInputCecKeyCode * @param status KeypadInputStatus */ #define emberAfFillCommandKeypad \ @@ -3513,23 +3544,30 @@ /** @brief Command description for LaunchContent * * Command: LaunchContent + * @param autoPlay BOOLEAN + * @param data CHAR_STRING + * @param data CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchContent(contentLaunchStatus) \ + LaunchClusterLaunchContent(autoPlay, data, data, contentLaunchStatus) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_CONTENT_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_CONTENT_COMMAND_ID, "uuuu", autoPlay, data, data, contentLaunchStatus); /** @brief Command description for LaunchURL * * Command: LaunchURL + * @param contentURL CHAR_STRING + * @param data CHAR_STRING + * @param displayString CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchURL(contentLaunchStatus) emberAfFillExternalBuffer(mask, \ + LaunchClusterLaunchURL(contentURL, data, displayString, contentLaunchStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_URL_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_URL_COMMAND_ID, "uuuu", contentURL, data, displayString, contentLaunchStatus); /** @brief Command description for SelectOutput * @@ -3555,17 +3593,17 @@ /** @brief Command description for LaunchApp * * Command: LaunchApp + * @param data CHAR_STRING + * @param status ApplicationLauncherStatus * @param application ApplicationLauncherApp [] * @param applicationLen int - * @param status ApplicationLauncherStatus - * @param data CHAR_STRING * @param data CHAR_STRING */ #define emberAfFillCommandApplication \ - LauncherClusterLaunchApp(application, applicationLen, status, data, data) \ + LauncherClusterLaunchApp(data, status, application, applicationLen, data) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_APP_COMMAND_ID, "buuu", application, applicationLen, status, data, data); + ZCL_LAUNCH_APP_COMMAND_ID, "uubu", data, status, application, applicationLen, data); /** @brief Command description for GetSetupPIN * diff --git a/examples/window-app/common/gen/command-id.h b/examples/window-app/common/gen/command-id.h index e3c8f93cadb923..25ee08826f030c 100644 --- a/examples/window-app/common/gen/command-id.h +++ b/examples/window-app/common/gen/command-id.h @@ -415,17 +415,28 @@ #define ZCL_NAVIGATE_TARGET_RESPONSE_COMMAND_ID (0x00) // Commands for cluster: Media Playback -#define ZCL_PLAY_REQUEST_COMMAND_ID (0x00) -#define ZCL_PLAYBACK_COMMAND_ID (0x00) -#define ZCL_PAUSE_REQUEST_COMMAND_ID (0x01) -#define ZCL_STOP_REQUEST_COMMAND_ID (0x02) -#define ZCL_START_OVER_REQUEST_COMMAND_ID (0x03) -#define ZCL_PREVIOUS_REQUEST_COMMAND_ID (0x04) -#define ZCL_NEXT_REQUEST_COMMAND_ID (0x05) -#define ZCL_REWIND_REQUEST_COMMAND_ID (0x06) -#define ZCL_FAST_FORWARD_REQUEST_COMMAND_ID (0x07) -#define ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID (0x08) -#define ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID (0x09) +#define ZCL_MEDIA_PLAY_COMMAND_ID (0x00) +#define ZCL_MEDIA_PLAY_RESPONSE_COMMAND_ID (0x00) +#define ZCL_MEDIA_PAUSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_PAUSE_RESPONSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_STOP_COMMAND_ID (0x02) +#define ZCL_MEDIA_STOP_RESPONSE_COMMAND_ID (0x02) +#define ZCL_MEDIA_START_OVER_COMMAND_ID (0x03) +#define ZCL_MEDIA_START_OVER_RESPONSE_COMMAND_ID (0x03) +#define ZCL_MEDIA_PREVIOUS_COMMAND_ID (0x04) +#define ZCL_MEDIA_PREVIOUS_RESPONSE_COMMAND_ID (0x04) +#define ZCL_MEDIA_NEXT_COMMAND_ID (0x05) +#define ZCL_MEDIA_NEXT_RESPONSE_COMMAND_ID (0x05) +#define ZCL_MEDIA_REWIND_COMMAND_ID (0x06) +#define ZCL_MEDIA_REWIND_RESPONSE_COMMAND_ID (0x06) +#define ZCL_MEDIA_FAST_FORWARD_COMMAND_ID (0x07) +#define ZCL_MEDIA_FAST_FORWARD_RESPONSE_COMMAND_ID (0x07) +#define ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_BACKWARD_RESPONSE_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_SEEK_COMMAND_ID (0x0A) +#define ZCL_MEDIA_SKIP_SEEK_RESPONSE_COMMAND_ID (0x0A) // Commands for cluster: Media Input #define ZCL_SELECT_INPUT_COMMAND_ID (0x00) diff --git a/examples/window-app/common/gen/enums.h b/examples/window-app/common/gen/enums.h index f006d55171bec8..c14422f16eb01d 100644 --- a/examples/window-app/common/gen/enums.h +++ b/examples/window-app/common/gen/enums.h @@ -462,6 +462,29 @@ typedef enum EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT3 = 15, } EmberAfCommodityType; +// Enum for ContentLaunchMetricType +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PIXELS = 0, + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PERCENTAGE = 1, +} EmberAfContentLaunchMetricType; + +// Enum for ContentLaunchParameterEnum +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_ACTOR = 0, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHANNEL = 1, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHARACTER = 2, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_EVENT = 3, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_FRANCHISE = 4, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_GENRE = 5, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_LEAGUE = 6, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_POPULARITY = 7, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORT = 8, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORTS_TEAM = 9, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_VIDEO = 10, +} EmberAfContentLaunchParameterEnum; + // Enum for ContentLaunchStatus typedef enum { @@ -470,21 +493,12 @@ typedef enum EMBER_ZCL_CONTENT_LAUNCH_STATUS_AUTH_FAILED = 2, } EmberAfContentLaunchStatus; -// Enum for ContentLaunchType +// Enum for ContentLaunchStreamingType typedef enum { - EMBER_ZCL_CONTENT_LAUNCH_TYPE_ACTOR = 0, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHANNEL = 1, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHARACTER = 2, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_EVENT = 3, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_FRANCHISE = 4, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_GENRE = 5, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_LEAGUE = 6, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_POPULARITY = 7, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORT = 8, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORTS_TEAM = 9, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_VIDEO = 10, -} EmberAfContentLaunchType; + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_DASH = 0, + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_HLS = 1, +} EmberAfContentLaunchStreamingType; // Enum for CppEventResponseCppAuth typedef enum @@ -1617,6 +1631,97 @@ typedef enum EMBER_ZCL_KEY_INDEX_CERTIFICATION = 15, } EmberAfKeyIndex; +// Enum for KeypadInputCecKeyCode +typedef enum +{ + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT = 0, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_UP = 1, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOWN = 2, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT = 3, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT = 4, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_UP = 5, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_DOWN = 6, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_UP = 7, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_DOWN = 8, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ROOT_MENU = 9, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SETUP_MENU = 10, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CONTENTS_MENU = 11, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAVORITE_MENU = 12, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EXIT = 13, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_TOP_MENU = 16, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_CONTEXT_SENSITIVE_MENU = 17, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER_ENTRY_MODE = 29, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER11 = 30, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER12 = 31, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER0_OR_NUMBER10 = 32, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS1 = 33, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS2 = 34, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS3 = 35, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS4 = 36, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS5 = 37, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS6 = 38, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS7 = 39, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS8 = 40, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS9 = 41, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOT = 42, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ENTER = 43, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CLEAR = 44, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NEXT_FAVORITE = 47, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_UP = 48, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_DOWN = 49, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PREVIOUS_CHANNEL = 50, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SOUND_SELECT = 51, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INPUT_SELECT = 52, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DISPLAY_INFORMATION = 53, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_HELP = 54, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_UP = 55, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_DOWN = 56, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER = 64, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_UP = 65, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_DOWN = 66, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE = 67, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY = 68, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP = 69, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE = 70, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD = 71, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_REWIND = 72, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAST_FORWARD = 73, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EJECT = 74, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FORWARD = 75, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_BACKWARD = 76, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_RECORD = 77, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD = 78, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESERVED = 79, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ANGLE = 80, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SUB_PICTURE = 81, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VIDEO_ON_DEMAND = 82, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ELECTRONIC_PROGRAM_GUIDE = 83, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TIMER_PROGRAMMING = 84, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INITIAL_CONFIGURATION = 85, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_BROADCAST_TYPE = 86, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_SOUND_PRESENTATION = 87, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY_FUNCTION = 96, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_PLAY_FUNCTION = 97, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD_FUNCTION = 98, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD_FUNCTION = 99, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_FUNCTION = 100, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE_FUNCTION = 101, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESTORE_VOLUME_FUNCTION = 102, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TUNE_FUNCTION = 103, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_MEDIA_FUNCTION = 104, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AV_INPUT_FUNCTION = 105, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AUDIO_INPUT_FUNCTION = 106, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_TOGGLE_FUNCTION = 107, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_OFF_FUNCTION = 108, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_ON_FUNCTION = 109, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F1_BLUE = 113, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F2_RED = 114, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F3_GREEN = 115, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F4_YELLOW = 116, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F5 = 117, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DATA = 118, +} EmberAfKeypadInputCecKeyCode; + // Enum for KeypadInputStatus typedef enum { @@ -1698,6 +1803,26 @@ typedef enum EMBER_ZCL_MEDIA_INPUT_TYPE_OTHER = 11, } EmberAfMediaInputType; +// Enum for MediaPlaybackState +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PLAYING = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PAUSED = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_NOT_PLAYING = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_BUFFERING = 3, +} EmberAfMediaPlaybackState; + +// Enum for MediaPlaybackStatus +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SUCCESS = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_INVALID_STATE_FOR_COMMAND = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ALLOWED = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ACTIVE = 3, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SPEED_OUT_OF_RANGE = 4, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SEEK_OUT_OF_RANGE = 5, +} EmberAfMediaPlaybackStatus; + // Enum for MessagingControlConfirmation typedef enum { diff --git a/src/app/chip-zcl-zpro-codec-api.h b/src/app/chip-zcl-zpro-codec-api.h index f975b5e9e01422..e433f32cec7a2d 100644 --- a/src/app/chip-zcl-zpro-codec-api.h +++ b/src/app/chip-zcl-zpro-codec-api.h @@ -28,30 +28,79 @@ /*----------------------------------------------------------------------------*\ | Cluster Name | ID | |---------------------------------------------------------------------+--------| +| AccountLogin | 0x050E | | ApplicationBasic | 0x050D | +| ApplicationLauncher | 0x050C | +| AudioOutput | 0x050B | | BarrierControl | 0x0103 | | Basic | 0x0028 | | Binding | 0xF000 | | ColorControl | 0x0300 | +| ContentLaunch | 0x050A | | Descriptor | 0x001D | | DoorLock | 0x0101 | | GeneralCommissioning | 0x0030 | | GroupKeyManagement | 0xF004 | | Groups | 0x0004 | | Identify | 0x0003 | +| KeypadInput | 0x0509 | | LevelControl | 0x0008 | | LowPower | 0x0508 | +| MediaInput | 0x0507 | +| MediaPlayback | 0x0506 | | NetworkCommissioning | 0x0031 | | OnOff | 0x0006 | | OperationalCredentials | 0x003E | | PumpConfigurationAndControl | 0x0200 | | Scenes | 0x0005 | | Switch | 0x003B | +| TvChannel | 0x0504 | +| TargetNavigator | 0x0505 | | TemperatureMeasurement | 0x0402 | | Thermostat | 0x0201 | +| WakeOnLan | 0x0503 | | WindowCovering | 0x0102 | \*----------------------------------------------------------------------------*/ +/*----------------------------------------------------------------------------*\ +| Cluster AccountLogin | 0x050E | +|------------------------------------------------------------------------------| +| Commands: | | +| * GetSetupPIN | 0x00 | +| * Login | 0x01 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/** + * @brief + * Encode an GetSetupPIN command for Account Login server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeAccountLoginClusterGetSetupPINCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, + chip::ByteSpan tempAccountIdentifier); + +/** + * @brief + * Encode an Login command for Account Login server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeAccountLoginClusterLoginCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, + chip::ByteSpan tempAccountIdentifier, + chip::ByteSpan setupPIN); + +/** + * @brief + * Encode a Account Login server discover command into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeAccountLoginClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Account Login server read command for the cluster revision attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeAccountLoginClusterReadClusterRevisionAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + /*----------------------------------------------------------------------------*\ | Cluster ApplicationBasic | 0x050D | |------------------------------------------------------------------------------| @@ -131,6 +180,94 @@ chip::System::PacketBufferHandle encodeApplicationBasicClusterReadApplicationSat chip::System::PacketBufferHandle encodeApplicationBasicClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint); +/*----------------------------------------------------------------------------*\ +| Cluster ApplicationLauncher | 0x050C | +|------------------------------------------------------------------------------| +| Commands: | | +| * LaunchApp | 0x00 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * ApplicationLauncherList | 0x0000 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/** + * @brief + * Encode an LaunchApp command for Application Launcher server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeApplicationLauncherClusterLaunchAppCommand(uint8_t seqNum, + chip::EndpointId destinationEndpoint, + chip::ByteSpan data, uint16_t catalogVendorId, + chip::ByteSpan applicationId); + +/** + * @brief + * Encode a Application Launcher server discover command into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeApplicationLauncherClusterDiscoverAttributes(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Application Launcher server read command for the application launcher list attribute into buffer including the APS + * frame + */ +chip::System::PacketBufferHandle +encodeApplicationLauncherClusterReadApplicationLauncherListAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Application Launcher server read command for the cluster revision attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeApplicationLauncherClusterReadClusterRevisionAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/*----------------------------------------------------------------------------*\ +| Cluster AudioOutput | 0x050B | +|------------------------------------------------------------------------------| +| Commands: | | +| * RenameOutput | 0x01 | +| * SelectOutput | 0x00 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * AudioOutputList | 0x0000 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/** + * @brief + * Encode an RenameOutput command for Audio Output server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeAudioOutputClusterRenameOutputCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, + uint8_t index, chip::ByteSpan name); + +/** + * @brief + * Encode an SelectOutput command for Audio Output server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeAudioOutputClusterSelectOutputCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, + uint8_t index); + +/** + * @brief + * Encode a Audio Output server discover command into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeAudioOutputClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Audio Output server read command for the audio output list attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeAudioOutputClusterReadAudioOutputListAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Audio Output server read command for the cluster revision attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeAudioOutputClusterReadClusterRevisionAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + /*----------------------------------------------------------------------------*\ | Cluster BarrierControl | 0x0103 | |------------------------------------------------------------------------------| @@ -1119,6 +1256,62 @@ encodeColorControlClusterWriteStartUpColorTemperatureMiredsAttribute(uint8_t seq chip::System::PacketBufferHandle encodeColorControlClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint); +/*----------------------------------------------------------------------------*\ +| Cluster ContentLaunch | 0x050A | +|------------------------------------------------------------------------------| +| Commands: | | +| * LaunchContent | 0x00 | +| * LaunchURL | 0x01 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * AcceptsHeaderList | 0x0000 | +| * SupportedStreamingTypes | 0x0001 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/** + * @brief + * Encode an LaunchContent command for Content Launch server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeContentLaunchClusterLaunchContentCommand(uint8_t seqNum, + chip::EndpointId destinationEndpoint, + uint8_t autoPlay, chip::ByteSpan data); + +/** + * @brief + * Encode an LaunchURL command for Content Launch server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeContentLaunchClusterLaunchURLCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, + chip::ByteSpan contentURL, + chip::ByteSpan displayString); + +/** + * @brief + * Encode a Content Launch server discover command into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeContentLaunchClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Content Launch server read command for the accepts header list attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeContentLaunchClusterReadAcceptsHeaderListAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Content Launch server read command for the supported streaming types attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle +encodeContentLaunchClusterReadSupportedStreamingTypesAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Content Launch server read command for the cluster revision attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeContentLaunchClusterReadClusterRevisionAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + /*----------------------------------------------------------------------------*\ | Cluster Descriptor | 0x001D | |------------------------------------------------------------------------------| @@ -1660,6 +1853,36 @@ encodeIdentifyClusterWriteIdentifyTimeAttribute(uint8_t seqNum, chip::EndpointId chip::System::PacketBufferHandle encodeIdentifyClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint); +/*----------------------------------------------------------------------------*\ +| Cluster KeypadInput | 0x0509 | +|------------------------------------------------------------------------------| +| Commands: | | +| * SendKey | 0x00 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/** + * @brief + * Encode an SendKey command for Keypad Input server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeKeypadInputClusterSendKeyCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, + uint8_t keyCode); + +/** + * @brief + * Encode a Keypad Input server discover command into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeKeypadInputClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Keypad Input server read command for the cluster revision attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeKeypadInputClusterReadClusterRevisionAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + /*----------------------------------------------------------------------------*\ | Cluster LevelControl | 0x0008 | |------------------------------------------------------------------------------| @@ -1797,6 +2020,175 @@ chip::System::PacketBufferHandle encodeLowPowerClusterDiscoverAttributes(uint8_t chip::System::PacketBufferHandle encodeLowPowerClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint); +/*----------------------------------------------------------------------------*\ +| Cluster MediaInput | 0x0507 | +|------------------------------------------------------------------------------| +| Commands: | | +| * HideInputStatus | 0x02 | +| * RenameInput | 0x03 | +| * SelectInput | 0x00 | +| * ShowInputStatus | 0x01 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * MediaInputList | 0x0000 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/** + * @brief + * Encode an HideInputStatus command for Media Input server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaInputClusterHideInputStatusCommand(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode an RenameInput command for Media Input server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaInputClusterRenameInputCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, + uint8_t index, chip::ByteSpan name); + +/** + * @brief + * Encode an SelectInput command for Media Input server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaInputClusterSelectInputCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, + uint8_t index); + +/** + * @brief + * Encode an ShowInputStatus command for Media Input server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaInputClusterShowInputStatusCommand(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Media Input server discover command into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaInputClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Media Input server read command for the media input list attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaInputClusterReadMediaInputListAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Media Input server read command for the cluster revision attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaInputClusterReadClusterRevisionAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/*----------------------------------------------------------------------------*\ +| Cluster MediaPlayback | 0x0506 | +|------------------------------------------------------------------------------| +| Commands: | | +| * MediaFastForward | 0x07 | +| * MediaNext | 0x05 | +| * MediaPause | 0x01 | +| * MediaPlay | 0x00 | +| * MediaPrevious | 0x04 | +| * MediaRewind | 0x06 | +| * MediaSkipBackward | 0x09 | +| * MediaSkipForward | 0x08 | +| * MediaSkipSeek | 0x0A | +| * MediaStartOver | 0x03 | +| * MediaStop | 0x02 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/** + * @brief + * Encode an MediaFastForward command for Media Playback server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaPlaybackClusterMediaFastForwardCommand(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode an MediaNext command for Media Playback server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaPlaybackClusterMediaNextCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode an MediaPause command for Media Playback server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaPlaybackClusterMediaPauseCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode an MediaPlay command for Media Playback server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaPlaybackClusterMediaPlayCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode an MediaPrevious command for Media Playback server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaPlaybackClusterMediaPreviousCommand(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode an MediaRewind command for Media Playback server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaPlaybackClusterMediaRewindCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode an MediaSkipBackward command for Media Playback server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaPlaybackClusterMediaSkipBackwardCommand(uint8_t seqNum, + chip::EndpointId destinationEndpoint, + uint64_t deltaPositionMilliseconds); + +/** + * @brief + * Encode an MediaSkipForward command for Media Playback server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaPlaybackClusterMediaSkipForwardCommand(uint8_t seqNum, + chip::EndpointId destinationEndpoint, + uint64_t deltaPositionMilliseconds); + +/** + * @brief + * Encode an MediaSkipSeek command for Media Playback server into buffer including the APS frame + */ +chip::System::PacketBufferHandle +encodeMediaPlaybackClusterMediaSkipSeekCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, uint64_t position); + +/** + * @brief + * Encode an MediaStartOver command for Media Playback server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaPlaybackClusterMediaStartOverCommand(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode an MediaStop command for Media Playback server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaPlaybackClusterMediaStopCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Media Playback server discover command into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaPlaybackClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Media Playback server read command for the cluster revision attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeMediaPlaybackClusterReadClusterRevisionAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + /*----------------------------------------------------------------------------*\ | Cluster NetworkCommissioning | 0x0031 | |------------------------------------------------------------------------------| @@ -2286,6 +2678,117 @@ chip::System::PacketBufferHandle encodeSwitchClusterConfigureCurrentPositionAttr chip::System::PacketBufferHandle encodeSwitchClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint); +/*----------------------------------------------------------------------------*\ +| Cluster TvChannel | 0x0504 | +|------------------------------------------------------------------------------| +| Commands: | | +| * ChangeChannel | 0x00 | +| * ChangeChannelByNumber | 0x01 | +| * SkipChannel | 0x02 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * TvChannelList | 0x0000 | +| * TvChannelLineup | 0x0001 | +| * CurrentTvChannel | 0x0002 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/** + * @brief + * Encode an ChangeChannel command for TV Channel server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeTvChannelClusterChangeChannelCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, + chip::ByteSpan match); + +/** + * @brief + * Encode an ChangeChannelByNumber command for TV Channel server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeTvChannelClusterChangeChannelByNumberCommand(uint8_t seqNum, + chip::EndpointId destinationEndpoint, + uint16_t majorNumber, uint16_t minorNumber); + +/** + * @brief + * Encode an SkipChannel command for TV Channel server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeTvChannelClusterSkipChannelCommand(uint8_t seqNum, chip::EndpointId destinationEndpoint, + uint16_t count); + +/** + * @brief + * Encode a TV Channel server discover command into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeTvChannelClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a TV Channel server read command for the tv channel list attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeTvChannelClusterReadTvChannelListAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a TV Channel server read command for the tv channel lineup attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeTvChannelClusterReadTvChannelLineupAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a TV Channel server read command for the current tv channel attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeTvChannelClusterReadCurrentTvChannelAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a TV Channel server read command for the cluster revision attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeTvChannelClusterReadClusterRevisionAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/*----------------------------------------------------------------------------*\ +| Cluster TargetNavigator | 0x0505 | +|------------------------------------------------------------------------------| +| Commands: | | +| * NavigateTarget | 0x00 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * TargetNavigatorList | 0x0000 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/** + * @brief + * Encode an NavigateTarget command for Target Navigator server into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeTargetNavigatorClusterNavigateTargetCommand(uint8_t seqNum, + chip::EndpointId destinationEndpoint, + uint8_t target, chip::ByteSpan data); + +/** + * @brief + * Encode a Target Navigator server discover command into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeTargetNavigatorClusterDiscoverAttributes(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Target Navigator server read command for the target navigator list attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeTargetNavigatorClusterReadTargetNavigatorListAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Target Navigator server read command for the cluster revision attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeTargetNavigatorClusterReadClusterRevisionAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + /*----------------------------------------------------------------------------*\ | Cluster TemperatureMeasurement | 0x0402 | |------------------------------------------------------------------------------| @@ -2488,6 +2991,36 @@ encodeThermostatClusterWriteSystemModeAttribute(uint8_t seqNum, chip::EndpointId chip::System::PacketBufferHandle encodeThermostatClusterReadClusterRevisionAttribute(uint8_t seqNum, chip::EndpointId destinationEndpoint); +/*----------------------------------------------------------------------------*\ +| Cluster WakeOnLan | 0x0503 | +|------------------------------------------------------------------------------| +| Commands: | | +|------------------------------------------------------------------------------| +| Attributes: | | +| * WakeOnLanMacAddress | 0x0000 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/** + * @brief + * Encode a Wake on LAN server discover command into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeWakeOnLanClusterDiscoverAttributes(uint8_t seqNum, chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Wake on LAN server read command for the wake on lan mac address attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeWakeOnLanClusterReadWakeOnLanMacAddressAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + +/** + * @brief + * Encode a Wake on LAN server read command for the cluster revision attribute into buffer including the APS frame + */ +chip::System::PacketBufferHandle encodeWakeOnLanClusterReadClusterRevisionAttribute(uint8_t seqNum, + chip::EndpointId destinationEndpoint); + /*----------------------------------------------------------------------------*\ | Cluster WindowCovering | 0x0102 | |------------------------------------------------------------------------------| diff --git a/src/app/clusters/media-playback-client/media-playback-client.cpp b/src/app/clusters/media-playback-client/media-playback-client.cpp deleted file mode 100644 index 7d151481fa0ee3..00000000000000 --- a/src/app/clusters/media-playback-client/media-playback-client.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/** - * - * Copyright (c) 2021 Project CHIP Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * - * Copyright (c) 2021 Silicon Labs - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/**************************************************************************** - * @file - * @brief Routines for the Media Playback plugin, the - *client implementation of the Media Playback cluster. - ******************************************************************************* - ******************************************************************************/ - -#include -#include - -bool emberAfMediaPlaybackClusterPlaybackCallback(chip::app::Command * commandObj) -{ - EmberAfStatus status = EMBER_ZCL_STATUS_FAILURE; - emberAfSendImmediateDefaultResponse(status); - return true; -} diff --git a/src/app/encoder.cpp b/src/app/encoder.cpp index 15fbe1d7191e74..3358a6b1caf6d3 100644 --- a/src/app/encoder.cpp +++ b/src/app/encoder.cpp @@ -99,27 +99,37 @@ uint16_t encodeApsFrame(uint8_t * buffer, uint16_t buf_length, EmberApsFrame * a /*----------------------------------------------------------------------------*\ | Cluster Name | ID | |---------------------------------------------------------------------+--------| +| AccountLogin | 0x050E | | ApplicationBasic | 0x050D | +| ApplicationLauncher | 0x050C | +| AudioOutput | 0x050B | | BarrierControl | 0x0103 | | Basic | 0x0028 | | Binding | 0xF000 | | ColorControl | 0x0300 | +| ContentLaunch | 0x050A | | Descriptor | 0x001D | | DoorLock | 0x0101 | | GeneralCommissioning | 0x0030 | | GroupKeyManagement | 0xF004 | | Groups | 0x0004 | | Identify | 0x0003 | +| KeypadInput | 0x0509 | | LevelControl | 0x0008 | | LowPower | 0x0508 | +| MediaInput | 0x0507 | +| MediaPlayback | 0x0506 | | NetworkCommissioning | 0x0031 | | OnOff | 0x0006 | | OperationalCredentials | 0x003E | | PumpConfigurationAndControl | 0x0200 | | Scenes | 0x0005 | | Switch | 0x003B | +| TvChannel | 0x0504 | +| TargetNavigator | 0x0505 | | TemperatureMeasurement | 0x0402 | | Thermostat | 0x0201 | +| WakeOnLan | 0x0503 | | WindowCovering | 0x0102 | \*----------------------------------------------------------------------------*/ @@ -149,8 +159,19 @@ uint16_t encodeApsFrame(uint8_t * buffer, uint16_t buf_length, EmberApsFrame * a #define ZCL_DISCOVER_ATTRIBUTES_EXTENDED_COMMAND_ID (0x15) #define ZCL_DISCOVER_ATTRIBUTES_EXTENDED_RESPONSE_COMMAND_ID (0x16) +#define ACCOUNT_LOGIN_CLUSTER_ID 0x050E +#define ZCL_GET_SETUP_PIN_COMMAND_ID (0x00) +#define ZCL_LOGIN_COMMAND_ID (0x01) + #define APPLICATION_BASIC_CLUSTER_ID 0x050D +#define APPLICATION_LAUNCHER_CLUSTER_ID 0x050C +#define ZCL_LAUNCH_APP_COMMAND_ID (0x00) + +#define AUDIO_OUTPUT_CLUSTER_ID 0x050B +#define ZCL_RENAME_OUTPUT_COMMAND_ID (0x01) +#define ZCL_SELECT_OUTPUT_COMMAND_ID (0x00) + #define BARRIER_CONTROL_CLUSTER_ID 0x0103 #define ZCL_BARRIER_CONTROL_GO_TO_PERCENT_COMMAND_ID (0x00) #define ZCL_BARRIER_CONTROL_STOP_COMMAND_ID (0x01) @@ -178,6 +199,10 @@ uint16_t encodeApsFrame(uint8_t * buffer, uint16_t buf_length, EmberApsFrame * a #define ZCL_STEP_SATURATION_COMMAND_ID (0x05) #define ZCL_STOP_MOVE_STEP_COMMAND_ID (0x47) +#define CONTENT_LAUNCH_CLUSTER_ID 0x050A +#define ZCL_LAUNCH_CONTENT_COMMAND_ID (0x00) +#define ZCL_LAUNCH_URL_COMMAND_ID (0x01) + #define DESCRIPTOR_CLUSTER_ID 0x001D #define DOOR_LOCK_CLUSTER_ID 0x0101 @@ -224,6 +249,9 @@ uint16_t encodeApsFrame(uint8_t * buffer, uint16_t buf_length, EmberApsFrame * a #define ZCL_IDENTIFY_COMMAND_ID (0x00) #define ZCL_IDENTIFY_QUERY_COMMAND_ID (0x01) +#define KEYPAD_INPUT_CLUSTER_ID 0x0509 +#define ZCL_SEND_KEY_COMMAND_ID (0x00) + #define LEVEL_CONTROL_CLUSTER_ID 0x0008 #define ZCL_MOVE_COMMAND_ID (0x01) #define ZCL_MOVE_TO_LEVEL_COMMAND_ID (0x00) @@ -237,6 +265,25 @@ uint16_t encodeApsFrame(uint8_t * buffer, uint16_t buf_length, EmberApsFrame * a #define LOW_POWER_CLUSTER_ID 0x0508 #define ZCL_SLEEP_COMMAND_ID (0x00) +#define MEDIA_INPUT_CLUSTER_ID 0x0507 +#define ZCL_HIDE_INPUT_STATUS_COMMAND_ID (0x02) +#define ZCL_RENAME_INPUT_COMMAND_ID (0x03) +#define ZCL_SELECT_INPUT_COMMAND_ID (0x00) +#define ZCL_SHOW_INPUT_STATUS_COMMAND_ID (0x01) + +#define MEDIA_PLAYBACK_CLUSTER_ID 0x0506 +#define ZCL_MEDIA_FAST_FORWARD_COMMAND_ID (0x07) +#define ZCL_MEDIA_NEXT_COMMAND_ID (0x05) +#define ZCL_MEDIA_PAUSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_PLAY_COMMAND_ID (0x00) +#define ZCL_MEDIA_PREVIOUS_COMMAND_ID (0x04) +#define ZCL_MEDIA_REWIND_COMMAND_ID (0x06) +#define ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_SEEK_COMMAND_ID (0x0A) +#define ZCL_MEDIA_START_OVER_COMMAND_ID (0x03) +#define ZCL_MEDIA_STOP_COMMAND_ID (0x02) + #define NETWORK_COMMISSIONING_CLUSTER_ID 0x0031 #define ZCL_ADD_THREAD_NETWORK_COMMAND_ID (0x06) #define ZCL_ADD_WI_FI_NETWORK_COMMAND_ID (0x02) @@ -271,6 +318,14 @@ uint16_t encodeApsFrame(uint8_t * buffer, uint16_t buf_length, EmberApsFrame * a #define SWITCH_CLUSTER_ID 0x003B +#define TV_CHANNEL_CLUSTER_ID 0x0504 +#define ZCL_CHANGE_CHANNEL_COMMAND_ID (0x00) +#define ZCL_CHANGE_CHANNEL_BY_NUMBER_COMMAND_ID (0x01) +#define ZCL_SKIP_CHANNEL_COMMAND_ID (0x02) + +#define TARGET_NAVIGATOR_CLUSTER_ID 0x0505 +#define ZCL_NAVIGATE_TARGET_COMMAND_ID (0x00) + #define TEMP_MEASUREMENT_CLUSTER_ID 0x0402 #define THERMOSTAT_CLUSTER_ID 0x0201 @@ -280,6 +335,8 @@ uint16_t encodeApsFrame(uint8_t * buffer, uint16_t buf_length, EmberApsFrame * a #define ZCL_SET_WEEKLY_SCHEDULE_COMMAND_ID (0x01) #define ZCL_SETPOINT_RAISE_LOWER_COMMAND_ID (0x00) +#define WAKE_ON_LAN_CLUSTER_ID 0x0503 + #define WINDOW_COVERING_CLUSTER_ID 0x0102 #define ZCL_WINDOW_COVERING_DOWN_CLOSE_COMMAND_ID (0x01) #define ZCL_WINDOW_COVERING_GO_TO_LIFT_PERCENTAGE_COMMAND_ID (0x05) @@ -306,6 +363,87 @@ constexpr uint8_t kFrameControlGlobalCommand = 0x00; // Pick source endpoint as 1 for now constexpr EndpointId kSourceEndpoint = 1; +/*----------------------------------------------------------------------------*\ +| Cluster AccountLogin | 0x050E | +|------------------------------------------------------------------------------| +| Commands: | | +| * GetSetupPIN | 0x00 | +| * Login | 0x01 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/* + * Command GetSetupPIN + */ +PacketBufferHandle encodeAccountLoginClusterGetSetupPINCommand(uint8_t seqNum, EndpointId destinationEndpoint, + chip::ByteSpan tempAccountIdentifier) +{ + COMMAND_HEADER("GetSetupPIN", ACCOUNT_LOGIN_CLUSTER_ID); + size_t tempAccountIdentifierStrLen = tempAccountIdentifier.size(); + if (!CanCastTo(tempAccountIdentifierStrLen)) + { + ChipLogError(Zcl, "Error encoding %s command. String too long: %d", kName, tempAccountIdentifierStrLen); + return PacketBufferHandle(); + } + + buf.Put8(kFrameControlClusterSpecificCommand) + .Put8(seqNum) + .Put8(ZCL_GET_SETUP_PIN_COMMAND_ID) + .Put(static_cast(tempAccountIdentifierStrLen)) + .Put(tempAccountIdentifier.data(), tempAccountIdentifier.size()); + COMMAND_FOOTER(); +} + +/* + * Command Login + */ +PacketBufferHandle encodeAccountLoginClusterLoginCommand(uint8_t seqNum, EndpointId destinationEndpoint, + chip::ByteSpan tempAccountIdentifier, chip::ByteSpan setupPIN) +{ + COMMAND_HEADER("Login", ACCOUNT_LOGIN_CLUSTER_ID); + size_t tempAccountIdentifierStrLen = tempAccountIdentifier.size(); + if (!CanCastTo(tempAccountIdentifierStrLen)) + { + ChipLogError(Zcl, "Error encoding %s command. String too long: %d", kName, tempAccountIdentifierStrLen); + return PacketBufferHandle(); + } + + size_t setupPINStrLen = setupPIN.size(); + if (!CanCastTo(setupPINStrLen)) + { + ChipLogError(Zcl, "Error encoding %s command. String too long: %d", kName, setupPINStrLen); + return PacketBufferHandle(); + } + + buf.Put8(kFrameControlClusterSpecificCommand) + .Put8(seqNum) + .Put8(ZCL_LOGIN_COMMAND_ID) + .Put(static_cast(tempAccountIdentifierStrLen)) + .Put(tempAccountIdentifier.data(), tempAccountIdentifier.size()) + .Put(static_cast(setupPINStrLen)) + .Put(setupPIN.data(), setupPIN.size()); + COMMAND_FOOTER(); +} + +PacketBufferHandle encodeAccountLoginClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("DiscoverAccountLoginAttributes", ACCOUNT_LOGIN_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF); + COMMAND_FOOTER(); +} + +/* + * Attribute ClusterRevision + */ +PacketBufferHandle encodeAccountLoginClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadAccountLoginClusterRevision", ACCOUNT_LOGIN_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD); + COMMAND_FOOTER(); +} + /*----------------------------------------------------------------------------*\ | Cluster ApplicationBasic | 0x050D | |------------------------------------------------------------------------------| @@ -409,6 +547,152 @@ PacketBufferHandle encodeApplicationBasicClusterReadClusterRevisionAttribute(uin COMMAND_FOOTER(); } +/*----------------------------------------------------------------------------*\ +| Cluster ApplicationLauncher | 0x050C | +|------------------------------------------------------------------------------| +| Commands: | | +| * LaunchApp | 0x00 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * ApplicationLauncherList | 0x0000 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/* + * Command LaunchApp + */ +PacketBufferHandle encodeApplicationLauncherClusterLaunchAppCommand(uint8_t seqNum, EndpointId destinationEndpoint, + chip::ByteSpan data, uint16_t catalogVendorId, + chip::ByteSpan applicationId) +{ + COMMAND_HEADER("LaunchApp", APPLICATION_LAUNCHER_CLUSTER_ID); + size_t dataStrLen = data.size(); + if (!CanCastTo(dataStrLen)) + { + ChipLogError(Zcl, "Error encoding %s command. String too long: %d", kName, dataStrLen); + return PacketBufferHandle(); + } + + size_t applicationIdStrLen = applicationId.size(); + if (!CanCastTo(applicationIdStrLen)) + { + ChipLogError(Zcl, "Error encoding %s command. String too long: %d", kName, applicationIdStrLen); + return PacketBufferHandle(); + } + + buf.Put8(kFrameControlClusterSpecificCommand) + .Put8(seqNum) + .Put8(ZCL_LAUNCH_APP_COMMAND_ID) + .Put(static_cast(dataStrLen)) + .Put(data.data(), data.size()) + .Put16(catalogVendorId) + .Put(static_cast(applicationIdStrLen)) + .Put(applicationId.data(), applicationId.size()); + COMMAND_FOOTER(); +} + +PacketBufferHandle encodeApplicationLauncherClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("DiscoverApplicationLauncherAttributes", APPLICATION_LAUNCHER_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF); + COMMAND_FOOTER(); +} + +/* + * Attribute ApplicationLauncherList + */ +PacketBufferHandle encodeApplicationLauncherClusterReadApplicationLauncherListAttribute(uint8_t seqNum, + EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadApplicationLauncherApplicationLauncherList", APPLICATION_LAUNCHER_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000); + COMMAND_FOOTER(); +} + +/* + * Attribute ClusterRevision + */ +PacketBufferHandle encodeApplicationLauncherClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadApplicationLauncherClusterRevision", APPLICATION_LAUNCHER_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD); + COMMAND_FOOTER(); +} + +/*----------------------------------------------------------------------------*\ +| Cluster AudioOutput | 0x050B | +|------------------------------------------------------------------------------| +| Commands: | | +| * RenameOutput | 0x01 | +| * SelectOutput | 0x00 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * AudioOutputList | 0x0000 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/* + * Command RenameOutput + */ +PacketBufferHandle encodeAudioOutputClusterRenameOutputCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t index, + chip::ByteSpan name) +{ + COMMAND_HEADER("RenameOutput", AUDIO_OUTPUT_CLUSTER_ID); + + size_t nameStrLen = name.size(); + if (!CanCastTo(nameStrLen)) + { + ChipLogError(Zcl, "Error encoding %s command. String too long: %d", kName, nameStrLen); + return PacketBufferHandle(); + } + + buf.Put8(kFrameControlClusterSpecificCommand) + .Put8(seqNum) + .Put8(ZCL_RENAME_OUTPUT_COMMAND_ID) + .Put8(index) + .Put(static_cast(nameStrLen)) + .Put(name.data(), name.size()); + COMMAND_FOOTER(); +} + +/* + * Command SelectOutput + */ +PacketBufferHandle encodeAudioOutputClusterSelectOutputCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t index) +{ + COMMAND_HEADER("SelectOutput", AUDIO_OUTPUT_CLUSTER_ID); + + buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_SELECT_OUTPUT_COMMAND_ID).Put8(index); + COMMAND_FOOTER(); +} + +PacketBufferHandle encodeAudioOutputClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("DiscoverAudioOutputAttributes", AUDIO_OUTPUT_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF); + COMMAND_FOOTER(); +} + +/* + * Attribute AudioOutputList + */ +PacketBufferHandle encodeAudioOutputClusterReadAudioOutputListAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadAudioOutputAudioOutputList", AUDIO_OUTPUT_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000); + COMMAND_FOOTER(); +} + +/* + * Attribute ClusterRevision + */ +PacketBufferHandle encodeAudioOutputClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadAudioOutputClusterRevision", AUDIO_OUTPUT_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD); + COMMAND_FOOTER(); +} + /*----------------------------------------------------------------------------*\ | Cluster BarrierControl | 0x0103 | |------------------------------------------------------------------------------| @@ -1964,6 +2248,111 @@ PacketBufferHandle encodeColorControlClusterReadClusterRevisionAttribute(uint8_t COMMAND_FOOTER(); } +/*----------------------------------------------------------------------------*\ +| Cluster ContentLaunch | 0x050A | +|------------------------------------------------------------------------------| +| Commands: | | +| * LaunchContent | 0x00 | +| * LaunchURL | 0x01 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * AcceptsHeaderList | 0x0000 | +| * SupportedStreamingTypes | 0x0001 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/* + * Command LaunchContent + */ +PacketBufferHandle encodeContentLaunchClusterLaunchContentCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t autoPlay, + chip::ByteSpan data) +{ + COMMAND_HEADER("LaunchContent", CONTENT_LAUNCH_CLUSTER_ID); + + size_t dataStrLen = data.size(); + if (!CanCastTo(dataStrLen)) + { + ChipLogError(Zcl, "Error encoding %s command. String too long: %d", kName, dataStrLen); + return PacketBufferHandle(); + } + + buf.Put8(kFrameControlClusterSpecificCommand) + .Put8(seqNum) + .Put8(ZCL_LAUNCH_CONTENT_COMMAND_ID) + .Put8(autoPlay) + .Put(static_cast(dataStrLen)) + .Put(data.data(), data.size()); + COMMAND_FOOTER(); +} + +/* + * Command LaunchURL + */ +PacketBufferHandle encodeContentLaunchClusterLaunchURLCommand(uint8_t seqNum, EndpointId destinationEndpoint, + chip::ByteSpan contentURL, chip::ByteSpan displayString) +{ + COMMAND_HEADER("LaunchURL", CONTENT_LAUNCH_CLUSTER_ID); + size_t contentURLStrLen = contentURL.size(); + if (!CanCastTo(contentURLStrLen)) + { + ChipLogError(Zcl, "Error encoding %s command. String too long: %d", kName, contentURLStrLen); + return PacketBufferHandle(); + } + + size_t displayStringStrLen = displayString.size(); + if (!CanCastTo(displayStringStrLen)) + { + ChipLogError(Zcl, "Error encoding %s command. String too long: %d", kName, displayStringStrLen); + return PacketBufferHandle(); + } + + buf.Put8(kFrameControlClusterSpecificCommand) + .Put8(seqNum) + .Put8(ZCL_LAUNCH_URL_COMMAND_ID) + .Put(static_cast(contentURLStrLen)) + .Put(contentURL.data(), contentURL.size()) + .Put(static_cast(displayStringStrLen)) + .Put(displayString.data(), displayString.size()); + COMMAND_FOOTER(); +} + +PacketBufferHandle encodeContentLaunchClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("DiscoverContentLaunchAttributes", CONTENT_LAUNCH_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF); + COMMAND_FOOTER(); +} + +/* + * Attribute AcceptsHeaderList + */ +PacketBufferHandle encodeContentLaunchClusterReadAcceptsHeaderListAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadContentLaunchAcceptsHeaderList", CONTENT_LAUNCH_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000); + COMMAND_FOOTER(); +} + +/* + * Attribute SupportedStreamingTypes + */ +PacketBufferHandle encodeContentLaunchClusterReadSupportedStreamingTypesAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadContentLaunchSupportedStreamingTypes", CONTENT_LAUNCH_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0001); + COMMAND_FOOTER(); +} + +/* + * Attribute ClusterRevision + */ +PacketBufferHandle encodeContentLaunchClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadContentLaunchClusterRevision", CONTENT_LAUNCH_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD); + COMMAND_FOOTER(); +} + /*----------------------------------------------------------------------------*\ | Cluster Descriptor | 0x001D | |------------------------------------------------------------------------------| @@ -2875,6 +3264,44 @@ PacketBufferHandle encodeIdentifyClusterReadClusterRevisionAttribute(uint8_t seq COMMAND_FOOTER(); } +/*----------------------------------------------------------------------------*\ +| Cluster KeypadInput | 0x0509 | +|------------------------------------------------------------------------------| +| Commands: | | +| * SendKey | 0x00 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/* + * Command SendKey + */ +PacketBufferHandle encodeKeypadInputClusterSendKeyCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t keyCode) +{ + COMMAND_HEADER("SendKey", KEYPAD_INPUT_CLUSTER_ID); + + buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_SEND_KEY_COMMAND_ID).Put8(keyCode); + COMMAND_FOOTER(); +} + +PacketBufferHandle encodeKeypadInputClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("DiscoverKeypadInputAttributes", KEYPAD_INPUT_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF); + COMMAND_FOOTER(); +} + +/* + * Attribute ClusterRevision + */ +PacketBufferHandle encodeKeypadInputClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadKeypadInputClusterRevision", KEYPAD_INPUT_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD); + COMMAND_FOOTER(); +} + /*----------------------------------------------------------------------------*\ | Cluster LevelControl | 0x0008 | |------------------------------------------------------------------------------| @@ -3098,28 +3525,282 @@ PacketBufferHandle encodeLowPowerClusterReadClusterRevisionAttribute(uint8_t seq } /*----------------------------------------------------------------------------*\ -| Cluster NetworkCommissioning | 0x0031 | +| Cluster MediaInput | 0x0507 | |------------------------------------------------------------------------------| | Commands: | | -| * AddThreadNetwork | 0x06 | -| * AddWiFiNetwork | 0x02 | -| * DisableNetwork | 0x0E | -| * EnableNetwork | 0x0C | -| * GetLastNetworkCommissioningResult | 0x10 | -| * RemoveNetwork | 0x0A | -| * ScanNetworks | 0x00 | -| * UpdateThreadNetwork | 0x08 | -| * UpdateWiFiNetwork | 0x04 | +| * HideInputStatus | 0x02 | +| * RenameInput | 0x03 | +| * SelectInput | 0x00 | +| * ShowInputStatus | 0x01 | |------------------------------------------------------------------------------| | Attributes: | | +| * MediaInputList | 0x0000 | | * ClusterRevision | 0xFFFD | \*----------------------------------------------------------------------------*/ /* - * Command AddThreadNetwork + * Command HideInputStatus */ -PacketBufferHandle encodeNetworkCommissioningClusterAddThreadNetworkCommand(uint8_t seqNum, EndpointId destinationEndpoint, - chip::ByteSpan operationalDataset, uint64_t breadcrumb, +PacketBufferHandle encodeMediaInputClusterHideInputStatusCommand(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("HideInputStatus", MEDIA_INPUT_CLUSTER_ID); + buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_HIDE_INPUT_STATUS_COMMAND_ID); + COMMAND_FOOTER(); +} + +/* + * Command RenameInput + */ +PacketBufferHandle encodeMediaInputClusterRenameInputCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t index, + chip::ByteSpan name) +{ + COMMAND_HEADER("RenameInput", MEDIA_INPUT_CLUSTER_ID); + + size_t nameStrLen = name.size(); + if (!CanCastTo(nameStrLen)) + { + ChipLogError(Zcl, "Error encoding %s command. String too long: %d", kName, nameStrLen); + return PacketBufferHandle(); + } + + buf.Put8(kFrameControlClusterSpecificCommand) + .Put8(seqNum) + .Put8(ZCL_RENAME_INPUT_COMMAND_ID) + .Put8(index) + .Put(static_cast(nameStrLen)) + .Put(name.data(), name.size()); + COMMAND_FOOTER(); +} + +/* + * Command SelectInput + */ +PacketBufferHandle encodeMediaInputClusterSelectInputCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t index) +{ + COMMAND_HEADER("SelectInput", MEDIA_INPUT_CLUSTER_ID); + + buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_SELECT_INPUT_COMMAND_ID).Put8(index); + COMMAND_FOOTER(); +} + +/* + * Command ShowInputStatus + */ +PacketBufferHandle encodeMediaInputClusterShowInputStatusCommand(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ShowInputStatus", MEDIA_INPUT_CLUSTER_ID); + buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_SHOW_INPUT_STATUS_COMMAND_ID); + COMMAND_FOOTER(); +} + +PacketBufferHandle encodeMediaInputClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("DiscoverMediaInputAttributes", MEDIA_INPUT_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF); + COMMAND_FOOTER(); +} + +/* + * Attribute MediaInputList + */ +PacketBufferHandle encodeMediaInputClusterReadMediaInputListAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadMediaInputMediaInputList", MEDIA_INPUT_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000); + COMMAND_FOOTER(); +} + +/* + * Attribute ClusterRevision + */ +PacketBufferHandle encodeMediaInputClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadMediaInputClusterRevision", MEDIA_INPUT_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD); + COMMAND_FOOTER(); +} + +/*----------------------------------------------------------------------------*\ +| Cluster MediaPlayback | 0x0506 | +|------------------------------------------------------------------------------| +| Commands: | | +| * MediaFastForward | 0x07 | +| * MediaNext | 0x05 | +| * MediaPause | 0x01 | +| * MediaPlay | 0x00 | +| * MediaPrevious | 0x04 | +| * MediaRewind | 0x06 | +| * MediaSkipBackward | 0x09 | +| * MediaSkipForward | 0x08 | +| * MediaSkipSeek | 0x0A | +| * MediaStartOver | 0x03 | +| * MediaStop | 0x02 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/* + * Command MediaFastForward + */ +PacketBufferHandle encodeMediaPlaybackClusterMediaFastForwardCommand(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("MediaFastForward", MEDIA_PLAYBACK_CLUSTER_ID); + buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_MEDIA_FAST_FORWARD_COMMAND_ID); + COMMAND_FOOTER(); +} + +/* + * Command MediaNext + */ +PacketBufferHandle encodeMediaPlaybackClusterMediaNextCommand(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("MediaNext", MEDIA_PLAYBACK_CLUSTER_ID); + buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_MEDIA_NEXT_COMMAND_ID); + COMMAND_FOOTER(); +} + +/* + * Command MediaPause + */ +PacketBufferHandle encodeMediaPlaybackClusterMediaPauseCommand(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("MediaPause", MEDIA_PLAYBACK_CLUSTER_ID); + buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_MEDIA_PAUSE_COMMAND_ID); + COMMAND_FOOTER(); +} + +/* + * Command MediaPlay + */ +PacketBufferHandle encodeMediaPlaybackClusterMediaPlayCommand(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("MediaPlay", MEDIA_PLAYBACK_CLUSTER_ID); + buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_MEDIA_PLAY_COMMAND_ID); + COMMAND_FOOTER(); +} + +/* + * Command MediaPrevious + */ +PacketBufferHandle encodeMediaPlaybackClusterMediaPreviousCommand(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("MediaPrevious", MEDIA_PLAYBACK_CLUSTER_ID); + buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_MEDIA_PREVIOUS_COMMAND_ID); + COMMAND_FOOTER(); +} + +/* + * Command MediaRewind + */ +PacketBufferHandle encodeMediaPlaybackClusterMediaRewindCommand(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("MediaRewind", MEDIA_PLAYBACK_CLUSTER_ID); + buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_MEDIA_REWIND_COMMAND_ID); + COMMAND_FOOTER(); +} + +/* + * Command MediaSkipBackward + */ +PacketBufferHandle encodeMediaPlaybackClusterMediaSkipBackwardCommand(uint8_t seqNum, EndpointId destinationEndpoint, + uint64_t deltaPositionMilliseconds) +{ + COMMAND_HEADER("MediaSkipBackward", MEDIA_PLAYBACK_CLUSTER_ID); + + buf.Put8(kFrameControlClusterSpecificCommand) + .Put8(seqNum) + .Put8(ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID) + .Put64(deltaPositionMilliseconds); + COMMAND_FOOTER(); +} + +/* + * Command MediaSkipForward + */ +PacketBufferHandle encodeMediaPlaybackClusterMediaSkipForwardCommand(uint8_t seqNum, EndpointId destinationEndpoint, + uint64_t deltaPositionMilliseconds) +{ + COMMAND_HEADER("MediaSkipForward", MEDIA_PLAYBACK_CLUSTER_ID); + + buf.Put8(kFrameControlClusterSpecificCommand) + .Put8(seqNum) + .Put8(ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID) + .Put64(deltaPositionMilliseconds); + COMMAND_FOOTER(); +} + +/* + * Command MediaSkipSeek + */ +PacketBufferHandle encodeMediaPlaybackClusterMediaSkipSeekCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint64_t position) +{ + COMMAND_HEADER("MediaSkipSeek", MEDIA_PLAYBACK_CLUSTER_ID); + + buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_MEDIA_SKIP_SEEK_COMMAND_ID).Put64(position); + COMMAND_FOOTER(); +} + +/* + * Command MediaStartOver + */ +PacketBufferHandle encodeMediaPlaybackClusterMediaStartOverCommand(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("MediaStartOver", MEDIA_PLAYBACK_CLUSTER_ID); + buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_MEDIA_START_OVER_COMMAND_ID); + COMMAND_FOOTER(); +} + +/* + * Command MediaStop + */ +PacketBufferHandle encodeMediaPlaybackClusterMediaStopCommand(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("MediaStop", MEDIA_PLAYBACK_CLUSTER_ID); + buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_MEDIA_STOP_COMMAND_ID); + COMMAND_FOOTER(); +} + +PacketBufferHandle encodeMediaPlaybackClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("DiscoverMediaPlaybackAttributes", MEDIA_PLAYBACK_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF); + COMMAND_FOOTER(); +} + +/* + * Attribute ClusterRevision + */ +PacketBufferHandle encodeMediaPlaybackClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadMediaPlaybackClusterRevision", MEDIA_PLAYBACK_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD); + COMMAND_FOOTER(); +} + +/*----------------------------------------------------------------------------*\ +| Cluster NetworkCommissioning | 0x0031 | +|------------------------------------------------------------------------------| +| Commands: | | +| * AddThreadNetwork | 0x06 | +| * AddWiFiNetwork | 0x02 | +| * DisableNetwork | 0x0E | +| * EnableNetwork | 0x0C | +| * GetLastNetworkCommissioningResult | 0x10 | +| * RemoveNetwork | 0x0A | +| * ScanNetworks | 0x00 | +| * UpdateThreadNetwork | 0x08 | +| * UpdateWiFiNetwork | 0x04 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/* + * Command AddThreadNetwork + */ +PacketBufferHandle encodeNetworkCommissioningClusterAddThreadNetworkCommand(uint8_t seqNum, EndpointId destinationEndpoint, + chip::ByteSpan operationalDataset, uint64_t breadcrumb, uint32_t timeoutMs) { COMMAND_HEADER("AddThreadNetwork", NETWORK_COMMISSIONING_CLUSTER_ID); @@ -3937,6 +4618,178 @@ PacketBufferHandle encodeSwitchClusterReadClusterRevisionAttribute(uint8_t seqNu COMMAND_FOOTER(); } +/*----------------------------------------------------------------------------*\ +| Cluster TvChannel | 0x0504 | +|------------------------------------------------------------------------------| +| Commands: | | +| * ChangeChannel | 0x00 | +| * ChangeChannelByNumber | 0x01 | +| * SkipChannel | 0x02 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * TvChannelList | 0x0000 | +| * TvChannelLineup | 0x0001 | +| * CurrentTvChannel | 0x0002 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/* + * Command ChangeChannel + */ +PacketBufferHandle encodeTvChannelClusterChangeChannelCommand(uint8_t seqNum, EndpointId destinationEndpoint, chip::ByteSpan match) +{ + COMMAND_HEADER("ChangeChannel", TV_CHANNEL_CLUSTER_ID); + size_t matchStrLen = match.size(); + if (!CanCastTo(matchStrLen)) + { + ChipLogError(Zcl, "Error encoding %s command. String too long: %d", kName, matchStrLen); + return PacketBufferHandle(); + } + + buf.Put8(kFrameControlClusterSpecificCommand) + .Put8(seqNum) + .Put8(ZCL_CHANGE_CHANNEL_COMMAND_ID) + .Put(static_cast(matchStrLen)) + .Put(match.data(), match.size()); + COMMAND_FOOTER(); +} + +/* + * Command ChangeChannelByNumber + */ +PacketBufferHandle encodeTvChannelClusterChangeChannelByNumberCommand(uint8_t seqNum, EndpointId destinationEndpoint, + uint16_t majorNumber, uint16_t minorNumber) +{ + COMMAND_HEADER("ChangeChannelByNumber", TV_CHANNEL_CLUSTER_ID); + + buf.Put8(kFrameControlClusterSpecificCommand) + .Put8(seqNum) + .Put8(ZCL_CHANGE_CHANNEL_BY_NUMBER_COMMAND_ID) + .Put16(majorNumber) + .Put16(minorNumber); + COMMAND_FOOTER(); +} + +/* + * Command SkipChannel + */ +PacketBufferHandle encodeTvChannelClusterSkipChannelCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint16_t count) +{ + COMMAND_HEADER("SkipChannel", TV_CHANNEL_CLUSTER_ID); + + buf.Put8(kFrameControlClusterSpecificCommand).Put8(seqNum).Put8(ZCL_SKIP_CHANNEL_COMMAND_ID).Put16(count); + COMMAND_FOOTER(); +} + +PacketBufferHandle encodeTvChannelClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("DiscoverTvChannelAttributes", TV_CHANNEL_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF); + COMMAND_FOOTER(); +} + +/* + * Attribute TvChannelList + */ +PacketBufferHandle encodeTvChannelClusterReadTvChannelListAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadTvChannelTvChannelList", TV_CHANNEL_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000); + COMMAND_FOOTER(); +} + +/* + * Attribute TvChannelLineup + */ +PacketBufferHandle encodeTvChannelClusterReadTvChannelLineupAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadTvChannelTvChannelLineup", TV_CHANNEL_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0001); + COMMAND_FOOTER(); +} + +/* + * Attribute CurrentTvChannel + */ +PacketBufferHandle encodeTvChannelClusterReadCurrentTvChannelAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadTvChannelCurrentTvChannel", TV_CHANNEL_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0002); + COMMAND_FOOTER(); +} + +/* + * Attribute ClusterRevision + */ +PacketBufferHandle encodeTvChannelClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadTvChannelClusterRevision", TV_CHANNEL_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD); + COMMAND_FOOTER(); +} + +/*----------------------------------------------------------------------------*\ +| Cluster TargetNavigator | 0x0505 | +|------------------------------------------------------------------------------| +| Commands: | | +| * NavigateTarget | 0x00 | +|------------------------------------------------------------------------------| +| Attributes: | | +| * TargetNavigatorList | 0x0000 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +/* + * Command NavigateTarget + */ +PacketBufferHandle encodeTargetNavigatorClusterNavigateTargetCommand(uint8_t seqNum, EndpointId destinationEndpoint, uint8_t target, + chip::ByteSpan data) +{ + COMMAND_HEADER("NavigateTarget", TARGET_NAVIGATOR_CLUSTER_ID); + + size_t dataStrLen = data.size(); + if (!CanCastTo(dataStrLen)) + { + ChipLogError(Zcl, "Error encoding %s command. String too long: %d", kName, dataStrLen); + return PacketBufferHandle(); + } + + buf.Put8(kFrameControlClusterSpecificCommand) + .Put8(seqNum) + .Put8(ZCL_NAVIGATE_TARGET_COMMAND_ID) + .Put8(target) + .Put(static_cast(dataStrLen)) + .Put(data.data(), data.size()); + COMMAND_FOOTER(); +} + +PacketBufferHandle encodeTargetNavigatorClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("DiscoverTargetNavigatorAttributes", TARGET_NAVIGATOR_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF); + COMMAND_FOOTER(); +} + +/* + * Attribute TargetNavigatorList + */ +PacketBufferHandle encodeTargetNavigatorClusterReadTargetNavigatorListAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadTargetNavigatorTargetNavigatorList", TARGET_NAVIGATOR_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000); + COMMAND_FOOTER(); +} + +/* + * Attribute ClusterRevision + */ +PacketBufferHandle encodeTargetNavigatorClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadTargetNavigatorClusterRevision", TARGET_NAVIGATOR_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD); + COMMAND_FOOTER(); +} + /*----------------------------------------------------------------------------*\ | Cluster TemperatureMeasurement | 0x0402 | |------------------------------------------------------------------------------| @@ -4241,6 +5094,43 @@ PacketBufferHandle encodeThermostatClusterReadClusterRevisionAttribute(uint8_t s COMMAND_FOOTER(); } +/*----------------------------------------------------------------------------*\ +| Cluster WakeOnLan | 0x0503 | +|------------------------------------------------------------------------------| +| Commands: | | +|------------------------------------------------------------------------------| +| Attributes: | | +| * WakeOnLanMacAddress | 0x0000 | +| * ClusterRevision | 0xFFFD | +\*----------------------------------------------------------------------------*/ + +PacketBufferHandle encodeWakeOnLanClusterDiscoverAttributes(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("DiscoverWakeOnLanAttributes", WAKE_ON_LAN_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_DISCOVER_ATTRIBUTES_COMMAND_ID).Put16(0x0000).Put8(0xFF); + COMMAND_FOOTER(); +} + +/* + * Attribute WakeOnLanMacAddress + */ +PacketBufferHandle encodeWakeOnLanClusterReadWakeOnLanMacAddressAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadWakeOnLanWakeOnLanMacAddress", WAKE_ON_LAN_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0x0000); + COMMAND_FOOTER(); +} + +/* + * Attribute ClusterRevision + */ +PacketBufferHandle encodeWakeOnLanClusterReadClusterRevisionAttribute(uint8_t seqNum, EndpointId destinationEndpoint) +{ + COMMAND_HEADER("ReadWakeOnLanClusterRevision", WAKE_ON_LAN_CLUSTER_ID); + buf.Put8(kFrameControlGlobalCommand).Put8(seqNum).Put8(ZCL_READ_ATTRIBUTES_COMMAND_ID).Put16(0xFFFD); + COMMAND_FOOTER(); +} + /*----------------------------------------------------------------------------*\ | Cluster WindowCovering | 0x0102 | |------------------------------------------------------------------------------| diff --git a/src/app/util/debug-printing.h b/src/app/util/debug-printing.h index be66d2c39052b3..d77b219daa4c77 100644 --- a/src/app/util/debug-printing.h +++ b/src/app/util/debug-printing.h @@ -2913,6 +2913,52 @@ #define emberAfCustom2PrintString(buffer) #endif // defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_CUSTOM2) +// Printing macros for cluster: Account Login +#if defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_ACCOUNT_LOGIN_CLUSTER) +#define emberAfAccountLoginClusterPrint(...) emberAfPrint(EMBER_AF_PRINT_ACCOUNT_LOGIN_CLUSTER, __VA_ARGS__) +#define emberAfAccountLoginClusterPrintln(...) emberAfPrintln(EMBER_AF_PRINT_ACCOUNT_LOGIN_CLUSTER, __VA_ARGS__) +// Blocking IO is enabled for all serial ports, therefore flush calls are unnecessary. +#define emberAfAccountLoginClusterFlush() +#define emberAfAccountLoginClusterDebugExec(x) \ + if (emberAfPrintEnabled(EMBER_AF_PRINT_ACCOUNT_LOGIN_CLUSTER)) \ + { \ + x; \ + } +#define emberAfAccountLoginClusterPrintBuffer(buffer, len, withSpace) \ + emberAfPrintBuffer(EMBER_AF_PRINT_ACCOUNT_LOGIN_CLUSTER, (buffer), (len), (withSpace)) +#define emberAfAccountLoginClusterPrintString(buffer) emberAfPrintString(EMBER_AF_PRINT_ACCOUNT_LOGIN_CLUSTER, (buffer)) +#else +#define emberAfAccountLoginClusterPrint(...) +#define emberAfAccountLoginClusterPrintln(...) +#define emberAfAccountLoginClusterFlush() +#define emberAfAccountLoginClusterDebugExec(x) +#define emberAfAccountLoginClusterPrintBuffer(buffer, len, withSpace) +#define emberAfAccountLoginClusterPrintString(buffer) +#endif // defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_ACCOUNT_LOGIN_CLUSTER) + +// Printing macros for cluster: Media Playback +#if defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_MEDIA_PLAYBACK_CLUSTER) +#define emberAfMediaPlaybackClusterPrint(...) emberAfPrint(EMBER_AF_PRINT_MEDIA_PLAYBACK_CLUSTER, __VA_ARGS__) +#define emberAfMediaPlaybackClusterPrintln(...) emberAfPrintln(EMBER_AF_PRINT_MEDIA_PLAYBACK_CLUSTER, __VA_ARGS__) +// Blocking IO is enabled for all serial ports, therefore flush calls are unnecessary. +#define emberAfMediaPlaybackClusterFlush() +#define emberAfMediaPlaybackClusterDebugExec(x) \ + if (emberAfPrintEnabled(EMBER_AF_PRINT_MEDIA_PLAYBACK_CLUSTER)) \ + { \ + x; \ + } +#define emberAfMediaPlaybackClusterPrintBuffer(buffer, len, withSpace) \ + emberAfPrintBuffer(EMBER_AF_PRINT_MEDIA_PLAYBACK_CLUSTER, (buffer), (len), (withSpace)) +#define emberAfMediaPlaybackClusterPrintString(buffer) emberAfPrintString(EMBER_AF_PRINT_MEDIA_PLAYBACK_CLUSTER, (buffer)) +#else +#define emberAfMediaPlaybackClusterPrint(...) +#define emberAfMediaPlaybackClusterPrintln(...) +#define emberAfMediaPlaybackClusterFlush() +#define emberAfMediaPlaybackClusterDebugExec(x) +#define emberAfMediaPlaybackClusterPrintBuffer(buffer, len, withSpace) +#define emberAfMediaPlaybackClusterPrintString(buffer) +#endif // defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_MEDIA_PLAYBACK_CLUSTER) + // Printing macros for Custom messages (3) // Messages that can be used by the end developer #if defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_CUSTOM3) @@ -2935,3 +2981,142 @@ #define emberAfCustom3PrintBuffer(buffer, len, withSpace) #define emberAfCustom3PrintString(buffer) #endif // defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_CUSTOM3) + +// Printing macros for cluster: Application Launcher +#if defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_APPLICATION_LAUNCHER_CLUSTER) +#define emberAfApplicationLauncherClusterPrint(...) emberAfPrint(EMBER_AF_PRINT_APPLICATION_LAUNCHER_CLUSTER, __VA_ARGS__) +#define emberAfApplicationLauncherClusterPrintln(...) emberAfPrintln(EMBER_AF_PRINT_APPLICATION_LAUNCHER_CLUSTER, __VA_ARGS__) +// Blocking IO is enabled for all serial ports, therefore flush calls are unnecessary. +#define emberAfApplicationLauncherClusterFlush() +#define emberAfApplicationLauncherClusterDebugExec(x) \ + if (emberAfPrintEnabled(EMBER_AF_PRINT_APPLICATION_LAUNCHER_CLUSTER)) \ + { \ + x; \ + } +#define emberAfApplicationLauncherClusterPrintBuffer(buffer, len, withSpace) \ + emberAfPrintBuffer(EMBER_AF_PRINT_APPLICATION_LAUNCHER_CLUSTER, (buffer), (len), (withSpace)) +#define emberAfApplicationLauncherClusterPrintString(buffer) \ + emberAfPrintString(EMBER_AF_PRINT_APPLICATION_LAUNCHER_CLUSTER, (buffer)) +#else +#define emberAfApplicationLauncherClusterPrint(...) +#define emberAfApplicationLauncherClusterPrintln(...) +#define emberAfApplicationLauncherClusterFlush() +#define emberAfApplicationLauncherClusterDebugExec(x) +#define emberAfApplicationLauncherClusterPrintBuffer(buffer, len, withSpace) +#define emberAfApplicationLauncherClusterPrintString(buffer) +#endif // defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_APPLICATION_LAUNCHER_CLUSTER) + +// Printing macros for cluster: Audio Output +#if defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_AUDIO_OUTPUT_CLUSTER) +#define emberAfAudioOutputClusterPrint(...) emberAfPrint(EMBER_AF_PRINT_AUDIO_OUTPUT_CLUSTER, __VA_ARGS__) +#define emberAfAudioOutputClusterPrintln(...) emberAfPrintln(EMBER_AF_PRINT_AUDIO_OUTPUT_CLUSTER, __VA_ARGS__) +// Blocking IO is enabled for all serial ports, therefore flush calls are unnecessary. +#define emberAfAudioOutputClusterFlush() +#define emberAfAudioOutputClusterDebugExec(x) \ + if (emberAfPrintEnabled(EMBER_AF_PRINT_AUDIO_OUTPUT_CLUSTER)) \ + { \ + x; \ + } +#define emberAfAudioOutputClusterPrintBuffer(buffer, len, withSpace) \ + emberAfPrintBuffer(EMBER_AF_PRINT_AUDIO_OUTPUT_CLUSTER, (buffer), (len), (withSpace)) +#define emberAfAudioOutputClusterPrintString(buffer) emberAfPrintString(EMBER_AF_PRINT_AUDIO_OUTPUT_CLUSTER, (buffer)) +#else +#define emberAfAudioOutputClusterPrint(...) +#define emberAfAudioOutputClusterPrintln(...) +#define emberAfAudioOutputClusterFlush() +#define emberAfAudioOutputClusterDebugExec(x) +#define emberAfAudioOutputClusterPrintBuffer(buffer, len, withSpace) +#define emberAfAudioOutputClusterPrintString(buffer) +#endif // defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_AUDIO_OUTPUT_CLUSTER) + +// Printing macros for cluster: Keypad Input +#if defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_KEYPAD_INPUT_CLUSTER) +#define emberAfKeypadInputClusterPrint(...) emberAfPrint(EMBER_AF_PRINT_KEYPAD_INPUT_CLUSTER, __VA_ARGS__) +#define emberAfKeypadInputClusterPrintln(...) emberAfPrintln(EMBER_AF_PRINT_KEYPAD_INPUT_CLUSTER, __VA_ARGS__) +// Blocking IO is enabled for all serial ports, therefore flush calls are unnecessary. +#define emberAfKeypadInputClusterFlush() +#define emberAfKeypadInputClusterDebugExec(x) \ + if (emberAfPrintEnabled(EMBER_AF_PRINT_KEYPAD_INPUT_CLUSTER)) \ + { \ + x; \ + } +#define emberAfKeypadInputClusterPrintBuffer(buffer, len, withSpace) \ + emberAfPrintBuffer(EMBER_AF_PRINT_KEYPAD_INPUT_CLUSTER, (buffer), (len), (withSpace)) +#define emberAfKeypadInputClusterPrintString(buffer) emberAfPrintString(EMBER_AF_PRINT_KEYPAD_INPUT_CLUSTER, (buffer)) +#else +#define emberAfKeypadInputClusterPrint(...) +#define emberAfKeypadInputClusterPrintln(...) +#define emberAfKeypadInputClusterFlush() +#define emberAfKeypadInputClusterDebugExec(x) +#define emberAfKeypadInputClusterPrintBuffer(buffer, len, withSpace) +#define emberAfKeypadInputClusterPrintString(buffer) +#endif // defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_KEYPAD_INPUT_CLUSTER) + +// Printing macros for cluster: Content Launcher +#if defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_CONTENT_LAUNCHER_CLUSTER) +#define emberAfContentLauncherClusterPrint(...) emberAfPrint(EMBER_AF_PRINT_CONTENT_LAUNCHER_CLUSTER, __VA_ARGS__) +#define emberAfContentLauncherClusterPrintln(...) emberAfPrintln(EMBER_AF_PRINT_CONTENT_LAUNCHER_CLUSTER, __VA_ARGS__) +// Blocking IO is enabled for all serial ports, therefore flush calls are unnecessary. +#define emberAfContentLauncherClusterFlush() +#define emberAfContentLauncherClusterDebugExec(x) \ + if (emberAfPrintEnabled(EMBER_AF_PRINT_CONTENT_LAUNCHER_CLUSTER)) \ + { \ + x; \ + } +#define emberAfContentLauncherClusterPrintBuffer(buffer, len, withSpace) \ + emberAfPrintBuffer(EMBER_AF_PRINT_CONTENT_LAUNCHER_CLUSTER, (buffer), (len), (withSpace)) +#define emberAfContentLauncherClusterPrintString(buffer) emberAfPrintString(EMBER_AF_PRINT_CONTENT_LAUNCHER_CLUSTER, (buffer)) +#else +#define emberAfContentLauncherClusterPrint(...) +#define emberAfContentLauncherClusterPrintln(...) +#define emberAfContentLauncherClusterFlush() +#define emberAfContentLauncherClusterDebugExec(x) +#define emberAfContentLauncherClusterPrintBuffer(buffer, len, withSpace) +#define emberAfContentLauncherClusterPrintString(buffer) +#endif // defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_CONTENT_LAUNCHER_CLUSTER) + +// Printing macros for cluster: Target Navigator +#if defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_TARGET_NAVIGATOR_CLUSTER) +#define emberAfTargetNavigatorClusterPrint(...) emberAfPrint(EMBER_AF_PRINT_TARGET_NAVIGATOR_CLUSTER, __VA_ARGS__) +#define emberAfTargetNavigatorClusterPrintln(...) emberAfPrintln(EMBER_AF_PRINT_TARGET_NAVIGATOR_CLUSTER, __VA_ARGS__) +// Blocking IO is enabled for all serial ports, therefore flush calls are unnecessary. +#define emberAfTargetNavigatorClusterFlush() +#define emberAfTargetNavigatorClusterDebugExec(x) \ + if (emberAfPrintEnabled(EMBER_AF_PRINT_TARGET_NAVIGATOR_CLUSTER)) \ + { \ + x; \ + } +#define emberAfTargetNavigatorClusterPrintBuffer(buffer, len, withSpace) \ + emberAfPrintBuffer(EMBER_AF_PRINT_TARGET_NAVIGATOR_CLUSTER, (buffer), (len), (withSpace)) +#define emberAfTargetNavigatorClusterPrintString(buffer) emberAfPrintString(EMBER_AF_PRINT_TARGET_NAVIGATOR_CLUSTER, (buffer)) +#else +#define emberAfTargetNavigatorClusterPrint(...) +#define emberAfTargetNavigatorClusterPrintln(...) +#define emberAfTargetNavigatorClusterFlush() +#define emberAfTargetNavigatorClusterDebugExec(x) +#define emberAfTargetNavigatorClusterPrintBuffer(buffer, len, withSpace) +#define emberAfTargetNavigatorClusterPrintString(buffer) +#endif // defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_TARGET_NAVIGATOR_CLUSTER) + +// Printing macros for cluster: Wake on LAN +#if defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_WAKE_ON_LAN_CLUSTER) +#define emberAfWakeOnLanClusterPrint(...) emberAfPrint(EMBER_AF_PRINT_WAKE_ON_LAN_CLUSTER, __VA_ARGS__) +#define emberAfWakeOnLanClusterPrintln(...) emberAfPrintln(EMBER_AF_PRINT_WAKE_ON_LAN_CLUSTER, __VA_ARGS__) +// Blocking IO is enabled for all serial ports, therefore flush calls are unnecessary. +#define emberAfWakeOnLanClusterFlush() +#define emberAfWakeOnLanClusterDebugExec(x) \ + if (emberAfPrintEnabled(EMBER_AF_PRINT_WAKE_ON_LAN_CLUSTER)) \ + { \ + x; \ + } +#define emberAfWakeOnLanClusterPrintBuffer(buffer, len, withSpace) \ + emberAfPrintBuffer(EMBER_AF_PRINT_WAKE_ON_LAN_CLUSTER, (buffer), (len), (withSpace)) +#define emberAfWakeOnLanClusterPrintString(buffer) emberAfPrintString(EMBER_AF_PRINT_WAKE_ON_LAN_CLUSTER, (buffer)) +#else +#define emberAfWakeOnLanClusterPrint(...) +#define emberAfWakeOnLanClusterPrintln(...) +#define emberAfWakeOnLanClusterFlush() +#define emberAfWakeOnLanClusterDebugExec(x) +#define emberAfWakeOnLanClusterPrintBuffer(buffer, len, withSpace) +#define emberAfWakeOnLanClusterPrintString(buffer) +#endif // defined(EMBER_AF_PRINT_ENABLE) && defined(EMBER_AF_PRINT_WAKE_ON_LAN_CLUSTER) diff --git a/src/app/zap-templates/zcl/application-launcher-cluster.xml b/src/app/zap-templates/zcl/application-launcher-cluster.xml index f0851f55d4071a..c9fb0e4480a8d6 100644 --- a/src/app/zap-templates/zcl/application-launcher-cluster.xml +++ b/src/app/zap-templates/zcl/application-launcher-cluster.xml @@ -25,13 +25,16 @@ limitations under the License. true This cluster provides an interface for launching content on a media player device such as a TV or Speaker. + application launcher list - current app + + catalog vendor id + application id Upon receipt, this SHALL launch the specified app with optional data. The TV Device SHALL launch and bring to foreground the identified application in the command if the application is not already launched and in foreground. The TV Device SHALL update state attribute on the Application Basic cluster of the Endpoint corresponding to the launched application. This command returns a Launch Response. - + diff --git a/src/app/zap-templates/zcl/audio-output-cluster.xml b/src/app/zap-templates/zcl/audio-output-cluster.xml index 2bd84123c32a68..4ec6a99eb7225a 100644 --- a/src/app/zap-templates/zcl/audio-output-cluster.xml +++ b/src/app/zap-templates/zcl/audio-output-cluster.xml @@ -23,7 +23,9 @@ limitations under the License. AUDIO_OUTPUT_CLUSTER true true + This cluster provides an interface for controlling the Output on a media device such as a TV. + audio output list current audio output @@ -41,9 +43,9 @@ limitations under the License. - - - + + + diff --git a/src/app/zap-templates/zcl/content-launch-cluster.xml b/src/app/zap-templates/zcl/content-launch-cluster.xml index e073607b634a47..752f6a288831ce 100644 --- a/src/app/zap-templates/zcl/content-launch-cluster.xml +++ b/src/app/zap-templates/zcl/content-launch-cluster.xml @@ -23,52 +23,83 @@ limitations under the License. CONTENT_LAUNCH_CLUSTER true true + This cluster provides an interface for launching content on a media player device such as a TV or Speaker. + + accepts header list + supported streaming types + + Upon receipt, this SHALL launch the specified content with optional search criteria. + + + Upon receipt, this SHALL launch content from the specified URL. + + + This command SHALL be generated in response to LaunchContent command. + This command SHALL be generated in response to LaunchURL command. + - - - - + + + + + + + + - - - - + + + + + + - - - + + + + + - - - - + + + + + + + + + + + + - + + @@ -81,4 +112,21 @@ limitations under the License. + + + + + + + + + + + + + + + + + diff --git a/src/app/zap-templates/zcl/keypad-input-cluster.xml b/src/app/zap-templates/zcl/keypad-input-cluster.xml index 49b56d300e70b1..ad90aa5cf139e1 100644 --- a/src/app/zap-templates/zcl/keypad-input-cluster.xml +++ b/src/app/zap-templates/zcl/keypad-input-cluster.xml @@ -23,11 +23,12 @@ limitations under the License. KEYPAD_INPUT_CLUSTER true true + This cluster provides an interface for controlling a device like a TV using action commands such as UP, DOWN, and SELECT. Upon receipt, this SHALL process a keycode as input to the media device. - + @@ -42,4 +43,102 @@ limitations under the License. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/zap-templates/zcl/media-input-cluster.xml b/src/app/zap-templates/zcl/media-input-cluster.xml index 0070bbf83c97de..98e3c0ebdacb2f 100644 --- a/src/app/zap-templates/zcl/media-input-cluster.xml +++ b/src/app/zap-templates/zcl/media-input-cluster.xml @@ -23,7 +23,9 @@ limitations under the License. MEDIA_INPUT_CLUSTER true true + This cluster provides an interface for controlling the Input Selector on a media device such as a TV. + media input list current media input @@ -49,10 +51,10 @@ limitations under the License. - - - - + + + + diff --git a/src/app/zap-templates/zcl/media-playback-cluster.xml b/src/app/zap-templates/zcl/media-playback-cluster.xml index 0c57f2168cb2e2..88622ab4e4a1fb 100644 --- a/src/app/zap-templates/zcl/media-playback-cluster.xml +++ b/src/app/zap-templates/zcl/media-playback-cluster.xml @@ -23,66 +23,142 @@ limitations under the License. MEDIA_PLAYBACK_CLUSTER true true + This cluster provides an interface for controlling Media Playback (PLAY, PAUSE, etc) on a media device such as a TV or Speaker. - + playback state + start time + duration + updated at + posistion + + playback speed + seek range end + seek range start + + + Upon receipt, this SHALL play media. - + Upon receipt, this SHALL pause media. - + Upon receipt, this SHALL stop media. User experience is context-specific. This will often navigate the user back to the location where media was originally launched. - + Upon receipt, this SHALL Start Over with the current media playback item. - + Upon receipt, this SHALL cause the handler to be invoked for "Previous". User experience is context-specific. This will often Go back to the previous media playback item. - + Upon receipt, this SHALL cause the handler to be invoked for "Next". User experience is context-specific. This will often Go forward to the next media playback item. - + Upon receipt, this SHALL Rewind through media. Different Rewind speeds can be used on the TV based upon the number of sequential calls to this function. This is to avoid needing to define every speed now (multiple fast, slow motion, etc). - + Upon receipt, this SHALL Advance through media. Different FF speeds can be used on the TV based upon the number of sequential calls to this function. This is to avoid needing to define every speed now (multiple fast, slow motion, etc). - + Upon receipt, this SHALL Skip forward in the media by the given number of seconds, using the data as follows: + - + Upon receipt, this SHALL Skip backward in the media by the given number of seconds, using the data as follows: + - + Upon receipt, this SHALL Skip backward in the media by the given number of seconds, using the data as follows: + - current state - - - - - - + + Upon receipt, this SHALL play media. + + - - - - - - + + Upon receipt, this SHALL pause media. + + + + + Upon receipt, this SHALL stop media. User experience is context-specific. This will often navigate the user back to the location where media was originally launched. + + + + + Upon receipt, this SHALL Start Over with the current media playback item. + + + + + Upon receipt, this SHALL cause the handler to be invoked for "Previous". User experience is context-specific. This will often Go back to the previous media playback item. + + + + + Upon receipt, this SHALL cause the handler to be invoked for "Next". User experience is context-specific. This will often Go forward to the next media playback item. + + + + + Upon receipt, this SHALL Rewind through media. Different Rewind speeds can be used on the TV based upon the number of sequential calls to this function. This is to avoid needing to define every speed now (multiple fast, slow motion, etc). + + + + + Upon receipt, this SHALL Advance through media. Different FF speeds can be used on the TV based upon the number of sequential calls to this function. This is to avoid needing to define every speed now (multiple fast, slow motion, etc). + + + + + Upon receipt, this SHALL Skip forward in the media by the given number of seconds, using the data as follows: + + + + + Upon receipt, this SHALL Skip backward in the media by the given number of seconds, using the data as follows: + + + + + Upon receipt, this SHALL change the playback position in the media to the given position using data as follows: + + - + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/zap-templates/zcl/target-navigator-cluster.xml b/src/app/zap-templates/zcl/target-navigator-cluster.xml index 4c084df961ba3a..5d702c1163cb90 100644 --- a/src/app/zap-templates/zcl/target-navigator-cluster.xml +++ b/src/app/zap-templates/zcl/target-navigator-cluster.xml @@ -23,8 +23,9 @@ limitations under the License. TARGET_NAVIGATOR_CLUSTER true true + This cluster provides an interface for UX navigation within a set of targets on a device or endpoint. - + target navigator list current navigator target diff --git a/src/app/zap-templates/zcl/tv-channel-cluster.xml b/src/app/zap-templates/zcl/tv-channel-cluster.xml index 380f3229b05cfb..d3aa69ba130fa2 100644 --- a/src/app/zap-templates/zcl/tv-channel-cluster.xml +++ b/src/app/zap-templates/zcl/tv-channel-cluster.xml @@ -23,9 +23,13 @@ limitations under the License. TV_CHANNEL_CLUSTER true true + This cluster provides an interface for controlling the current TV Channel on a device. + tv channel list + tv channel lineup + current tv channel @@ -33,7 +37,6 @@ limitations under the License. - Change the channel on the TV to the channel with the given Number in the ChannelList attribute. @@ -54,18 +57,18 @@ limitations under the License. - - - - - + + + + + - - - - + + + + diff --git a/src/app/zap_cluster_list.py b/src/app/zap_cluster_list.py index 845c5fd63c5253..cf0e31cafacd2c 100755 --- a/src/app/zap_cluster_list.py +++ b/src/app/zap_cluster_list.py @@ -11,6 +11,9 @@ SERVER_CLUSTERS: typing.Dict[str, typing.List[str]] = { 'ALARM_CLUSTER': [], 'APPLICATION_BASIC_CLUSTER': [], + 'ACCOUNT_LOGIN_CLUSTER': [], + 'APPLICATION_LAUNCHER_CLUSTER': ['application-launcher-server'], + 'AUDIO_OUTPUT_CLUSTER': [], 'BARRIER_CONTROL_CLUSTER': ['barrier-control-server'], 'BASIC_CLUSTER': ['basic'], 'BINDING_CLUSTER': ['bindings'], @@ -25,8 +28,10 @@ 'GROUP_KEY_MANAGEMENT_CLUSTER': [], 'IAS_ZONE_CLUSTER': ['ias-zone-server'], 'IDENTIFY_CLUSTER': ['identify'], + 'KEYPAD_INPUT_CLUSTER': ['keypad-input-server'], 'LEVEL_CONTROL_CLUSTER': ['level-control'], 'LOW_POWER_CLUSTER': ['low-power-server'], + 'MEDIA_INPUT_CLUSTER': ['media-input-server'], 'MEDIA_PLAYBACK_CLUSTER': ['media-playback-server'], 'NETWORK_COMMISSIONING_CLUSTER': ['network-commissioning'], 'OCCUPANCY_SENSING_CLUSTER': [], @@ -39,15 +44,21 @@ 'PUMP_CONFIG_CONTROL_CLUSTER': [], 'SCENES_CLUSTER': ['scenes'], 'SWITCH_CLUSTER': [], + 'TARGET_NAVIGATOR_CLUSTER': ['target-navigator-server'], 'TEMP_MEASUREMENT_CLUSTER': ['temperature-measurement-server'], + 'TV_CHANNEL_CLUSTER': ['tv-channel-server'], 'THERMOSTAT_CLUSTER': [], 'WINDOW_COVERING_CLUSTER': [], + 'WAKE_ON_LAN_CLUSTER':[], 'ZLL_COMMISSIONING_CLUSTER': [] } # List of directories in src/app/clusters to build for client clusters. CLIENT_CLUSTERS: typing.Dict[str, typing.List[str]] = { 'ALARM_CLUSTER': [], + 'ACCOUNT_LOGIN_CLUSTER': [], + 'APPLICATION_LAUNCHER_CLUSTER': [], + 'AUDIO_OUTPUT_CLUSTER': [], 'APPLICATION_BASIC_CLUSTER': [], 'BARRIER_CONTROL_CLUSTER': [], 'BASIC_CLUSTER': [], @@ -63,9 +74,11 @@ 'GROUP_KEY_MANAGEMENT_CLUSTER': [], 'IAS_ZONE_CLUSTER': ['ias-zone-client'], 'IDENTIFY_CLUSTER': [], + 'KEYPAD_INPUT_CLUSTER': [], 'LEVEL_CONTROL_CLUSTER': [], 'LOW_POWER_CLUSTER': [], - 'MEDIA_PLAYBACK_CLUSTER': ['media-playback-client'], + 'MEDIA_INPUT_CLUSTER': [], + 'MEDIA_PLAYBACK_CLUSTER': [], 'NETWORK_COMMISSIONING_CLUSTER': [], 'OCCUPANCY_SENSING_CLUSTER': [], 'ON_OFF_CLUSTER': [], @@ -77,9 +90,12 @@ 'PUMP_CONFIG_CONTROL_CLUSTER': [], 'SCENES_CLUSTER': [], 'SWITCH_CLUSTER': [], + 'TARGET_NAVIGATOR_CLUSTER': [], 'TEMP_MEASUREMENT_CLUSTER': [], + 'TV_CHANNEL_CLUSTER': [], 'THERMOSTAT_CLUSTER': ['thermostat-client'], 'WINDOW_COVERING_CLUSTER': [], + 'WAKE_ON_LAN_CLUSTER':[], 'ZLL_COMMISSIONING_CLUSTER': [] } diff --git a/src/controller/controller-clusters.zap b/src/controller/controller-clusters.zap index b3b47ea22b81f0..ab732451451b3f 100644 --- a/src/controller/controller-clusters.zap +++ b/src/controller/controller-clusters.zap @@ -4322,20 +4322,888 @@ } ] }, + { + "name": "Wake on LAN", + "code": 1283, + "mfgCode": null, + "define": "WAKE_ON_LAN_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Wake on LAN", + "code": 1283, + "mfgCode": null, + "define": "WAKE_ON_LAN_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "wake on lan mac address", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "TV Channel", + "code": 1284, + "mfgCode": null, + "define": "TV_CHANNEL_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "ChangeChannel", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ChangeChannelByNumber", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "SkipChannel", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "TV Channel", + "code": 1284, + "mfgCode": null, + "define": "TV_CHANNEL_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "ChangeChannelResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "tv channel list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "tv channel lineup", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "current tv channel", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Target Navigator", + "code": 1285, + "mfgCode": null, + "define": "TARGET_NAVIGATOR_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "NavigateTarget", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Target Navigator", + "code": 1285, + "mfgCode": null, + "define": "TARGET_NAVIGATOR_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "NavigateTargetResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "target navigator list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Playback", + "code": 1286, + "mfgCode": null, + "define": "MEDIA_PLAYBACK_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "MediaPlay", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaPause", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaStop", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaStartOver", + "code": 3, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaPrevious", + "code": 4, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaNext", + "code": 5, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaRewind", + "code": 6, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaFastForward", + "code": 7, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaSkipForward", + "code": 8, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaSkipBackward", + "code": 9, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaSkipSeek", + "code": 10, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Playback", + "code": 1286, + "mfgCode": null, + "define": "MEDIA_PLAYBACK_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "MediaPlayResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaPauseResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaStopResponse", + "code": 2, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaStartOverResponse", + "code": 3, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaPreviousResponse", + "code": 4, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaNextResponse", + "code": 5, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaRewindResponse", + "code": 6, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaFastForwardResponse", + "code": 7, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaSkipForwardResponse", + "code": 8, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaSkipBackwardResponse", + "code": 9, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaSkipSeekResponse", + "code": 10, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Input", + "code": 1287, + "mfgCode": null, + "define": "MEDIA_INPUT_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "SelectInput", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ShowInputStatus", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "HideInputStatus", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "RenameInput", + "code": 3, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Input", + "code": 1287, + "mfgCode": null, + "define": "MEDIA_INPUT_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "media input list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Low Power", + "code": 1288, + "mfgCode": null, + "define": "LOW_POWER_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "Sleep", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, { "name": "Low Power", "code": 1288, "mfgCode": null, - "define": "LOW_POWER_CLUSTER", + "define": "LOW_POWER_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Keypad Input", + "code": 1289, + "mfgCode": null, + "define": "KEYPAD_INPUT_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "SendKey", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Keypad Input", + "code": 1289, + "mfgCode": null, + "define": "KEYPAD_INPUT_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "SendKeyResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Content Launch", + "code": 1290, + "mfgCode": null, + "define": "CONTENT_LAUNCH_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "LaunchContent", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "LaunchURL", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Content Launch", + "code": 1290, + "mfgCode": null, + "define": "CONTENT_LAUNCH_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "LaunchContentResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "LaunchURLResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "accepts header list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "supported streaming types", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Audio Output", + "code": 1291, + "mfgCode": null, + "define": "AUDIO_OUTPUT_CLUSTER", "side": "client", "enabled": 0, "commands": [ { - "name": "Sleep", + "name": "SelectOutput", "code": 0, "mfgCode": null, "source": "client", - "incoming": 0, + "incoming": 1, + "outgoing": 1 + }, + { + "name": "RenameOutput", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, "outgoing": 1 } ], @@ -4358,14 +5226,144 @@ ] }, { - "name": "Low Power", - "code": 1288, + "name": "Audio Output", + "code": 1291, "mfgCode": null, - "define": "LOW_POWER_CLUSTER", + "define": "AUDIO_OUTPUT_CLUSTER", "side": "server", "enabled": 1, "commands": [], "attributes": [ + { + "name": "audio output list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Application Launcher", + "code": 1292, + "mfgCode": null, + "define": "APPLICATION_LAUNCHER_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "LaunchApp", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Application Launcher", + "code": 1292, + "mfgCode": null, + "define": "APPLICATION_LAUNCHER_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "LaunchAppResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "application launcher list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "catalog vendor id", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "application id", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 0, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x00", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, { "name": "cluster revision", "code": 65533, @@ -4540,6 +5538,84 @@ } ] }, + { + "name": "Account Login", + "code": 1294, + "mfgCode": null, + "define": "ACCOUNT_LOGIN_CLUSTER", + "side": "client", + "enabled": 0, + "commands": [ + { + "name": "GetSetupPIN", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + }, + { + "name": "Login", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Account Login", + "code": 1294, + "mfgCode": null, + "define": "ACCOUNT_LOGIN_CLUSTER", + "side": "server", + "enabled": 1, + "commands": [ + { + "name": "GetSetupPINResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, { "name": "Binding", "code": 61440, diff --git a/src/controller/python/BUILD.gn b/src/controller/python/BUILD.gn index 1b7d2eaa4fe4f0..af6df8801206b4 100644 --- a/src/controller/python/BUILD.gn +++ b/src/controller/python/BUILD.gn @@ -32,7 +32,7 @@ config("controller_wno_deprecate") { } chip_data_model("python_data_model") { - cluster_sources = [ "media-playback-client" ] + cluster_sources = [] zap_pregenerated_dir = "gen" diff --git a/src/controller/python/chip/clusters/CHIPClusters.cpp b/src/controller/python/chip/clusters/CHIPClusters.cpp index c57186b66d696e..5ad212116dabd0 100644 --- a/src/controller/python/chip/clusters/CHIPClusters.cpp +++ b/src/controller/python/chip/clusters/CHIPClusters.cpp @@ -88,6 +88,40 @@ void chip_ime_SetFailureResponseDelegate(FailureResponseDelegate delegate) gFailureResponseDelegate = delegate; } +// Cluster AccountLogin + +CHIP_ERROR chip_ime_AppendCommand_AccountLogin_GetSetupPIN(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, const uint8_t * tempAccountIdentifier, + uint32_t tempAccountIdentifier_Len) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::AccountLoginCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.GetSetupPIN(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), + chip::ByteSpan(tempAccountIdentifier, tempAccountIdentifier_Len)); +} +CHIP_ERROR chip_ime_AppendCommand_AccountLogin_Login(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, const uint8_t * tempAccountIdentifier, + uint32_t tempAccountIdentifier_Len, const uint8_t * setupPIN, + uint32_t setupPIN_Len) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::AccountLoginCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.Login(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), + chip::ByteSpan(tempAccountIdentifier, tempAccountIdentifier_Len), chip::ByteSpan(setupPIN, setupPIN_Len)); +} + +CHIP_ERROR chip_ime_ReadAttribute_AccountLogin_ClusterRevision(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::AccountLoginCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeClusterRevision(gInt16uAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +// End of Cluster AccountLogin // Cluster ApplicationBasic CHIP_ERROR chip_ime_ReadAttribute_ApplicationBasic_VendorName(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, @@ -163,6 +197,80 @@ CHIP_ERROR chip_ime_ReadAttribute_ApplicationBasic_ClusterRevision(chip::Control } // End of Cluster ApplicationBasic +// Cluster ApplicationLauncher + +CHIP_ERROR chip_ime_AppendCommand_ApplicationLauncher_LaunchApp(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, const uint8_t * data, uint32_t data_Len, + uint16_t catalogVendorId, const uint8_t * applicationId, + uint32_t applicationId_Len) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::ApplicationLauncherCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.LaunchApp(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), chip::ByteSpan(data, data_Len), + catalogVendorId, chip::ByteSpan(applicationId, applicationId_Len)); +} + +CHIP_ERROR chip_ime_ReadAttribute_ApplicationLauncher_ApplicationLauncherList(chip::Controller::Device * device, + chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::ApplicationLauncherCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeApplicationLauncherList(gStringAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +CHIP_ERROR chip_ime_ReadAttribute_ApplicationLauncher_ClusterRevision(chip::Controller::Device * device, + chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::ApplicationLauncherCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeClusterRevision(gInt16uAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +// End of Cluster ApplicationLauncher +// Cluster AudioOutput + +CHIP_ERROR chip_ime_AppendCommand_AudioOutput_RenameOutput(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, uint8_t index, const uint8_t * name, uint32_t name_Len) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::AudioOutputCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.RenameOutput(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), index, + chip::ByteSpan(name, name_Len)); +} +CHIP_ERROR chip_ime_AppendCommand_AudioOutput_SelectOutput(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, uint8_t index) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::AudioOutputCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.SelectOutput(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), index); +} + +CHIP_ERROR chip_ime_ReadAttribute_AudioOutput_AudioOutputList(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::AudioOutputCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeAudioOutputList(gStringAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +CHIP_ERROR chip_ime_ReadAttribute_AudioOutput_ClusterRevision(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::AudioOutputCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeClusterRevision(gInt16uAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +// End of Cluster AudioOutput // Cluster BarrierControl CHIP_ERROR chip_ime_AppendCommand_BarrierControl_BarrierControlGoToPercent(chip::Controller::Device * device, @@ -1094,6 +1202,58 @@ CHIP_ERROR chip_ime_ReadAttribute_ColorControl_ClusterRevision(chip::Controller: } // End of Cluster ColorControl +// Cluster ContentLaunch + +CHIP_ERROR chip_ime_AppendCommand_ContentLaunch_LaunchContent(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, uint8_t autoPlay, const uint8_t * data, + uint32_t data_Len) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::ContentLaunchCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.LaunchContent(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), autoPlay, + chip::ByteSpan(data, data_Len)); +} +CHIP_ERROR chip_ime_AppendCommand_ContentLaunch_LaunchURL(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, const uint8_t * contentURL, uint32_t contentURL_Len, + const uint8_t * displayString, uint32_t displayString_Len) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::ContentLaunchCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.LaunchURL(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), + chip::ByteSpan(contentURL, contentURL_Len), chip::ByteSpan(displayString, displayString_Len)); +} + +CHIP_ERROR chip_ime_ReadAttribute_ContentLaunch_AcceptsHeaderList(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::ContentLaunchCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeAcceptsHeaderList(gStringAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +CHIP_ERROR chip_ime_ReadAttribute_ContentLaunch_SupportedStreamingTypes(chip::Controller::Device * device, + chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::ContentLaunchCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeSupportedStreamingTypes(gStringAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +CHIP_ERROR chip_ime_ReadAttribute_ContentLaunch_ClusterRevision(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::ContentLaunchCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeClusterRevision(gInt16uAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +// End of Cluster ContentLaunch // Cluster Descriptor CHIP_ERROR chip_ime_ReadAttribute_Descriptor_ClusterRevision(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, @@ -1538,6 +1698,27 @@ CHIP_ERROR chip_ime_ReadAttribute_Identify_ClusterRevision(chip::Controller::Dev } // End of Cluster Identify +// Cluster KeypadInput + +CHIP_ERROR chip_ime_AppendCommand_KeypadInput_SendKey(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, uint8_t keyCode) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::KeypadInputCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.SendKey(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), keyCode); +} + +CHIP_ERROR chip_ime_ReadAttribute_KeypadInput_ClusterRevision(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::KeypadInputCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeClusterRevision(gInt16uAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +// End of Cluster KeypadInput // Cluster LevelControl CHIP_ERROR chip_ime_AppendCommand_LevelControl_Move(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, @@ -1662,6 +1843,162 @@ CHIP_ERROR chip_ime_ReadAttribute_LowPower_ClusterRevision(chip::Controller::Dev } // End of Cluster LowPower +// Cluster MediaInput + +CHIP_ERROR chip_ime_AppendCommand_MediaInput_HideInputStatus(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaInputCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.HideInputStatus(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} +CHIP_ERROR chip_ime_AppendCommand_MediaInput_RenameInput(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, uint8_t index, const uint8_t * name, uint32_t name_Len) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaInputCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.RenameInput(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), index, + chip::ByteSpan(name, name_Len)); +} +CHIP_ERROR chip_ime_AppendCommand_MediaInput_SelectInput(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, uint8_t index) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaInputCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.SelectInput(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), index); +} +CHIP_ERROR chip_ime_AppendCommand_MediaInput_ShowInputStatus(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaInputCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ShowInputStatus(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +CHIP_ERROR chip_ime_ReadAttribute_MediaInput_MediaInputList(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaInputCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeMediaInputList(gStringAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +CHIP_ERROR chip_ime_ReadAttribute_MediaInput_ClusterRevision(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaInputCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeClusterRevision(gInt16uAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +// End of Cluster MediaInput +// Cluster MediaPlayback + +CHIP_ERROR chip_ime_AppendCommand_MediaPlayback_MediaFastForward(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaPlaybackCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.MediaFastForward(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} +CHIP_ERROR chip_ime_AppendCommand_MediaPlayback_MediaNext(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaPlaybackCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.MediaNext(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} +CHIP_ERROR chip_ime_AppendCommand_MediaPlayback_MediaPause(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaPlaybackCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.MediaPause(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} +CHIP_ERROR chip_ime_AppendCommand_MediaPlayback_MediaPlay(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaPlaybackCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.MediaPlay(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} +CHIP_ERROR chip_ime_AppendCommand_MediaPlayback_MediaPrevious(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaPlaybackCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.MediaPrevious(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} +CHIP_ERROR chip_ime_AppendCommand_MediaPlayback_MediaRewind(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaPlaybackCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.MediaRewind(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} +CHIP_ERROR chip_ime_AppendCommand_MediaPlayback_MediaSkipBackward(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, uint64_t deltaPositionMilliseconds) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaPlaybackCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.MediaSkipBackward(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), deltaPositionMilliseconds); +} +CHIP_ERROR chip_ime_AppendCommand_MediaPlayback_MediaSkipForward(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, uint64_t deltaPositionMilliseconds) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaPlaybackCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.MediaSkipForward(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), deltaPositionMilliseconds); +} +CHIP_ERROR chip_ime_AppendCommand_MediaPlayback_MediaSkipSeek(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, uint64_t position) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaPlaybackCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.MediaSkipSeek(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), position); +} +CHIP_ERROR chip_ime_AppendCommand_MediaPlayback_MediaStartOver(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaPlaybackCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.MediaStartOver(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} +CHIP_ERROR chip_ime_AppendCommand_MediaPlayback_MediaStop(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaPlaybackCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.MediaStop(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +CHIP_ERROR chip_ime_ReadAttribute_MediaPlayback_ClusterRevision(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::MediaPlaybackCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeClusterRevision(gInt16uAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +// End of Cluster MediaPlayback // Cluster NetworkCommissioning CHIP_ERROR chip_ime_AppendCommand_NetworkCommissioning_AddThreadNetwork(chip::Controller::Device * device, @@ -2123,6 +2460,105 @@ CHIP_ERROR chip_ime_ReadAttribute_Switch_ClusterRevision(chip::Controller::Devic } // End of Cluster Switch +// Cluster TvChannel + +CHIP_ERROR chip_ime_AppendCommand_TvChannel_ChangeChannel(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, const uint8_t * match, uint32_t match_Len) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::TvChannelCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ChangeChannel(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), + chip::ByteSpan(match, match_Len)); +} +CHIP_ERROR chip_ime_AppendCommand_TvChannel_ChangeChannelByNumber(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, uint16_t majorNumber, uint16_t minorNumber) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::TvChannelCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ChangeChannelByNumber(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), majorNumber, + minorNumber); +} +CHIP_ERROR chip_ime_AppendCommand_TvChannel_SkipChannel(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, uint16_t count) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::TvChannelCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.SkipChannel(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), count); +} + +CHIP_ERROR chip_ime_ReadAttribute_TvChannel_TvChannelList(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::TvChannelCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeTvChannelList(gStringAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +CHIP_ERROR chip_ime_ReadAttribute_TvChannel_TvChannelLineup(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::TvChannelCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeTvChannelLineup(gStringAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +CHIP_ERROR chip_ime_ReadAttribute_TvChannel_CurrentTvChannel(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::TvChannelCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeCurrentTvChannel(gStringAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +CHIP_ERROR chip_ime_ReadAttribute_TvChannel_ClusterRevision(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::TvChannelCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeClusterRevision(gInt16uAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +// End of Cluster TvChannel +// Cluster TargetNavigator + +CHIP_ERROR chip_ime_AppendCommand_TargetNavigator_NavigateTarget(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId, uint8_t target, const uint8_t * data, + uint32_t data_Len) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::TargetNavigatorCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.NavigateTarget(gDefaultSuccessCallback.Cancel(), gDefaultFailureCallback.Cancel(), target, + chip::ByteSpan(data, data_Len)); +} + +CHIP_ERROR chip_ime_ReadAttribute_TargetNavigator_TargetNavigatorList(chip::Controller::Device * device, + chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::TargetNavigatorCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeTargetNavigatorList(gStringAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +CHIP_ERROR chip_ime_ReadAttribute_TargetNavigator_ClusterRevision(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::TargetNavigatorCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeClusterRevision(gInt16uAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +// End of Cluster TargetNavigator // Cluster TemperatureMeasurement CHIP_ERROR chip_ime_ReadAttribute_TemperatureMeasurement_MeasuredValue(chip::Controller::Device * device, @@ -2289,6 +2725,27 @@ CHIP_ERROR chip_ime_ReadAttribute_Thermostat_ClusterRevision(chip::Controller::D } // End of Cluster Thermostat +// Cluster WakeOnLan + +CHIP_ERROR chip_ime_ReadAttribute_WakeOnLan_WakeOnLanMacAddress(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::WakeOnLanCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeWakeOnLanMacAddress(gStringAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +CHIP_ERROR chip_ime_ReadAttribute_WakeOnLan_ClusterRevision(chip::Controller::Device * device, chip::EndpointId ZCLendpointId, + chip::GroupId /* ZCLgroupId */) +{ + VerifyOrReturnError(device != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + chip::Controller::WakeOnLanCluster cluster; + cluster.Associate(device, ZCLendpointId); + return cluster.ReadAttributeClusterRevision(gInt16uAttributeCallback.Cancel(), gDefaultFailureCallback.Cancel()); +} + +// End of Cluster WakeOnLan // Cluster WindowCovering CHIP_ERROR chip_ime_AppendCommand_WindowCovering_WindowCoveringDownClose(chip::Controller::Device * device, diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py index 6e20fe9df71d10..9b8c31e43bd3a0 100644 --- a/src/controller/python/chip/clusters/CHIPClusters.py +++ b/src/controller/python/chip/clusters/CHIPClusters.py @@ -38,8 +38,33 @@ def __init__(self, chipstack): def ListClusterCommands(self): return { + "AccountLogin": { + "GetSetupPIN": { + "tempAccountIdentifier": "bytes", + }, + "Login": { + "tempAccountIdentifier": "bytes", + "setupPIN": "bytes", + }, + }, "ApplicationBasic": { }, + "ApplicationLauncher": { + "LaunchApp": { + "data": "bytes", + "catalogVendorId": "int", + "applicationId": "bytes", + }, + }, + "AudioOutput": { + "RenameOutput": { + "index": "int", + "name": "bytes", + }, + "SelectOutput": { + "index": "int", + }, + }, "BarrierControl": { "BarrierControlGoToPercent": { "percentOpen": "int", @@ -160,6 +185,16 @@ def ListClusterCommands(self): "optionsOverride": "int", }, }, + "ContentLaunch": { + "LaunchContent": { + "autoPlay": "int", + "data": "bytes", + }, + "LaunchURL": { + "contentURL": "bytes", + "displayString": "bytes", + }, + }, "Descriptor": { }, "DoorLock": { @@ -301,6 +336,11 @@ def ListClusterCommands(self): "IdentifyQuery": { }, }, + "KeypadInput": { + "SendKey": { + "keyCode": "int", + }, + }, "LevelControl": { "Move": { "moveMode": "int", @@ -345,6 +385,46 @@ def ListClusterCommands(self): "Sleep": { }, }, + "MediaInput": { + "HideInputStatus": { + }, + "RenameInput": { + "index": "int", + "name": "bytes", + }, + "SelectInput": { + "index": "int", + }, + "ShowInputStatus": { + }, + }, + "MediaPlayback": { + "MediaFastForward": { + }, + "MediaNext": { + }, + "MediaPause": { + }, + "MediaPlay": { + }, + "MediaPrevious": { + }, + "MediaRewind": { + }, + "MediaSkipBackward": { + "deltaPositionMilliseconds": "int", + }, + "MediaSkipForward": { + "deltaPositionMilliseconds": "int", + }, + "MediaSkipSeek": { + "position": "int", + }, + "MediaStartOver": { + }, + "MediaStop": { + }, + }, "NetworkCommissioning": { "AddThreadNetwork": { "operationalDataset": "bytes", @@ -450,6 +530,24 @@ def ListClusterCommands(self): }, "Switch": { }, + "TvChannel": { + "ChangeChannel": { + "match": "bytes", + }, + "ChangeChannelByNumber": { + "majorNumber": "int", + "minorNumber": "int", + }, + "SkipChannel": { + "count": "int", + }, + }, + "TargetNavigator": { + "NavigateTarget": { + "target": "int", + "data": "bytes", + }, + }, "TemperatureMeasurement": { }, "Thermostat": { @@ -472,6 +570,8 @@ def ListClusterCommands(self): "amount": "int", }, }, + "WakeOnLan": { + }, "WindowCovering": { "WindowCoveringDownClose": { }, @@ -496,6 +596,9 @@ def ListClusterCommands(self): def ListClusterAttributes(self): return { + "AccountLogin": [ + "ClusterRevision", + ], "ApplicationBasic": [ "VendorName", "VendorId", @@ -506,6 +609,14 @@ def ListClusterAttributes(self): "ApplicationSatus", "ClusterRevision", ], + "ApplicationLauncher": [ + "ApplicationLauncherList", + "ClusterRevision", + ], + "AudioOutput": [ + "AudioOutputList", + "ClusterRevision", + ], "BarrierControl": [ "BarrierMovingState", "BarrierSafetyStatus", @@ -589,6 +700,11 @@ def ListClusterAttributes(self): "StartUpColorTemperatureMireds", "ClusterRevision", ], + "ContentLaunch": [ + "AcceptsHeaderList", + "SupportedStreamingTypes", + "ClusterRevision", + ], "Descriptor": [ "ClusterRevision", ], @@ -614,6 +730,9 @@ def ListClusterAttributes(self): "IdentifyTime", "ClusterRevision", ], + "KeypadInput": [ + "ClusterRevision", + ], "LevelControl": [ "CurrentLevel", "ClusterRevision", @@ -621,6 +740,13 @@ def ListClusterAttributes(self): "LowPower": [ "ClusterRevision", ], + "MediaInput": [ + "MediaInputList", + "ClusterRevision", + ], + "MediaPlayback": [ + "ClusterRevision", + ], "NetworkCommissioning": [ "ClusterRevision", ], @@ -654,6 +780,16 @@ def ListClusterAttributes(self): "CurrentPosition", "ClusterRevision", ], + "TvChannel": [ + "TvChannelList", + "TvChannelLineup", + "CurrentTvChannel", + "ClusterRevision", + ], + "TargetNavigator": [ + "TargetNavigatorList", + "ClusterRevision", + ], "TemperatureMeasurement": [ "MeasuredValue", "MinMeasuredValue", @@ -668,6 +804,10 @@ def ListClusterAttributes(self): "SystemMode", "ClusterRevision", ], + "WakeOnLan": [ + "WakeOnLanMacAddress", + "ClusterRevision", + ], "WindowCovering": [ "WindowCoveringType", "CurrentPositionLift", @@ -705,6 +845,32 @@ def ConfigureAttribute(self, device: ctypes.c_void_p, cluster: str, attribute: s # Cluster commands + def ClusterAccountLogin_CommandGetSetupPIN(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, tempAccountIdentifier: bytes): + tempAccountIdentifier = tempAccountIdentifier.encode("utf-8") + b'\x00' + return self._chipLib.chip_ime_AppendCommand_AccountLogin_GetSetupPIN( + device, ZCLendpoint, ZCLgroupid, tempAccountIdentifier, len(tempAccountIdentifier) + ) + def ClusterAccountLogin_CommandLogin(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, tempAccountIdentifier: bytes, setupPIN: bytes): + tempAccountIdentifier = tempAccountIdentifier.encode("utf-8") + b'\x00' + setupPIN = setupPIN.encode("utf-8") + b'\x00' + return self._chipLib.chip_ime_AppendCommand_AccountLogin_Login( + device, ZCLendpoint, ZCLgroupid, tempAccountIdentifier, len(tempAccountIdentifier), setupPIN, len(setupPIN) + ) + def ClusterApplicationLauncher_CommandLaunchApp(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, data: bytes, catalogVendorId: int, applicationId: bytes): + data = data.encode("utf-8") + b'\x00' + applicationId = applicationId.encode("utf-8") + b'\x00' + return self._chipLib.chip_ime_AppendCommand_ApplicationLauncher_LaunchApp( + device, ZCLendpoint, ZCLgroupid, data, len(data), catalogVendorId, applicationId, len(applicationId) + ) + def ClusterAudioOutput_CommandRenameOutput(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, index: int, name: bytes): + name = name.encode("utf-8") + b'\x00' + return self._chipLib.chip_ime_AppendCommand_AudioOutput_RenameOutput( + device, ZCLendpoint, ZCLgroupid, index, name, len(name) + ) + def ClusterAudioOutput_CommandSelectOutput(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, index: int): + return self._chipLib.chip_ime_AppendCommand_AudioOutput_SelectOutput( + device, ZCLendpoint, ZCLgroupid, index + ) def ClusterBarrierControl_CommandBarrierControlGoToPercent(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, percentOpen: int): return self._chipLib.chip_ime_AppendCommand_BarrierControl_BarrierControlGoToPercent( device, ZCLendpoint, ZCLgroupid, percentOpen @@ -781,6 +947,17 @@ def ClusterColorControl_CommandStopMoveStep(self, device: ctypes.c_void_p, ZCLen return self._chipLib.chip_ime_AppendCommand_ColorControl_StopMoveStep( device, ZCLendpoint, ZCLgroupid, optionsMask, optionsOverride ) + def ClusterContentLaunch_CommandLaunchContent(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, autoPlay: int, data: bytes): + data = data.encode("utf-8") + b'\x00' + return self._chipLib.chip_ime_AppendCommand_ContentLaunch_LaunchContent( + device, ZCLendpoint, ZCLgroupid, autoPlay, data, len(data) + ) + def ClusterContentLaunch_CommandLaunchURL(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, contentURL: bytes, displayString: bytes): + contentURL = contentURL.encode("utf-8") + b'\x00' + displayString = displayString.encode("utf-8") + b'\x00' + return self._chipLib.chip_ime_AppendCommand_ContentLaunch_LaunchURL( + device, ZCLendpoint, ZCLgroupid, contentURL, len(contentURL), displayString, len(displayString) + ) def ClusterDoorLock_CommandClearAllPins(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): return self._chipLib.chip_ime_AppendCommand_DoorLock_ClearAllPins( device, ZCLendpoint, ZCLgroupid @@ -925,6 +1102,10 @@ def ClusterIdentify_CommandIdentifyQuery(self, device: ctypes.c_void_p, ZCLendpo return self._chipLib.chip_ime_AppendCommand_Identify_IdentifyQuery( device, ZCLendpoint, ZCLgroupid ) + def ClusterKeypadInput_CommandSendKey(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, keyCode: int): + return self._chipLib.chip_ime_AppendCommand_KeypadInput_SendKey( + device, ZCLendpoint, ZCLgroupid, keyCode + ) def ClusterLevelControl_CommandMove(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, moveMode: int, rate: int, optionMask: int, optionOverride: int): return self._chipLib.chip_ime_AppendCommand_LevelControl_Move( device, ZCLendpoint, ZCLgroupid, moveMode, rate, optionMask, optionOverride @@ -961,6 +1142,67 @@ def ClusterLowPower_CommandSleep(self, device: ctypes.c_void_p, ZCLendpoint: int return self._chipLib.chip_ime_AppendCommand_LowPower_Sleep( device, ZCLendpoint, ZCLgroupid ) + def ClusterMediaInput_CommandHideInputStatus(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_AppendCommand_MediaInput_HideInputStatus( + device, ZCLendpoint, ZCLgroupid + ) + def ClusterMediaInput_CommandRenameInput(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, index: int, name: bytes): + name = name.encode("utf-8") + b'\x00' + return self._chipLib.chip_ime_AppendCommand_MediaInput_RenameInput( + device, ZCLendpoint, ZCLgroupid, index, name, len(name) + ) + def ClusterMediaInput_CommandSelectInput(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, index: int): + return self._chipLib.chip_ime_AppendCommand_MediaInput_SelectInput( + device, ZCLendpoint, ZCLgroupid, index + ) + def ClusterMediaInput_CommandShowInputStatus(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_AppendCommand_MediaInput_ShowInputStatus( + device, ZCLendpoint, ZCLgroupid + ) + def ClusterMediaPlayback_CommandMediaFastForward(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaFastForward( + device, ZCLendpoint, ZCLgroupid + ) + def ClusterMediaPlayback_CommandMediaNext(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaNext( + device, ZCLendpoint, ZCLgroupid + ) + def ClusterMediaPlayback_CommandMediaPause(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaPause( + device, ZCLendpoint, ZCLgroupid + ) + def ClusterMediaPlayback_CommandMediaPlay(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaPlay( + device, ZCLendpoint, ZCLgroupid + ) + def ClusterMediaPlayback_CommandMediaPrevious(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaPrevious( + device, ZCLendpoint, ZCLgroupid + ) + def ClusterMediaPlayback_CommandMediaRewind(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaRewind( + device, ZCLendpoint, ZCLgroupid + ) + def ClusterMediaPlayback_CommandMediaSkipBackward(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, deltaPositionMilliseconds: int): + return self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaSkipBackward( + device, ZCLendpoint, ZCLgroupid, deltaPositionMilliseconds + ) + def ClusterMediaPlayback_CommandMediaSkipForward(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, deltaPositionMilliseconds: int): + return self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaSkipForward( + device, ZCLendpoint, ZCLgroupid, deltaPositionMilliseconds + ) + def ClusterMediaPlayback_CommandMediaSkipSeek(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, position: int): + return self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaSkipSeek( + device, ZCLendpoint, ZCLgroupid, position + ) + def ClusterMediaPlayback_CommandMediaStartOver(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaStartOver( + device, ZCLendpoint, ZCLgroupid + ) + def ClusterMediaPlayback_CommandMediaStop(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaStop( + device, ZCLendpoint, ZCLgroupid + ) def ClusterNetworkCommissioning_CommandAddThreadNetwork(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, operationalDataset: bytes, breadcrumb: int, timeoutMs: int): return self._chipLib.chip_ime_AppendCommand_NetworkCommissioning_AddThreadNetwork( device, ZCLendpoint, ZCLgroupid, operationalDataset, len(operationalDataset), breadcrumb, timeoutMs @@ -1051,6 +1293,24 @@ def ClusterScenes_CommandViewScene(self, device: ctypes.c_void_p, ZCLendpoint: i return self._chipLib.chip_ime_AppendCommand_Scenes_ViewScene( device, ZCLendpoint, ZCLgroupid, groupId, sceneId ) + def ClusterTvChannel_CommandChangeChannel(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, match: bytes): + match = match.encode("utf-8") + b'\x00' + return self._chipLib.chip_ime_AppendCommand_TvChannel_ChangeChannel( + device, ZCLendpoint, ZCLgroupid, match, len(match) + ) + def ClusterTvChannel_CommandChangeChannelByNumber(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, majorNumber: int, minorNumber: int): + return self._chipLib.chip_ime_AppendCommand_TvChannel_ChangeChannelByNumber( + device, ZCLendpoint, ZCLgroupid, majorNumber, minorNumber + ) + def ClusterTvChannel_CommandSkipChannel(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, count: int): + return self._chipLib.chip_ime_AppendCommand_TvChannel_SkipChannel( + device, ZCLendpoint, ZCLgroupid, count + ) + def ClusterTargetNavigator_CommandNavigateTarget(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int, target: int, data: bytes): + data = data.encode("utf-8") + b'\x00' + return self._chipLib.chip_ime_AppendCommand_TargetNavigator_NavigateTarget( + device, ZCLendpoint, ZCLgroupid, target, data, len(data) + ) def ClusterThermostat_CommandClearWeeklySchedule(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): return self._chipLib.chip_ime_AppendCommand_Thermostat_ClearWeeklySchedule( device, ZCLendpoint, ZCLgroupid @@ -1102,6 +1362,8 @@ def ClusterWindowCovering_CommandWindowCoveringUpOpen(self, device: ctypes.c_voi # Cluster attributes + def ClusterAccountLogin_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_AccountLogin_ClusterRevision(device, ZCLendpoint, ZCLgroupid) def ClusterApplicationBasic_ReadAttributeVendorName(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): return self._chipLib.chip_ime_ReadAttribute_ApplicationBasic_VendorName(device, ZCLendpoint, ZCLgroupid) def ClusterApplicationBasic_ReadAttributeVendorId(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): @@ -1118,6 +1380,14 @@ def ClusterApplicationBasic_ReadAttributeApplicationSatus(self, device: ctypes.c return self._chipLib.chip_ime_ReadAttribute_ApplicationBasic_ApplicationSatus(device, ZCLendpoint, ZCLgroupid) def ClusterApplicationBasic_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): return self._chipLib.chip_ime_ReadAttribute_ApplicationBasic_ClusterRevision(device, ZCLendpoint, ZCLgroupid) + def ClusterApplicationLauncher_ReadAttributeApplicationLauncherList(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_ApplicationLauncher_ApplicationLauncherList(device, ZCLendpoint, ZCLgroupid) + def ClusterApplicationLauncher_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_ApplicationLauncher_ClusterRevision(device, ZCLendpoint, ZCLgroupid) + def ClusterAudioOutput_ReadAttributeAudioOutputList(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_AudioOutput_AudioOutputList(device, ZCLendpoint, ZCLgroupid) + def ClusterAudioOutput_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_AudioOutput_ClusterRevision(device, ZCLendpoint, ZCLgroupid) def ClusterBarrierControl_ReadAttributeBarrierMovingState(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): return self._chipLib.chip_ime_ReadAttribute_BarrierControl_BarrierMovingState(device, ZCLendpoint, ZCLgroupid) def ClusterBarrierControl_ReadAttributeBarrierSafetyStatus(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): @@ -1278,6 +1548,12 @@ def ClusterColorControl_ReadAttributeStartUpColorTemperatureMireds(self, device: return self._chipLib.chip_ime_ReadAttribute_ColorControl_StartUpColorTemperatureMireds(device, ZCLendpoint, ZCLgroupid) def ClusterColorControl_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): return self._chipLib.chip_ime_ReadAttribute_ColorControl_ClusterRevision(device, ZCLendpoint, ZCLgroupid) + def ClusterContentLaunch_ReadAttributeAcceptsHeaderList(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_ContentLaunch_AcceptsHeaderList(device, ZCLendpoint, ZCLgroupid) + def ClusterContentLaunch_ReadAttributeSupportedStreamingTypes(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_ContentLaunch_SupportedStreamingTypes(device, ZCLendpoint, ZCLgroupid) + def ClusterContentLaunch_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_ContentLaunch_ClusterRevision(device, ZCLendpoint, ZCLgroupid) def ClusterDescriptor_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): return self._chipLib.chip_ime_ReadAttribute_Descriptor_ClusterRevision(device, ZCLendpoint, ZCLgroupid) def ClusterDoorLock_ReadAttributeLockState(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): @@ -1306,6 +1582,8 @@ def ClusterIdentify_ReadAttributeIdentifyTime(self, device: ctypes.c_void_p, ZCL return self._chipLib.chip_ime_ReadAttribute_Identify_IdentifyTime(device, ZCLendpoint, ZCLgroupid) def ClusterIdentify_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): return self._chipLib.chip_ime_ReadAttribute_Identify_ClusterRevision(device, ZCLendpoint, ZCLgroupid) + def ClusterKeypadInput_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_KeypadInput_ClusterRevision(device, ZCLendpoint, ZCLgroupid) def ClusterLevelControl_ReadAttributeCurrentLevel(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): return self._chipLib.chip_ime_ReadAttribute_LevelControl_CurrentLevel(device, ZCLendpoint, ZCLgroupid) def ClusterLevelControl_ConfigureAttributeCurrentLevel(self, device: ctypes.c_void_p, ZCLendpoint: int, minInterval: int, maxInterval: int, change: int): @@ -1314,6 +1592,12 @@ def ClusterLevelControl_ReadAttributeClusterRevision(self, device: ctypes.c_void return self._chipLib.chip_ime_ReadAttribute_LevelControl_ClusterRevision(device, ZCLendpoint, ZCLgroupid) def ClusterLowPower_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): return self._chipLib.chip_ime_ReadAttribute_LowPower_ClusterRevision(device, ZCLendpoint, ZCLgroupid) + def ClusterMediaInput_ReadAttributeMediaInputList(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_MediaInput_MediaInputList(device, ZCLendpoint, ZCLgroupid) + def ClusterMediaInput_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_MediaInput_ClusterRevision(device, ZCLendpoint, ZCLgroupid) + def ClusterMediaPlayback_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_MediaPlayback_ClusterRevision(device, ZCLendpoint, ZCLgroupid) def ClusterNetworkCommissioning_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): return self._chipLib.chip_ime_ReadAttribute_NetworkCommissioning_ClusterRevision(device, ZCLendpoint, ZCLgroupid) def ClusterOnOff_ReadAttributeOnOff(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): @@ -1362,6 +1646,18 @@ def ClusterSwitch_ConfigureAttributeCurrentPosition(self, device: ctypes.c_void_ return self._chipLib.chip_ime_ConfigureAttribute_Switch_CurrentPosition(device, ZCLendpoint, minInterval, maxInterval, change) def ClusterSwitch_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): return self._chipLib.chip_ime_ReadAttribute_Switch_ClusterRevision(device, ZCLendpoint, ZCLgroupid) + def ClusterTvChannel_ReadAttributeTvChannelList(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_TvChannel_TvChannelList(device, ZCLendpoint, ZCLgroupid) + def ClusterTvChannel_ReadAttributeTvChannelLineup(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_TvChannel_TvChannelLineup(device, ZCLendpoint, ZCLgroupid) + def ClusterTvChannel_ReadAttributeCurrentTvChannel(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_TvChannel_CurrentTvChannel(device, ZCLendpoint, ZCLgroupid) + def ClusterTvChannel_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_TvChannel_ClusterRevision(device, ZCLendpoint, ZCLgroupid) + def ClusterTargetNavigator_ReadAttributeTargetNavigatorList(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_TargetNavigator_TargetNavigatorList(device, ZCLendpoint, ZCLgroupid) + def ClusterTargetNavigator_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_TargetNavigator_ClusterRevision(device, ZCLendpoint, ZCLgroupid) def ClusterTemperatureMeasurement_ReadAttributeMeasuredValue(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): return self._chipLib.chip_ime_ReadAttribute_TemperatureMeasurement_MeasuredValue(device, ZCLendpoint, ZCLgroupid) def ClusterTemperatureMeasurement_ConfigureAttributeMeasuredValue(self, device: ctypes.c_void_p, ZCLendpoint: int, minInterval: int, maxInterval: int, change: int): @@ -1386,6 +1682,10 @@ def ClusterThermostat_ReadAttributeSystemMode(self, device: ctypes.c_void_p, ZCL return self._chipLib.chip_ime_ReadAttribute_Thermostat_SystemMode(device, ZCLendpoint, ZCLgroupid) def ClusterThermostat_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): return self._chipLib.chip_ime_ReadAttribute_Thermostat_ClusterRevision(device, ZCLendpoint, ZCLgroupid) + def ClusterWakeOnLan_ReadAttributeWakeOnLanMacAddress(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_WakeOnLan_WakeOnLanMacAddress(device, ZCLendpoint, ZCLgroupid) + def ClusterWakeOnLan_ReadAttributeClusterRevision(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): + return self._chipLib.chip_ime_ReadAttribute_WakeOnLan_ClusterRevision(device, ZCLendpoint, ZCLgroupid) def ClusterWindowCovering_ReadAttributeWindowCoveringType(self, device: ctypes.c_void_p, ZCLendpoint: int, ZCLgroupid: int): return self._chipLib.chip_ime_ReadAttribute_WindowCovering_WindowCoveringType(device, ZCLendpoint, ZCLgroupid) def ClusterWindowCovering_ConfigureAttributeWindowCoveringType(self, device: ctypes.c_void_p, ZCLendpoint: int, minInterval: int, maxInterval: int, change: int): @@ -1424,6 +1724,16 @@ def InitLib(self, chipLib): self._chipLib.chip_ime_SetSuccessResponseDelegate.restype = None self._chipLib.chip_ime_SetFailureResponseDelegate.argtypes = [ChipClusters.FAILURE_DELEGATE] self._chipLib.chip_ime_SetFailureResponseDelegate.res = None + # Cluster AccountLogin + # Cluster AccountLogin Command GetSetupPIN + self._chipLib.chip_ime_AppendCommand_AccountLogin_GetSetupPIN.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_char_p, ctypes.c_uint32] + self._chipLib.chip_ime_AppendCommand_AccountLogin_GetSetupPIN.restype = ctypes.c_uint32 + # Cluster AccountLogin Command Login + self._chipLib.chip_ime_AppendCommand_AccountLogin_Login.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_char_p, ctypes.c_uint32, ctypes.c_char_p, ctypes.c_uint32] + self._chipLib.chip_ime_AppendCommand_AccountLogin_Login.restype = ctypes.c_uint32 + # Cluster AccountLogin ReadAttribute ClusterRevision + self._chipLib.chip_ime_ReadAttribute_AccountLogin_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_AccountLogin_ClusterRevision.restype = ctypes.c_uint32 # Cluster ApplicationBasic # Cluster ApplicationBasic ReadAttribute VendorName self._chipLib.chip_ime_ReadAttribute_ApplicationBasic_VendorName.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] @@ -1449,6 +1759,29 @@ def InitLib(self, chipLib): # Cluster ApplicationBasic ReadAttribute ClusterRevision self._chipLib.chip_ime_ReadAttribute_ApplicationBasic_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] self._chipLib.chip_ime_ReadAttribute_ApplicationBasic_ClusterRevision.restype = ctypes.c_uint32 + # Cluster ApplicationLauncher + # Cluster ApplicationLauncher Command LaunchApp + self._chipLib.chip_ime_AppendCommand_ApplicationLauncher_LaunchApp.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_char_p, ctypes.c_uint32, ctypes.c_uint16, ctypes.c_char_p, ctypes.c_uint32] + self._chipLib.chip_ime_AppendCommand_ApplicationLauncher_LaunchApp.restype = ctypes.c_uint32 + # Cluster ApplicationLauncher ReadAttribute ApplicationLauncherList + self._chipLib.chip_ime_ReadAttribute_ApplicationLauncher_ApplicationLauncherList.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_ApplicationLauncher_ApplicationLauncherList.restype = ctypes.c_uint32 + # Cluster ApplicationLauncher ReadAttribute ClusterRevision + self._chipLib.chip_ime_ReadAttribute_ApplicationLauncher_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_ApplicationLauncher_ClusterRevision.restype = ctypes.c_uint32 + # Cluster AudioOutput + # Cluster AudioOutput Command RenameOutput + self._chipLib.chip_ime_AppendCommand_AudioOutput_RenameOutput.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint8, ctypes.c_char_p, ctypes.c_uint32] + self._chipLib.chip_ime_AppendCommand_AudioOutput_RenameOutput.restype = ctypes.c_uint32 + # Cluster AudioOutput Command SelectOutput + self._chipLib.chip_ime_AppendCommand_AudioOutput_SelectOutput.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint8] + self._chipLib.chip_ime_AppendCommand_AudioOutput_SelectOutput.restype = ctypes.c_uint32 + # Cluster AudioOutput ReadAttribute AudioOutputList + self._chipLib.chip_ime_ReadAttribute_AudioOutput_AudioOutputList.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_AudioOutput_AudioOutputList.restype = ctypes.c_uint32 + # Cluster AudioOutput ReadAttribute ClusterRevision + self._chipLib.chip_ime_ReadAttribute_AudioOutput_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_AudioOutput_ClusterRevision.restype = ctypes.c_uint32 # Cluster BarrierControl # Cluster BarrierControl Command BarrierControlGoToPercent self._chipLib.chip_ime_AppendCommand_BarrierControl_BarrierControlGoToPercent.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint8] @@ -1750,6 +2083,22 @@ def InitLib(self, chipLib): # Cluster ColorControl ReadAttribute ClusterRevision self._chipLib.chip_ime_ReadAttribute_ColorControl_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] self._chipLib.chip_ime_ReadAttribute_ColorControl_ClusterRevision.restype = ctypes.c_uint32 + # Cluster ContentLaunch + # Cluster ContentLaunch Command LaunchContent + self._chipLib.chip_ime_AppendCommand_ContentLaunch_LaunchContent.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint8, ctypes.c_char_p, ctypes.c_uint32] + self._chipLib.chip_ime_AppendCommand_ContentLaunch_LaunchContent.restype = ctypes.c_uint32 + # Cluster ContentLaunch Command LaunchURL + self._chipLib.chip_ime_AppendCommand_ContentLaunch_LaunchURL.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_char_p, ctypes.c_uint32, ctypes.c_char_p, ctypes.c_uint32] + self._chipLib.chip_ime_AppendCommand_ContentLaunch_LaunchURL.restype = ctypes.c_uint32 + # Cluster ContentLaunch ReadAttribute AcceptsHeaderList + self._chipLib.chip_ime_ReadAttribute_ContentLaunch_AcceptsHeaderList.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_ContentLaunch_AcceptsHeaderList.restype = ctypes.c_uint32 + # Cluster ContentLaunch ReadAttribute SupportedStreamingTypes + self._chipLib.chip_ime_ReadAttribute_ContentLaunch_SupportedStreamingTypes.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_ContentLaunch_SupportedStreamingTypes.restype = ctypes.c_uint32 + # Cluster ContentLaunch ReadAttribute ClusterRevision + self._chipLib.chip_ime_ReadAttribute_ContentLaunch_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_ContentLaunch_ClusterRevision.restype = ctypes.c_uint32 # Cluster Descriptor # Cluster Descriptor ReadAttribute ClusterRevision self._chipLib.chip_ime_ReadAttribute_Descriptor_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] @@ -1900,6 +2249,13 @@ def InitLib(self, chipLib): # Cluster Identify ReadAttribute ClusterRevision self._chipLib.chip_ime_ReadAttribute_Identify_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] self._chipLib.chip_ime_ReadAttribute_Identify_ClusterRevision.restype = ctypes.c_uint32 + # Cluster KeypadInput + # Cluster KeypadInput Command SendKey + self._chipLib.chip_ime_AppendCommand_KeypadInput_SendKey.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint8] + self._chipLib.chip_ime_AppendCommand_KeypadInput_SendKey.restype = ctypes.c_uint32 + # Cluster KeypadInput ReadAttribute ClusterRevision + self._chipLib.chip_ime_ReadAttribute_KeypadInput_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_KeypadInput_ClusterRevision.restype = ctypes.c_uint32 # Cluster LevelControl # Cluster LevelControl Command Move self._chipLib.chip_ime_AppendCommand_LevelControl_Move.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint8, ctypes.c_uint8, ctypes.c_uint8, ctypes.c_uint8] @@ -1941,6 +2297,62 @@ def InitLib(self, chipLib): # Cluster LowPower ReadAttribute ClusterRevision self._chipLib.chip_ime_ReadAttribute_LowPower_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] self._chipLib.chip_ime_ReadAttribute_LowPower_ClusterRevision.restype = ctypes.c_uint32 + # Cluster MediaInput + # Cluster MediaInput Command HideInputStatus + self._chipLib.chip_ime_AppendCommand_MediaInput_HideInputStatus.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_AppendCommand_MediaInput_HideInputStatus.restype = ctypes.c_uint32 + # Cluster MediaInput Command RenameInput + self._chipLib.chip_ime_AppendCommand_MediaInput_RenameInput.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint8, ctypes.c_char_p, ctypes.c_uint32] + self._chipLib.chip_ime_AppendCommand_MediaInput_RenameInput.restype = ctypes.c_uint32 + # Cluster MediaInput Command SelectInput + self._chipLib.chip_ime_AppendCommand_MediaInput_SelectInput.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint8] + self._chipLib.chip_ime_AppendCommand_MediaInput_SelectInput.restype = ctypes.c_uint32 + # Cluster MediaInput Command ShowInputStatus + self._chipLib.chip_ime_AppendCommand_MediaInput_ShowInputStatus.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_AppendCommand_MediaInput_ShowInputStatus.restype = ctypes.c_uint32 + # Cluster MediaInput ReadAttribute MediaInputList + self._chipLib.chip_ime_ReadAttribute_MediaInput_MediaInputList.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_MediaInput_MediaInputList.restype = ctypes.c_uint32 + # Cluster MediaInput ReadAttribute ClusterRevision + self._chipLib.chip_ime_ReadAttribute_MediaInput_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_MediaInput_ClusterRevision.restype = ctypes.c_uint32 + # Cluster MediaPlayback + # Cluster MediaPlayback Command MediaFastForward + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaFastForward.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaFastForward.restype = ctypes.c_uint32 + # Cluster MediaPlayback Command MediaNext + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaNext.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaNext.restype = ctypes.c_uint32 + # Cluster MediaPlayback Command MediaPause + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaPause.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaPause.restype = ctypes.c_uint32 + # Cluster MediaPlayback Command MediaPlay + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaPlay.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaPlay.restype = ctypes.c_uint32 + # Cluster MediaPlayback Command MediaPrevious + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaPrevious.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaPrevious.restype = ctypes.c_uint32 + # Cluster MediaPlayback Command MediaRewind + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaRewind.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaRewind.restype = ctypes.c_uint32 + # Cluster MediaPlayback Command MediaSkipBackward + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaSkipBackward.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint64] + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaSkipBackward.restype = ctypes.c_uint32 + # Cluster MediaPlayback Command MediaSkipForward + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaSkipForward.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint64] + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaSkipForward.restype = ctypes.c_uint32 + # Cluster MediaPlayback Command MediaSkipSeek + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaSkipSeek.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint64] + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaSkipSeek.restype = ctypes.c_uint32 + # Cluster MediaPlayback Command MediaStartOver + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaStartOver.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaStartOver.restype = ctypes.c_uint32 + # Cluster MediaPlayback Command MediaStop + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaStop.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_AppendCommand_MediaPlayback_MediaStop.restype = ctypes.c_uint32 + # Cluster MediaPlayback ReadAttribute ClusterRevision + self._chipLib.chip_ime_ReadAttribute_MediaPlayback_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_MediaPlayback_ClusterRevision.restype = ctypes.c_uint32 # Cluster NetworkCommissioning # Cluster NetworkCommissioning Command AddThreadNetwork self._chipLib.chip_ime_AppendCommand_NetworkCommissioning_AddThreadNetwork.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_char_p, ctypes.c_uint32, ctypes.c_uint64, ctypes.c_uint32] @@ -2085,6 +2497,38 @@ def InitLib(self, chipLib): # Cluster Switch ReadAttribute ClusterRevision self._chipLib.chip_ime_ReadAttribute_Switch_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] self._chipLib.chip_ime_ReadAttribute_Switch_ClusterRevision.restype = ctypes.c_uint32 + # Cluster TvChannel + # Cluster TvChannel Command ChangeChannel + self._chipLib.chip_ime_AppendCommand_TvChannel_ChangeChannel.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_char_p, ctypes.c_uint32] + self._chipLib.chip_ime_AppendCommand_TvChannel_ChangeChannel.restype = ctypes.c_uint32 + # Cluster TvChannel Command ChangeChannelByNumber + self._chipLib.chip_ime_AppendCommand_TvChannel_ChangeChannelByNumber.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint16, ctypes.c_uint16] + self._chipLib.chip_ime_AppendCommand_TvChannel_ChangeChannelByNumber.restype = ctypes.c_uint32 + # Cluster TvChannel Command SkipChannel + self._chipLib.chip_ime_AppendCommand_TvChannel_SkipChannel.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint16] + self._chipLib.chip_ime_AppendCommand_TvChannel_SkipChannel.restype = ctypes.c_uint32 + # Cluster TvChannel ReadAttribute TvChannelList + self._chipLib.chip_ime_ReadAttribute_TvChannel_TvChannelList.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_TvChannel_TvChannelList.restype = ctypes.c_uint32 + # Cluster TvChannel ReadAttribute TvChannelLineup + self._chipLib.chip_ime_ReadAttribute_TvChannel_TvChannelLineup.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_TvChannel_TvChannelLineup.restype = ctypes.c_uint32 + # Cluster TvChannel ReadAttribute CurrentTvChannel + self._chipLib.chip_ime_ReadAttribute_TvChannel_CurrentTvChannel.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_TvChannel_CurrentTvChannel.restype = ctypes.c_uint32 + # Cluster TvChannel ReadAttribute ClusterRevision + self._chipLib.chip_ime_ReadAttribute_TvChannel_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_TvChannel_ClusterRevision.restype = ctypes.c_uint32 + # Cluster TargetNavigator + # Cluster TargetNavigator Command NavigateTarget + self._chipLib.chip_ime_AppendCommand_TargetNavigator_NavigateTarget.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16, ctypes.c_uint8, ctypes.c_char_p, ctypes.c_uint32] + self._chipLib.chip_ime_AppendCommand_TargetNavigator_NavigateTarget.restype = ctypes.c_uint32 + # Cluster TargetNavigator ReadAttribute TargetNavigatorList + self._chipLib.chip_ime_ReadAttribute_TargetNavigator_TargetNavigatorList.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_TargetNavigator_TargetNavigatorList.restype = ctypes.c_uint32 + # Cluster TargetNavigator ReadAttribute ClusterRevision + self._chipLib.chip_ime_ReadAttribute_TargetNavigator_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_TargetNavigator_ClusterRevision.restype = ctypes.c_uint32 # Cluster TemperatureMeasurement # Cluster TemperatureMeasurement ReadAttribute MeasuredValue self._chipLib.chip_ime_ReadAttribute_TemperatureMeasurement_MeasuredValue.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] @@ -2138,6 +2582,13 @@ def InitLib(self, chipLib): # Cluster Thermostat ReadAttribute ClusterRevision self._chipLib.chip_ime_ReadAttribute_Thermostat_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] self._chipLib.chip_ime_ReadAttribute_Thermostat_ClusterRevision.restype = ctypes.c_uint32 + # Cluster WakeOnLan + # Cluster WakeOnLan ReadAttribute WakeOnLanMacAddress + self._chipLib.chip_ime_ReadAttribute_WakeOnLan_WakeOnLanMacAddress.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_WakeOnLan_WakeOnLanMacAddress.restype = ctypes.c_uint32 + # Cluster WakeOnLan ReadAttribute ClusterRevision + self._chipLib.chip_ime_ReadAttribute_WakeOnLan_ClusterRevision.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] + self._chipLib.chip_ime_ReadAttribute_WakeOnLan_ClusterRevision.restype = ctypes.c_uint32 # Cluster WindowCovering # Cluster WindowCovering Command WindowCoveringDownClose self._chipLib.chip_ime_AppendCommand_WindowCovering_WindowCoveringDownClose.argtypes = [ctypes.c_void_p, ctypes.c_uint8, ctypes.c_uint16] diff --git a/src/controller/python/gen/CHIPClientCallbacks.cpp b/src/controller/python/gen/CHIPClientCallbacks.cpp index 005ec626c44adf..029553fb5cbc71 100644 --- a/src/controller/python/gen/CHIPClientCallbacks.cpp +++ b/src/controller/python/gen/CHIPClientCallbacks.cpp @@ -869,6 +869,71 @@ bool emberAfDiscoverCommandsReceivedResponseCallback(ClusterId clusterId, uint16 return true; } +bool emberAfAccountLoginClusterGetSetupPINResponseCallback(chip::app::Command * commandObj, uint8_t * setupPIN) +{ + ChipLogProgress(Zcl, "GetSetupPINResponse:"); + ChipLogProgress(Zcl, " setupPIN: %s", setupPIN); + + GET_RESPONSE_CALLBACKS("AccountLoginClusterGetSetupPINResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, setupPIN); + return true; +} + +bool emberAfApplicationLauncherClusterLaunchAppResponseCallback(chip::app::Command * commandObj, uint8_t status, uint8_t * data) +{ + ChipLogProgress(Zcl, "LaunchAppResponse:"); + LogStatus(status); + ChipLogProgress(Zcl, " data: %s", data); + + GET_RESPONSE_CALLBACKS("ApplicationLauncherClusterLaunchAppResponseCallback"); + + if (status != EMBER_ZCL_STATUS_SUCCESS) + { + Callback::Callback * cb = + Callback::Callback::FromCancelable(onFailureCallback); + cb->mCall(cb->mContext, status); + return true; + } + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, data); + return true; +} + +bool emberAfContentLaunchClusterLaunchContentResponseCallback(chip::app::Command * commandObj, uint8_t * data, + uint8_t contentLaunchStatus) +{ + ChipLogProgress(Zcl, "LaunchContentResponse:"); + ChipLogProgress(Zcl, " data: %s", data); + ChipLogProgress(Zcl, " contentLaunchStatus: %" PRIu8 "", contentLaunchStatus); + + GET_RESPONSE_CALLBACKS("ContentLaunchClusterLaunchContentResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, data, contentLaunchStatus); + return true; +} + +bool emberAfContentLaunchClusterLaunchURLResponseCallback(chip::app::Command * commandObj, uint8_t * data, + uint8_t contentLaunchStatus) +{ + ChipLogProgress(Zcl, "LaunchURLResponse:"); + ChipLogProgress(Zcl, " data: %s", data); + ChipLogProgress(Zcl, " contentLaunchStatus: %" PRIu8 "", contentLaunchStatus); + + GET_RESPONSE_CALLBACKS("ContentLaunchClusterLaunchURLResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, data, contentLaunchStatus); + return true; +} + bool emberAfDoorLockClusterClearAllPinsResponseCallback(chip::app::Command * commandObj, uint8_t status) { ChipLogProgress(Zcl, "ClearAllPinsResponse:"); @@ -1499,6 +1564,170 @@ bool emberAfIdentifyClusterIdentifyQueryResponseCallback(chip::app::Command * co return true; } +bool emberAfKeypadInputClusterSendKeyResponseCallback(chip::app::Command * commandObj, uint8_t status) +{ + ChipLogProgress(Zcl, "SendKeyResponse:"); + LogStatus(status); + + GET_RESPONSE_CALLBACKS("KeypadInputClusterSendKeyResponseCallback"); + + if (status != EMBER_ZCL_STATUS_SUCCESS) + { + Callback::Callback * cb = + Callback::Callback::FromCancelable(onFailureCallback); + cb->mCall(cb->mContext, status); + return true; + } + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext); + return true; +} + +bool emberAfMediaPlaybackClusterMediaFastForwardResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaFastForwardResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaFastForwardResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaNextResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaNextResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaNextResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaPauseResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaPauseResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaPauseResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaPlayResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaPlayResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaPlayResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaPreviousResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaPreviousResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaPreviousResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaRewindResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaRewindResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaRewindResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaSkipBackwardResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaSkipBackwardResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaSkipBackwardResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaSkipForwardResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaSkipForwardResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaSkipForwardResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaSkipSeekResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaSkipSeekResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaSkipSeekResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaStartOverResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaStartOverResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaStartOverResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + +bool emberAfMediaPlaybackClusterMediaStopResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus) +{ + ChipLogProgress(Zcl, "MediaStopResponse:"); + ChipLogProgress(Zcl, " mediaPlaybackStatus: %" PRIu8 "", mediaPlaybackStatus); + + GET_RESPONSE_CALLBACKS("MediaPlaybackClusterMediaStopResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, mediaPlaybackStatus); + return true; +} + bool emberAfNetworkCommissioningClusterAddThreadNetworkResponseCallback(chip::app::Command * commandObj, uint8_t errorCode, uint8_t * debugText) { @@ -1785,6 +2014,44 @@ bool emberAfScenesClusterViewSceneResponseCallback(chip::app::Command * commandO return true; } +bool emberAfTvChannelClusterChangeChannelResponseCallback(chip::app::Command * commandObj, + /* TYPE WARNING: array array defaults to */ uint8_t * ChannelMatch, + uint8_t ErrorType) +{ + ChipLogProgress(Zcl, "ChangeChannelResponse:"); + ChipLogProgress(Zcl, " ChannelMatch: %p", ChannelMatch); + ChipLogProgress(Zcl, " ErrorType: %" PRIu8 "", ErrorType); + + GET_RESPONSE_CALLBACKS("TvChannelClusterChangeChannelResponseCallback"); + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, ChannelMatch, ErrorType); + return true; +} + +bool emberAfTargetNavigatorClusterNavigateTargetResponseCallback(chip::app::Command * commandObj, uint8_t status, uint8_t * data) +{ + ChipLogProgress(Zcl, "NavigateTargetResponse:"); + LogStatus(status); + ChipLogProgress(Zcl, " data: %s", data); + + GET_RESPONSE_CALLBACKS("TargetNavigatorClusterNavigateTargetResponseCallback"); + + if (status != EMBER_ZCL_STATUS_SUCCESS) + { + Callback::Callback * cb = + Callback::Callback::FromCancelable(onFailureCallback); + cb->mCall(cb->mContext, status); + return true; + } + + Callback::Callback * cb = + Callback::Callback::FromCancelable(onSuccessCallback); + cb->mCall(cb->mContext, data); + return true; +} + bool emberAfReportAttributesCallback(ClusterId clusterId, uint8_t * message, uint16_t messageLen) { ChipLogProgress(Zcl, "emberAfReportAttributeCallback:"); diff --git a/src/controller/python/gen/CHIPClientCallbacks.h b/src/controller/python/gen/CHIPClientCallbacks.h index 8bb5691a5e5d10..b06c6463af03ed 100644 --- a/src/controller/python/gen/CHIPClientCallbacks.h +++ b/src/controller/python/gen/CHIPClientCallbacks.h @@ -40,6 +40,10 @@ typedef void (*ReadReportingConfigurationReportedCallback)(void * context, uint1 typedef void (*ReadReportingConfigurationReceivedCallback)(void * context, uint16_t timeout); // Cluster Specific Response Callbacks +typedef void (*AccountLoginClusterGetSetupPINResponseCallback)(void * context, uint8_t * setupPIN); +typedef void (*ApplicationLauncherClusterLaunchAppResponseCallback)(void * context, uint8_t * data); +typedef void (*ContentLaunchClusterLaunchContentResponseCallback)(void * context, uint8_t * data, uint8_t contentLaunchStatus); +typedef void (*ContentLaunchClusterLaunchURLResponseCallback)(void * context, uint8_t * data, uint8_t contentLaunchStatus); typedef void (*DoorLockClusterClearAllPinsResponseCallback)(void * context); typedef void (*DoorLockClusterClearAllRfidsResponseCallback)(void * context); typedef void (*DoorLockClusterClearHolidayScheduleResponseCallback)(void * context); @@ -82,6 +86,18 @@ typedef void (*GroupsClusterGetGroupMembershipResponseCallback)(void * context, typedef void (*GroupsClusterRemoveGroupResponseCallback)(void * context, uint16_t groupId); typedef void (*GroupsClusterViewGroupResponseCallback)(void * context, uint16_t groupId, uint8_t * groupName); typedef void (*IdentifyClusterIdentifyQueryResponseCallback)(void * context, uint16_t timeout); +typedef void (*KeypadInputClusterSendKeyResponseCallback)(void * context); +typedef void (*MediaPlaybackClusterMediaFastForwardResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaNextResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaPauseResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaPlayResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaPreviousResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaRewindResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaSkipBackwardResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaSkipForwardResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaSkipSeekResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaStartOverResponseCallback)(void * context, uint8_t mediaPlaybackStatus); +typedef void (*MediaPlaybackClusterMediaStopResponseCallback)(void * context, uint8_t mediaPlaybackStatus); typedef void (*NetworkCommissioningClusterAddThreadNetworkResponseCallback)(void * context, uint8_t errorCode, uint8_t * debugText); typedef void (*NetworkCommissioningClusterAddWiFiNetworkResponseCallback)(void * context, uint8_t errorCode, uint8_t * debugText); typedef void (*NetworkCommissioningClusterDisableNetworkResponseCallback)(void * context, uint8_t errorCode, uint8_t * debugText); @@ -105,6 +121,10 @@ typedef void (*ScenesClusterStoreSceneResponseCallback)(void * context, uint16_t typedef void (*ScenesClusterViewSceneResponseCallback)(void * context, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime, uint8_t * sceneName, /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets); +typedef void (*TvChannelClusterChangeChannelResponseCallback)(void * context, + /* TYPE WARNING: array array defaults to */ uint8_t * ChannelMatch, + uint8_t ErrorType); +typedef void (*TargetNavigatorClusterNavigateTargetResponseCallback)(void * context, uint8_t * data); // List specific responses typedef void (*DescriptorDeviceListListAttributeCallback)(void * context, uint16_t count, _DeviceType * entries); diff --git a/src/controller/python/gen/CHIPClusters.cpp b/src/controller/python/gen/CHIPClusters.cpp index e6872686811932..1f7a7bc15002dc 100644 --- a/src/controller/python/gen/CHIPClusters.cpp +++ b/src/controller/python/gen/CHIPClusters.cpp @@ -30,6 +30,85 @@ namespace Controller { // TODO(#4503): length should be passed to commands when byte string is in argument list. // TODO(#4503): Commands should take group id as an argument. +// AccountLogin Cluster Commands +CHIP_ERROR AccountLoginCluster::GetSetupPIN(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan tempAccountIdentifier) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kGetSetupPINCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // tempAccountIdentifier: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), tempAccountIdentifier)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeAccountLoginClusterGetSetupPINCommand(seqNum, mEndpoint, tempAccountIdentifier); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR AccountLoginCluster::Login(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan tempAccountIdentifier, chip::ByteSpan setupPIN) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kLoginCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // tempAccountIdentifier: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), tempAccountIdentifier)); + // setupPIN: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), setupPIN)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeAccountLoginClusterLoginCommand(seqNum, mEndpoint, tempAccountIdentifier, setupPIN); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// AccountLogin Cluster Attributes +CHIP_ERROR AccountLoginCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeAccountLoginClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR AccountLoginCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeAccountLoginClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + // ApplicationBasic Cluster Commands // ApplicationBasic Cluster Attributes CHIP_ERROR ApplicationBasicCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, @@ -103,6 +182,151 @@ CHIP_ERROR ApplicationBasicCluster::ReadAttributeClusterRevision(Callback::Cance return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); } +// ApplicationLauncher Cluster Commands +CHIP_ERROR ApplicationLauncherCluster::LaunchApp(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan data, uint16_t catalogVendorId, chip::ByteSpan applicationId) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kLaunchAppCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // data: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), data)); + // catalogVendorId: int16u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), catalogVendorId)); + // applicationId: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), applicationId)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeApplicationLauncherClusterLaunchAppCommand(seqNum, mEndpoint, data, catalogVendorId, applicationId); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// ApplicationLauncher Cluster Attributes +CHIP_ERROR ApplicationLauncherCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeApplicationLauncherClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR ApplicationLauncherCluster::ReadAttributeApplicationLauncherList(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeApplicationLauncherClusterReadApplicationLauncherListAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR ApplicationLauncherCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeApplicationLauncherClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +// AudioOutput Cluster Commands +CHIP_ERROR AudioOutputCluster::RenameOutput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t index, chip::ByteSpan name) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kRenameOutputCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // index: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), index)); + // name: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), name)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeAudioOutputClusterRenameOutputCommand(seqNum, mEndpoint, index, name); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR AudioOutputCluster::SelectOutput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t index) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kSelectOutputCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // index: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), index)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeAudioOutputClusterSelectOutputCommand(seqNum, mEndpoint, index); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// AudioOutput Cluster Attributes +CHIP_ERROR AudioOutputCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeAudioOutputClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR AudioOutputCluster::ReadAttributeAudioOutputList(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeAudioOutputClusterReadAudioOutputListAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR AudioOutputCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeAudioOutputClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + // BarrierControl Cluster Commands CHIP_ERROR BarrierControlCluster::BarrierControlGoToPercent(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t percentOpen) @@ -1630,6 +1854,102 @@ CHIP_ERROR ColorControlCluster::ReadAttributeClusterRevision(Callback::Cancelabl return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); } +// ContentLaunch Cluster Commands +CHIP_ERROR ContentLaunchCluster::LaunchContent(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t autoPlay, chip::ByteSpan data) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kLaunchContentCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // autoPlay: boolean + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), autoPlay)); + // data: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), data)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeContentLaunchClusterLaunchContentCommand(seqNum, mEndpoint, autoPlay, data); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR ContentLaunchCluster::LaunchURL(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan contentURL, chip::ByteSpan displayString) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kLaunchURLCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // contentURL: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), contentURL)); + // displayString: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), displayString)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeContentLaunchClusterLaunchURLCommand(seqNum, mEndpoint, contentURL, displayString); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// ContentLaunch Cluster Attributes +CHIP_ERROR ContentLaunchCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeContentLaunchClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR ContentLaunchCluster::ReadAttributeAcceptsHeaderList(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeContentLaunchClusterReadAcceptsHeaderListAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR ContentLaunchCluster::ReadAttributeSupportedStreamingTypes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeContentLaunchClusterReadSupportedStreamingTypesAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR ContentLaunchCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeContentLaunchClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + // Descriptor Cluster Commands // Descriptor Cluster Attributes CHIP_ERROR DescriptorCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) @@ -2912,16 +3232,16 @@ CHIP_ERROR IdentifyCluster::ReadAttributeClusterRevision(Callback::Cancelable * return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); } -// LevelControl Cluster Commands -CHIP_ERROR LevelControlCluster::Move(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, - uint8_t moveMode, uint8_t rate, uint8_t optionMask, uint8_t optionOverride) +// KeypadInput Cluster Commands +CHIP_ERROR KeypadInputCluster::SendKey(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t keyCode) { #if CHIP_ENABLE_INTERACTION_MODEL VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); (void) onSuccessCallback; (void) onFailureCallback; - app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMoveCommandId, + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kSendKeyCommandId, (chip::app::CommandPathFlags::kEndpointIdValid) }; app::Command * ZCLcommand = mDevice->GetCommandSender(); @@ -2929,32 +3249,78 @@ CHIP_ERROR LevelControlCluster::Move(Callback::Cancelable * onSuccessCallback, C TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); uint8_t argSeqNumber = 0; - // moveMode: moveMode - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), moveMode)); - // rate: int8u - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), rate)); - // optionMask: bitmap8 - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionMask)); - // optionOverride: bitmap8 - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionOverride)); + // keyCode: keypadInputCecKeyCode + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), keyCode)); ReturnErrorOnFailure(ZCLcommand->FinishCommand()); return mDevice->SendCommands(); #else - uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = - encodeLevelControlClusterMoveCommand(seqNum, mEndpoint, moveMode, rate, optionMask, optionOverride); + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeKeypadInputClusterSendKeyCommand(seqNum, mEndpoint, keyCode); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -CHIP_ERROR LevelControlCluster::MoveToLevel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, - uint8_t level, uint16_t transitionTime, uint8_t optionMask, uint8_t optionOverride) +// KeypadInput Cluster Attributes +CHIP_ERROR KeypadInputCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) { -#if CHIP_ENABLE_INTERACTION_MODEL - VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); - (void) onSuccessCallback; + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeKeypadInputClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR KeypadInputCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeKeypadInputClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +// LevelControl Cluster Commands +CHIP_ERROR LevelControlCluster::Move(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t moveMode, uint8_t rate, uint8_t optionMask, uint8_t optionOverride) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMoveCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // moveMode: moveMode + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), moveMode)); + // rate: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), rate)); + // optionMask: bitmap8 + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionMask)); + // optionOverride: bitmap8 + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionOverride)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeLevelControlClusterMoveCommand(seqNum, mEndpoint, moveMode, rate, optionMask, optionOverride); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR LevelControlCluster::MoveToLevel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t level, uint16_t transitionTime, uint8_t optionMask, uint8_t optionOverride) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; (void) onFailureCallback; app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMoveToLevelCommandId, @@ -3011,54 +3377,548 @@ CHIP_ERROR LevelControlCluster::MoveToLevelWithOnOff(Callback::Cancelable * onSu return mDevice->SendCommands(); #else - uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = - encodeLevelControlClusterMoveToLevelWithOnOffCommand(seqNum, mEndpoint, level, transitionTime); + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeLevelControlClusterMoveToLevelWithOnOffCommand(seqNum, mEndpoint, level, transitionTime); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR LevelControlCluster::MoveWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t moveMode, uint8_t rate) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMoveWithOnOffCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // moveMode: moveMode + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), moveMode)); + // rate: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), rate)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLevelControlClusterMoveWithOnOffCommand(seqNum, mEndpoint, moveMode, rate); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR LevelControlCluster::Step(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t stepMode, uint8_t stepSize, uint16_t transitionTime, uint8_t optionMask, + uint8_t optionOverride) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStepCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // stepMode: stepMode + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepMode)); + // stepSize: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepSize)); + // transitionTime: int16u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), transitionTime)); + // optionMask: bitmap8 + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionMask)); + // optionOverride: bitmap8 + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionOverride)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeLevelControlClusterStepCommand(seqNum, mEndpoint, stepMode, stepSize, transitionTime, optionMask, optionOverride); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR LevelControlCluster::StepWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t stepMode, uint8_t stepSize, uint16_t transitionTime) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStepWithOnOffCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // stepMode: stepMode + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepMode)); + // stepSize: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepSize)); + // transitionTime: int16u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), transitionTime)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeLevelControlClusterStepWithOnOffCommand(seqNum, mEndpoint, stepMode, stepSize, transitionTime); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR LevelControlCluster::Stop(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t optionMask, uint8_t optionOverride) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStopCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // optionMask: bitmap8 + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionMask)); + // optionOverride: bitmap8 + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionOverride)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLevelControlClusterStopCommand(seqNum, mEndpoint, optionMask, optionOverride); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR LevelControlCluster::StopWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStopWithOnOffCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLevelControlClusterStopWithOnOffCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// LevelControl Cluster Attributes +CHIP_ERROR LevelControlCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLevelControlClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR LevelControlCluster::ReadAttributeCurrentLevel(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLevelControlClusterReadCurrentLevelAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR LevelControlCluster::ConfigureAttributeCurrentLevel(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback, uint16_t minInterval, + uint16_t maxInterval, uint8_t change) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeLevelControlClusterConfigureCurrentLevelAttribute(seqNum, mEndpoint, minInterval, maxInterval, change); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR LevelControlCluster::ReportAttributeCurrentLevel(Callback::Cancelable * onReportCallback) +{ + return RequestAttributeReporting(0x0000, onReportCallback); +} + +CHIP_ERROR LevelControlCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLevelControlClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +// LowPower Cluster Commands +CHIP_ERROR LowPowerCluster::Sleep(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kSleepCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLowPowerClusterSleepCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// LowPower Cluster Attributes +CHIP_ERROR LowPowerCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLowPowerClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR LowPowerCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeLowPowerClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +// MediaInput Cluster Commands +CHIP_ERROR MediaInputCluster::HideInputStatus(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kHideInputStatusCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaInputClusterHideInputStatusCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR MediaInputCluster::RenameInput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t index, chip::ByteSpan name) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kRenameInputCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // index: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), index)); + // name: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), name)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaInputClusterRenameInputCommand(seqNum, mEndpoint, index, name); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR MediaInputCluster::SelectInput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint8_t index) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kSelectInputCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // index: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), index)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaInputClusterSelectInputCommand(seqNum, mEndpoint, index); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR MediaInputCluster::ShowInputStatus(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kShowInputStatusCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaInputClusterShowInputStatusCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// MediaInput Cluster Attributes +CHIP_ERROR MediaInputCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaInputClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR MediaInputCluster::ReadAttributeMediaInputList(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaInputClusterReadMediaInputListAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR MediaInputCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaInputClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +// MediaPlayback Cluster Commands +CHIP_ERROR MediaPlaybackCluster::MediaFastForward(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaFastForwardCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaFastForwardCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR MediaPlaybackCluster::MediaNext(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaNextCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaNextCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR MediaPlaybackCluster::MediaPause(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaPauseCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaPauseCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR MediaPlaybackCluster::MediaPlay(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaPlayCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaPlayCommand(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR MediaPlaybackCluster::MediaPrevious(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaPreviousCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + // Command takes no arguments. + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaPreviousCommand(seqNum, mEndpoint); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -CHIP_ERROR LevelControlCluster::MoveWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, - uint8_t moveMode, uint8_t rate) +CHIP_ERROR MediaPlaybackCluster::MediaRewind(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) { #if CHIP_ENABLE_INTERACTION_MODEL VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); (void) onSuccessCallback; (void) onFailureCallback; - app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMoveWithOnOffCommandId, + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaRewindCommandId, (chip::app::CommandPathFlags::kEndpointIdValid) }; app::Command * ZCLcommand = mDevice->GetCommandSender(); ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); - TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); - uint8_t argSeqNumber = 0; - // moveMode: moveMode - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), moveMode)); - // rate: int8u - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), rate)); + // Command takes no arguments. ReturnErrorOnFailure(ZCLcommand->FinishCommand()); return mDevice->SendCommands(); #else uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLevelControlClusterMoveWithOnOffCommand(seqNum, mEndpoint, moveMode, rate); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaRewindCommand(seqNum, mEndpoint); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -CHIP_ERROR LevelControlCluster::Step(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, - uint8_t stepMode, uint8_t stepSize, uint16_t transitionTime, uint8_t optionMask, - uint8_t optionOverride) +CHIP_ERROR MediaPlaybackCluster::MediaSkipBackward(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback, uint64_t deltaPositionMilliseconds) { #if CHIP_ENABLE_INTERACTION_MODEL VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); (void) onSuccessCallback; (void) onFailureCallback; - app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStepCommandId, + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaSkipBackwardCommandId, (chip::app::CommandPathFlags::kEndpointIdValid) }; app::Command * ZCLcommand = mDevice->GetCommandSender(); @@ -3066,16 +3926,8 @@ CHIP_ERROR LevelControlCluster::Step(Callback::Cancelable * onSuccessCallback, C TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); uint8_t argSeqNumber = 0; - // stepMode: stepMode - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepMode)); - // stepSize: int8u - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepSize)); - // transitionTime: int16u - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), transitionTime)); - // optionMask: bitmap8 - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionMask)); - // optionOverride: bitmap8 - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionOverride)); + // deltaPositionMilliseconds: int64u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), deltaPositionMilliseconds)); ReturnErrorOnFailure(ZCLcommand->FinishCommand()); @@ -3083,20 +3935,20 @@ CHIP_ERROR LevelControlCluster::Step(Callback::Cancelable * onSuccessCallback, C #else uint8_t seqNum = mDevice->GetNextSequenceNumber(); System::PacketBufferHandle encodedCommand = - encodeLevelControlClusterStepCommand(seqNum, mEndpoint, stepMode, stepSize, transitionTime, optionMask, optionOverride); + encodeMediaPlaybackClusterMediaSkipBackwardCommand(seqNum, mEndpoint, deltaPositionMilliseconds); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -CHIP_ERROR LevelControlCluster::StepWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, - uint8_t stepMode, uint8_t stepSize, uint16_t transitionTime) +CHIP_ERROR MediaPlaybackCluster::MediaSkipForward(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback, uint64_t deltaPositionMilliseconds) { #if CHIP_ENABLE_INTERACTION_MODEL VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); (void) onSuccessCallback; (void) onFailureCallback; - app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStepWithOnOffCommandId, + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaSkipForwardCommandId, (chip::app::CommandPathFlags::kEndpointIdValid) }; app::Command * ZCLcommand = mDevice->GetCommandSender(); @@ -3104,12 +3956,8 @@ CHIP_ERROR LevelControlCluster::StepWithOnOff(Callback::Cancelable * onSuccessCa TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); uint8_t argSeqNumber = 0; - // stepMode: stepMode - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepMode)); - // stepSize: int8u - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), stepSize)); - // transitionTime: int16u - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), transitionTime)); + // deltaPositionMilliseconds: int64u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), deltaPositionMilliseconds)); ReturnErrorOnFailure(ZCLcommand->FinishCommand()); @@ -3117,20 +3965,20 @@ CHIP_ERROR LevelControlCluster::StepWithOnOff(Callback::Cancelable * onSuccessCa #else uint8_t seqNum = mDevice->GetNextSequenceNumber(); System::PacketBufferHandle encodedCommand = - encodeLevelControlClusterStepWithOnOffCommand(seqNum, mEndpoint, stepMode, stepSize, transitionTime); + encodeMediaPlaybackClusterMediaSkipForwardCommand(seqNum, mEndpoint, deltaPositionMilliseconds); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -CHIP_ERROR LevelControlCluster::Stop(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, - uint8_t optionMask, uint8_t optionOverride) +CHIP_ERROR MediaPlaybackCluster::MediaSkipSeek(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint64_t position) { #if CHIP_ENABLE_INTERACTION_MODEL VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); (void) onSuccessCallback; (void) onFailureCallback; - app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStopCommandId, + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaSkipSeekCommandId, (chip::app::CommandPathFlags::kEndpointIdValid) }; app::Command * ZCLcommand = mDevice->GetCommandSender(); @@ -3138,29 +3986,27 @@ CHIP_ERROR LevelControlCluster::Stop(Callback::Cancelable * onSuccessCallback, C TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); uint8_t argSeqNumber = 0; - // optionMask: bitmap8 - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionMask)); - // optionOverride: bitmap8 - ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), optionOverride)); + // position: int64u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), position)); ReturnErrorOnFailure(ZCLcommand->FinishCommand()); return mDevice->SendCommands(); #else uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLevelControlClusterStopCommand(seqNum, mEndpoint, optionMask, optionOverride); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaSkipSeekCommand(seqNum, mEndpoint, position); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -CHIP_ERROR LevelControlCluster::StopWithOnOff(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +CHIP_ERROR MediaPlaybackCluster::MediaStartOver(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) { #if CHIP_ENABLE_INTERACTION_MODEL VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); (void) onSuccessCallback; (void) onFailureCallback; - app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kStopWithOnOffCommandId, + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaStartOverCommandId, (chip::app::CommandPathFlags::kEndpointIdValid) }; app::Command * ZCLcommand = mDevice->GetCommandSender(); @@ -3173,59 +4019,19 @@ CHIP_ERROR LevelControlCluster::StopWithOnOff(Callback::Cancelable * onSuccessCa return mDevice->SendCommands(); #else uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLevelControlClusterStopWithOnOffCommand(seqNum, mEndpoint); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaStartOverCommand(seqNum, mEndpoint); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -// LevelControl Cluster Attributes -CHIP_ERROR LevelControlCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, - Callback::Cancelable * onFailureCallback) -{ - uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLevelControlClusterDiscoverAttributes(seqNum, mEndpoint); - return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); -} -CHIP_ERROR LevelControlCluster::ReadAttributeCurrentLevel(Callback::Cancelable * onSuccessCallback, - Callback::Cancelable * onFailureCallback) -{ - uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLevelControlClusterReadCurrentLevelAttribute(seqNum, mEndpoint); - return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); -} - -CHIP_ERROR LevelControlCluster::ConfigureAttributeCurrentLevel(Callback::Cancelable * onSuccessCallback, - Callback::Cancelable * onFailureCallback, uint16_t minInterval, - uint16_t maxInterval, uint8_t change) -{ - uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = - encodeLevelControlClusterConfigureCurrentLevelAttribute(seqNum, mEndpoint, minInterval, maxInterval, change); - return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); -} - -CHIP_ERROR LevelControlCluster::ReportAttributeCurrentLevel(Callback::Cancelable * onReportCallback) -{ - return RequestAttributeReporting(0x0000, onReportCallback); -} - -CHIP_ERROR LevelControlCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, - Callback::Cancelable * onFailureCallback) -{ - uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLevelControlClusterReadClusterRevisionAttribute(seqNum, mEndpoint); - return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); -} - -// LowPower Cluster Commands -CHIP_ERROR LowPowerCluster::Sleep(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +CHIP_ERROR MediaPlaybackCluster::MediaStop(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) { #if CHIP_ENABLE_INTERACTION_MODEL VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); (void) onSuccessCallback; (void) onFailureCallback; - app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kSleepCommandId, + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kMediaStopCommandId, (chip::app::CommandPathFlags::kEndpointIdValid) }; app::Command * ZCLcommand = mDevice->GetCommandSender(); @@ -3238,23 +4044,24 @@ CHIP_ERROR LowPowerCluster::Sleep(Callback::Cancelable * onSuccessCallback, Call return mDevice->SendCommands(); #else uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLowPowerClusterSleepCommand(seqNum, mEndpoint); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterMediaStopCommand(seqNum, mEndpoint); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); #endif } -// LowPower Cluster Attributes -CHIP_ERROR LowPowerCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +// MediaPlayback Cluster Attributes +CHIP_ERROR MediaPlaybackCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) { uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLowPowerClusterDiscoverAttributes(seqNum, mEndpoint); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterDiscoverAttributes(seqNum, mEndpoint); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); } -CHIP_ERROR LowPowerCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, - Callback::Cancelable * onFailureCallback) +CHIP_ERROR MediaPlaybackCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) { uint8_t seqNum = mDevice->GetNextSequenceNumber(); - System::PacketBufferHandle encodedCommand = encodeLowPowerClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + System::PacketBufferHandle encodedCommand = encodeMediaPlaybackClusterReadClusterRevisionAttribute(seqNum, mEndpoint); return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); } @@ -4252,6 +5059,193 @@ CHIP_ERROR SwitchCluster::ReadAttributeClusterRevision(Callback::Cancelable * on return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); } +// TvChannel Cluster Commands +CHIP_ERROR TvChannelCluster::ChangeChannel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan match) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kChangeChannelCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // match: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), match)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTvChannelClusterChangeChannelCommand(seqNum, mEndpoint, match); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR TvChannelCluster::ChangeChannelByNumber(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback, uint16_t majorNumber, + uint16_t minorNumber) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kChangeChannelByNumberCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // majorNumber: int16u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), majorNumber)); + // minorNumber: int16u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), minorNumber)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = + encodeTvChannelClusterChangeChannelByNumberCommand(seqNum, mEndpoint, majorNumber, minorNumber); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +CHIP_ERROR TvChannelCluster::SkipChannel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint16_t count) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kSkipChannelCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // count: int16u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), count)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTvChannelClusterSkipChannelCommand(seqNum, mEndpoint, count); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// TvChannel Cluster Attributes +CHIP_ERROR TvChannelCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTvChannelClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR TvChannelCluster::ReadAttributeTvChannelList(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTvChannelClusterReadTvChannelListAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR TvChannelCluster::ReadAttributeTvChannelLineup(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTvChannelClusterReadTvChannelLineupAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR TvChannelCluster::ReadAttributeCurrentTvChannel(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTvChannelClusterReadCurrentTvChannelAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR TvChannelCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTvChannelClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +// TargetNavigator Cluster Commands +CHIP_ERROR TargetNavigatorCluster::NavigateTarget(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback, uint8_t target, chip::ByteSpan data) +{ +#if CHIP_ENABLE_INTERACTION_MODEL + VerifyOrReturnError(mDevice != nullptr, CHIP_ERROR_INCORRECT_STATE); + (void) onSuccessCallback; + (void) onFailureCallback; + + app::CommandPathParams cmdParams = { mEndpoint, /* group id */ 0, mClusterId, kNavigateTargetCommandId, + (chip::app::CommandPathFlags::kEndpointIdValid) }; + app::Command * ZCLcommand = mDevice->GetCommandSender(); + + ReturnErrorOnFailure(ZCLcommand->PrepareCommand(&cmdParams)); + + TLV::TLVWriter * writer = ZCLcommand->GetCommandDataElementTLVWriter(); + uint8_t argSeqNumber = 0; + // target: int8u + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), target)); + // data: charString + ReturnErrorOnFailure(writer->Put(TLV::ContextTag(argSeqNumber++), data)); + + ReturnErrorOnFailure(ZCLcommand->FinishCommand()); + + return mDevice->SendCommands(); +#else + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTargetNavigatorClusterNavigateTargetCommand(seqNum, mEndpoint, target, data); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +#endif +} + +// TargetNavigator Cluster Attributes +CHIP_ERROR TargetNavigatorCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTargetNavigatorClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR TargetNavigatorCluster::ReadAttributeTargetNavigatorList(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTargetNavigatorClusterReadTargetNavigatorListAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR TargetNavigatorCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeTargetNavigatorClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + // TemperatureMeasurement Cluster Commands // TemperatureMeasurement Cluster Attributes CHIP_ERROR TemperatureMeasurementCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, @@ -4566,6 +5560,30 @@ CHIP_ERROR ThermostatCluster::ReadAttributeClusterRevision(Callback::Cancelable return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); } +// WakeOnLan Cluster Commands +// WakeOnLan Cluster Attributes +CHIP_ERROR WakeOnLanCluster::DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeWakeOnLanClusterDiscoverAttributes(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} +CHIP_ERROR WakeOnLanCluster::ReadAttributeWakeOnLanMacAddress(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeWakeOnLanClusterReadWakeOnLanMacAddressAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + +CHIP_ERROR WakeOnLanCluster::ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback) +{ + uint8_t seqNum = mDevice->GetNextSequenceNumber(); + System::PacketBufferHandle encodedCommand = encodeWakeOnLanClusterReadClusterRevisionAttribute(seqNum, mEndpoint); + return SendCommand(seqNum, std::move(encodedCommand), onSuccessCallback, onFailureCallback); +} + // WindowCovering Cluster Commands CHIP_ERROR WindowCoveringCluster::WindowCoveringDownClose(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback) diff --git a/src/controller/python/gen/CHIPClusters.h b/src/controller/python/gen/CHIPClusters.h index c34b48e2610f09..8b9bbc2de89127 100644 --- a/src/controller/python/gen/CHIPClusters.h +++ b/src/controller/python/gen/CHIPClusters.h @@ -27,29 +27,60 @@ namespace chip { namespace Controller { +constexpr ClusterId kAccountLoginClusterId = 0x050E; constexpr ClusterId kApplicationBasicClusterId = 0x050D; +constexpr ClusterId kApplicationLauncherClusterId = 0x050C; +constexpr ClusterId kAudioOutputClusterId = 0x050B; constexpr ClusterId kBarrierControlClusterId = 0x0103; constexpr ClusterId kBasicClusterId = 0x0028; constexpr ClusterId kBindingClusterId = 0xF000; constexpr ClusterId kColorControlClusterId = 0x0300; +constexpr ClusterId kContentLaunchClusterId = 0x050A; constexpr ClusterId kDescriptorClusterId = 0x001D; constexpr ClusterId kDoorLockClusterId = 0x0101; constexpr ClusterId kGeneralCommissioningClusterId = 0x0030; constexpr ClusterId kGroupKeyManagementClusterId = 0xF004; constexpr ClusterId kGroupsClusterId = 0x0004; constexpr ClusterId kIdentifyClusterId = 0x0003; +constexpr ClusterId kKeypadInputClusterId = 0x0509; constexpr ClusterId kLevelControlClusterId = 0x0008; constexpr ClusterId kLowPowerClusterId = 0x0508; +constexpr ClusterId kMediaInputClusterId = 0x0507; +constexpr ClusterId kMediaPlaybackClusterId = 0x0506; constexpr ClusterId kNetworkCommissioningClusterId = 0x0031; constexpr ClusterId kOnOffClusterId = 0x0006; constexpr ClusterId kOperationalCredentialsClusterId = 0x003E; constexpr ClusterId kPumpConfigurationAndControlClusterId = 0x0200; constexpr ClusterId kScenesClusterId = 0x0005; constexpr ClusterId kSwitchClusterId = 0x003B; +constexpr ClusterId kTvChannelClusterId = 0x0504; +constexpr ClusterId kTargetNavigatorClusterId = 0x0505; constexpr ClusterId kTemperatureMeasurementClusterId = 0x0402; constexpr ClusterId kThermostatClusterId = 0x0201; +constexpr ClusterId kWakeOnLanClusterId = 0x0503; constexpr ClusterId kWindowCoveringClusterId = 0x0102; +class DLL_EXPORT AccountLoginCluster : public ClusterBase +{ +public: + AccountLoginCluster() : ClusterBase(kAccountLoginClusterId) {} + ~AccountLoginCluster() {} + + // Cluster Commands + CHIP_ERROR GetSetupPIN(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan tempAccountIdentifier); + CHIP_ERROR Login(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan tempAccountIdentifier, chip::ByteSpan setupPIN); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kGetSetupPINCommandId = 0x00; + static constexpr CommandId kLoginCommandId = 0x01; +}; + class DLL_EXPORT ApplicationBasicCluster : public ClusterBase { public: @@ -68,6 +99,47 @@ class DLL_EXPORT ApplicationBasicCluster : public ClusterBase CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); }; +class DLL_EXPORT ApplicationLauncherCluster : public ClusterBase +{ +public: + ApplicationLauncherCluster() : ClusterBase(kApplicationLauncherClusterId) {} + ~ApplicationLauncherCluster() {} + + // Cluster Commands + CHIP_ERROR LaunchApp(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, chip::ByteSpan data, + uint16_t catalogVendorId, chip::ByteSpan applicationId); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeApplicationLauncherList(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kLaunchAppCommandId = 0x00; +}; + +class DLL_EXPORT AudioOutputCluster : public ClusterBase +{ +public: + AudioOutputCluster() : ClusterBase(kAudioOutputClusterId) {} + ~AudioOutputCluster() {} + + // Cluster Commands + CHIP_ERROR RenameOutput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t index, + chip::ByteSpan name); + CHIP_ERROR SelectOutput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t index); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeAudioOutputList(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kRenameOutputCommandId = 0x01; + static constexpr CommandId kSelectOutputCommandId = 0x00; +}; + class DLL_EXPORT BarrierControlCluster : public ClusterBase { public: @@ -317,6 +389,30 @@ class DLL_EXPORT ColorControlCluster : public ClusterBase static constexpr CommandId kStopMoveStepCommandId = 0x47; }; +class DLL_EXPORT ContentLaunchCluster : public ClusterBase +{ +public: + ContentLaunchCluster() : ClusterBase(kContentLaunchClusterId) {} + ~ContentLaunchCluster() {} + + // Cluster Commands + CHIP_ERROR LaunchContent(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t autoPlay, + chip::ByteSpan data); + CHIP_ERROR LaunchURL(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan contentURL, chip::ByteSpan displayString); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeAcceptsHeaderList(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeSupportedStreamingTypes(Callback::Cancelable * onSuccessCallback, + Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kLaunchContentCommandId = 0x00; + static constexpr CommandId kLaunchURLCommandId = 0x01; +}; + class DLL_EXPORT DescriptorCluster : public ClusterBase { public: @@ -507,6 +603,23 @@ class DLL_EXPORT IdentifyCluster : public ClusterBase static constexpr CommandId kIdentifyQueryCommandId = 0x01; }; +class DLL_EXPORT KeypadInputCluster : public ClusterBase +{ +public: + KeypadInputCluster() : ClusterBase(kKeypadInputClusterId) {} + ~KeypadInputCluster() {} + + // Cluster Commands + CHIP_ERROR SendKey(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t keyCode); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kSendKeyCommandId = 0x00; +}; + class DLL_EXPORT LevelControlCluster : public ClusterBase { public: @@ -566,6 +679,70 @@ class DLL_EXPORT LowPowerCluster : public ClusterBase static constexpr CommandId kSleepCommandId = 0x00; }; +class DLL_EXPORT MediaInputCluster : public ClusterBase +{ +public: + MediaInputCluster() : ClusterBase(kMediaInputClusterId) {} + ~MediaInputCluster() {} + + // Cluster Commands + CHIP_ERROR HideInputStatus(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR RenameInput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t index, + chip::ByteSpan name); + CHIP_ERROR SelectInput(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t index); + CHIP_ERROR ShowInputStatus(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeMediaInputList(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kHideInputStatusCommandId = 0x02; + static constexpr CommandId kRenameInputCommandId = 0x03; + static constexpr CommandId kSelectInputCommandId = 0x00; + static constexpr CommandId kShowInputStatusCommandId = 0x01; +}; + +class DLL_EXPORT MediaPlaybackCluster : public ClusterBase +{ +public: + MediaPlaybackCluster() : ClusterBase(kMediaPlaybackClusterId) {} + ~MediaPlaybackCluster() {} + + // Cluster Commands + CHIP_ERROR MediaFastForward(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR MediaNext(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR MediaPause(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR MediaPlay(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR MediaPrevious(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR MediaRewind(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR MediaSkipBackward(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint64_t deltaPositionMilliseconds); + CHIP_ERROR MediaSkipForward(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint64_t deltaPositionMilliseconds); + CHIP_ERROR MediaSkipSeek(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint64_t position); + CHIP_ERROR MediaStartOver(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR MediaStop(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kMediaFastForwardCommandId = 0x07; + static constexpr CommandId kMediaNextCommandId = 0x05; + static constexpr CommandId kMediaPauseCommandId = 0x01; + static constexpr CommandId kMediaPlayCommandId = 0x00; + static constexpr CommandId kMediaPreviousCommandId = 0x04; + static constexpr CommandId kMediaRewindCommandId = 0x06; + static constexpr CommandId kMediaSkipBackwardCommandId = 0x09; + static constexpr CommandId kMediaSkipForwardCommandId = 0x08; + static constexpr CommandId kMediaSkipSeekCommandId = 0x0A; + static constexpr CommandId kMediaStartOverCommandId = 0x03; + static constexpr CommandId kMediaStopCommandId = 0x02; +}; + class DLL_EXPORT NetworkCommissioningCluster : public ClusterBase { public: @@ -740,6 +917,51 @@ class DLL_EXPORT SwitchCluster : public ClusterBase CHIP_ERROR ReportAttributeCurrentPosition(Callback::Cancelable * onReportCallback); }; +class DLL_EXPORT TvChannelCluster : public ClusterBase +{ +public: + TvChannelCluster() : ClusterBase(kTvChannelClusterId) {} + ~TvChannelCluster() {} + + // Cluster Commands + CHIP_ERROR ChangeChannel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + chip::ByteSpan match); + CHIP_ERROR ChangeChannelByNumber(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, + uint16_t majorNumber, uint16_t minorNumber); + CHIP_ERROR SkipChannel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint16_t count); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeTvChannelList(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeTvChannelLineup(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeCurrentTvChannel(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kChangeChannelCommandId = 0x00; + static constexpr CommandId kChangeChannelByNumberCommandId = 0x01; + static constexpr CommandId kSkipChannelCommandId = 0x02; +}; + +class DLL_EXPORT TargetNavigatorCluster : public ClusterBase +{ +public: + TargetNavigatorCluster() : ClusterBase(kTargetNavigatorClusterId) {} + ~TargetNavigatorCluster() {} + + // Cluster Commands + CHIP_ERROR NavigateTarget(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback, uint8_t target, + chip::ByteSpan data); + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeTargetNavigatorList(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + +private: + static constexpr CommandId kNavigateTargetCommandId = 0x00; +}; + class DLL_EXPORT TemperatureMeasurementCluster : public ClusterBase { public: @@ -806,6 +1028,18 @@ class DLL_EXPORT ThermostatCluster : public ClusterBase static constexpr CommandId kSetpointRaiseLowerCommandId = 0x00; }; +class DLL_EXPORT WakeOnLanCluster : public ClusterBase +{ +public: + WakeOnLanCluster() : ClusterBase(kWakeOnLanClusterId) {} + ~WakeOnLanCluster() {} + + // Cluster Attributes + CHIP_ERROR DiscoverAttributes(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeWakeOnLanMacAddress(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR ReadAttributeClusterRevision(Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); +}; + class DLL_EXPORT WindowCoveringCluster : public ClusterBase { public: diff --git a/src/controller/python/gen/CHIPClustersObjc.h b/src/controller/python/gen/CHIPClustersObjc.h index d368536c5171ab..f8f112a2baa762 100644 --- a/src/controller/python/gen/CHIPClustersObjc.h +++ b/src/controller/python/gen/CHIPClustersObjc.h @@ -42,6 +42,19 @@ NS_ASSUME_NONNULL_BEGIN @end +/** + * Cluster Account Login + * + */ +@interface CHIPAccountLogin : CHIPCluster + +- (void)getSetupPIN:(NSString *)tempAccountIdentifier completionHandler:(ResponseHandler)completionHandler; +- (void)login:(NSString *)tempAccountIdentifier setupPIN:(NSString *)setupPIN completionHandler:(ResponseHandler)completionHandler; + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + /** * Cluster Application Basic * @@ -59,6 +72,36 @@ NS_ASSUME_NONNULL_BEGIN @end +/** + * Cluster Application Launcher + * + */ +@interface CHIPApplicationLauncher : CHIPCluster + +- (void)launchApp:(NSString *)data + catalogVendorId:(uint16_t)catalogVendorId + applicationId:(NSString *)applicationId + completionHandler:(ResponseHandler)completionHandler; + +- (void)readAttributeApplicationLauncherList:(ResponseHandler)completionHandler; +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + +/** + * Cluster Audio Output + * + */ +@interface CHIPAudioOutput : CHIPCluster + +- (void)renameOutput:(uint8_t)index name:(NSString *)name completionHandler:(ResponseHandler)completionHandler; +- (void)selectOutput:(uint8_t)index completionHandler:(ResponseHandler)completionHandler; + +- (void)readAttributeAudioOutputList:(ResponseHandler)completionHandler; +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + /** * Cluster Barrier Control * @@ -307,6 +350,23 @@ NS_ASSUME_NONNULL_BEGIN @end +/** + * Cluster Content Launch + * + */ +@interface CHIPContentLaunch : CHIPCluster + +- (void)launchContent:(uint8_t)autoPlay data:(NSString *)data completionHandler:(ResponseHandler)completionHandler; +- (void)launchURL:(NSString *)contentURL + displayString:(NSString *)displayString + completionHandler:(ResponseHandler)completionHandler; + +- (void)readAttributeAcceptsHeaderList:(ResponseHandler)completionHandler; +- (void)readAttributeSupportedStreamingTypes:(ResponseHandler)completionHandler; +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + /** * Cluster Descriptor * @@ -456,6 +516,18 @@ NS_ASSUME_NONNULL_BEGIN @end +/** + * Cluster Keypad Input + * + */ +@interface CHIPKeypadInput : CHIPCluster + +- (void)sendKey:(uint8_t)keyCode completionHandler:(ResponseHandler)completionHandler; + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + /** * Cluster Level Control * @@ -511,6 +583,44 @@ NS_ASSUME_NONNULL_BEGIN @end +/** + * Cluster Media Input + * + */ +@interface CHIPMediaInput : CHIPCluster + +- (void)hideInputStatus:(ResponseHandler)completionHandler; +- (void)renameInput:(uint8_t)index name:(NSString *)name completionHandler:(ResponseHandler)completionHandler; +- (void)selectInput:(uint8_t)index completionHandler:(ResponseHandler)completionHandler; +- (void)showInputStatus:(ResponseHandler)completionHandler; + +- (void)readAttributeMediaInputList:(ResponseHandler)completionHandler; +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + +/** + * Cluster Media Playback + * + */ +@interface CHIPMediaPlayback : CHIPCluster + +- (void)mediaFastForward:(ResponseHandler)completionHandler; +- (void)mediaNext:(ResponseHandler)completionHandler; +- (void)mediaPause:(ResponseHandler)completionHandler; +- (void)mediaPlay:(ResponseHandler)completionHandler; +- (void)mediaPrevious:(ResponseHandler)completionHandler; +- (void)mediaRewind:(ResponseHandler)completionHandler; +- (void)mediaSkipBackward:(uint64_t)deltaPositionMilliseconds completionHandler:(ResponseHandler)completionHandler; +- (void)mediaSkipForward:(uint64_t)deltaPositionMilliseconds completionHandler:(ResponseHandler)completionHandler; +- (void)mediaSkipSeek:(uint64_t)position completionHandler:(ResponseHandler)completionHandler; +- (void)mediaStartOver:(ResponseHandler)completionHandler; +- (void)mediaStop:(ResponseHandler)completionHandler; + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + /** * Cluster Network Commissioning * @@ -667,6 +777,38 @@ NS_ASSUME_NONNULL_BEGIN @end +/** + * Cluster TV Channel + * + */ +@interface CHIPTvChannel : CHIPCluster + +- (void)changeChannel:(NSString *)match completionHandler:(ResponseHandler)completionHandler; +- (void)changeChannelByNumber:(uint16_t)majorNumber + minorNumber:(uint16_t)minorNumber + completionHandler:(ResponseHandler)completionHandler; +- (void)skipChannel:(uint16_t)count completionHandler:(ResponseHandler)completionHandler; + +- (void)readAttributeTvChannelList:(ResponseHandler)completionHandler; +- (void)readAttributeTvChannelLineup:(ResponseHandler)completionHandler; +- (void)readAttributeCurrentTvChannel:(ResponseHandler)completionHandler; +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + +/** + * Cluster Target Navigator + * + */ +@interface CHIPTargetNavigator : CHIPCluster + +- (void)navigateTarget:(uint8_t)target data:(NSString *)data completionHandler:(ResponseHandler)completionHandler; + +- (void)readAttributeTargetNavigatorList:(ResponseHandler)completionHandler; +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + /** * Cluster Temperature Measurement * @@ -721,6 +863,17 @@ NS_ASSUME_NONNULL_BEGIN @end +/** + * Cluster Wake on LAN + * + */ +@interface CHIPWakeOnLan : CHIPCluster + +- (void)readAttributeWakeOnLanMacAddress:(ResponseHandler)completionHandler; +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler; + +@end + /** * Cluster Window Covering * diff --git a/src/controller/python/gen/CHIPClustersObjc.mm b/src/controller/python/gen/CHIPClustersObjc.mm index 93e0782612268b..ed9d5ba3ad6f45 100644 --- a/src/controller/python/gen/CHIPClustersObjc.mm +++ b/src/controller/python/gen/CHIPClustersObjc.mm @@ -355,6 +355,136 @@ static void CallbackFn(void * context, int16_t value) bool mKeepAlive; }; +class CHIPAccountLoginClusterGetSetupPINResponseCallbackBridge + : public Callback::Callback { +public: + CHIPAccountLoginClusterGetSetupPINResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPAccountLoginClusterGetSetupPINResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint8_t * setupPIN) + { + CHIPAccountLoginClusterGetSetupPINResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"setupPIN" : [NSString stringWithFormat:@"%s", setupPIN], + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPApplicationLauncherClusterLaunchAppResponseCallbackBridge + : public Callback::Callback { +public: + CHIPApplicationLauncherClusterLaunchAppResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPApplicationLauncherClusterLaunchAppResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint8_t * data) + { + CHIPApplicationLauncherClusterLaunchAppResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"data" : [NSString stringWithFormat:@"%s", data], + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPContentLaunchClusterLaunchContentResponseCallbackBridge + : public Callback::Callback { +public: + CHIPContentLaunchClusterLaunchContentResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPContentLaunchClusterLaunchContentResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint8_t * data, uint8_t contentLaunchStatus) + { + CHIPContentLaunchClusterLaunchContentResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"data" : [NSString stringWithFormat:@"%s", data], + @"contentLaunchStatus" : [NSNumber numberWithUnsignedChar:contentLaunchStatus], + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPContentLaunchClusterLaunchURLResponseCallbackBridge + : public Callback::Callback { +public: + CHIPContentLaunchClusterLaunchURLResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPContentLaunchClusterLaunchURLResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint8_t * data, uint8_t contentLaunchStatus) + { + CHIPContentLaunchClusterLaunchURLResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"data" : [NSString stringWithFormat:@"%s", data], + @"contentLaunchStatus" : [NSNumber numberWithUnsignedChar:contentLaunchStatus], + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + class CHIPDoorLockClusterClearAllPinsResponseCallbackBridge : public Callback::Callback { public: @@ -1338,28 +1468,24 @@ static void CallbackFn(void * context, uint16_t timeout) dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge - : public Callback::Callback { +class CHIPKeypadInputClusterSendKeyResponseCallbackBridge : public Callback::Callback { public: - CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPKeypadInputClusterSendKeyResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge() {}; + ~CHIPKeypadInputClusterSendKeyResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) + static void CallbackFn(void * context) { - CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPKeypadInputClusterSendKeyResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], - }); + callback->mHandler(nil, @ {}); callback->Cancel(); delete callback; }); @@ -1371,27 +1497,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaFastForwardResponseCallbackBridge + : public Callback::Callback { public: - CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaFastForwardResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaFastForwardResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaFastForwardResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1404,27 +1529,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaNextResponseCallbackBridge + : public Callback::Callback { public: - CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaNextResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaNextResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaNextResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1437,27 +1561,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaPauseResponseCallbackBridge + : public Callback::Callback { public: - CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaPauseResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaPauseResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaPauseResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1470,27 +1593,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaPlayResponseCallbackBridge + : public Callback::Callback { public: - CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaPlayResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaPlayResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaPlayResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1503,33 +1625,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaPreviousResponseCallbackBridge + : public Callback::Callback { public: - CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaPreviousResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaPreviousResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText, - /* TYPE WARNING: array array defaults to */ uint8_t * wifiScanResults, - /* TYPE WARNING: array array defaults to */ uint8_t * threadScanResults) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaPreviousResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], - // wifiScanResults: /* TYPE WARNING: array array defaults to */ uint8_t * - // Conversion from this type to Objc is not properly implemented yet - // threadScanResults: /* TYPE WARNING: array array defaults to */ uint8_t * - // Conversion from this type to Objc is not properly implemented yet + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1542,27 +1657,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText, dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaRewindResponseCallbackBridge + : public Callback::Callback { public: - CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaRewindResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaRewindResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaRewindResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1575,27 +1689,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) dispatch_queue_t mQueue; }; -class CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaSkipBackwardResponseCallbackBridge + : public Callback::Callback { public: - CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaSkipBackwardResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaSkipBackwardResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaSkipBackwardResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], - @"debugText" : [NSString stringWithFormat:@"%s", debugText], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1608,26 +1721,26 @@ static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) dispatch_queue_t mQueue; }; -class CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaSkipForwardResponseCallbackBridge + : public Callback::Callback { public: - CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaSkipForwardResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaSkipForwardResponseCallbackBridge() {}; - static void CallbackFn(void * context, chip::FabricId FabricId) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaSkipForwardResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"FabricId" : [NSNumber numberWithUnsignedLongLong:FabricId], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1640,26 +1753,26 @@ static void CallbackFn(void * context, chip::FabricId FabricId) dispatch_queue_t mQueue; }; -class CHIPScenesClusterAddSceneResponseCallbackBridge : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaSkipSeekResponseCallbackBridge + : public Callback::Callback { public: - CHIPScenesClusterAddSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaSkipSeekResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPScenesClusterAddSceneResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaSkipSeekResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPScenesClusterAddSceneResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaSkipSeekResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"groupId" : [NSNumber numberWithUnsignedShort:groupId], - @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1672,31 +1785,26 @@ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) dispatch_queue_t mQueue; }; -class CHIPScenesClusterGetSceneMembershipResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaStartOverResponseCallbackBridge + : public Callback::Callback { public: - CHIPScenesClusterGetSceneMembershipResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaStartOverResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPScenesClusterGetSceneMembershipResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaStartOverResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint8_t capacity, uint16_t groupId, uint8_t sceneCount, - /* TYPE WARNING: array array defaults to */ uint8_t * sceneList) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPScenesClusterGetSceneMembershipResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaStartOverResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"capacity" : [NSNumber numberWithUnsignedChar:capacity], - @"groupId" : [NSNumber numberWithUnsignedShort:groupId], - @"sceneCount" : [NSNumber numberWithUnsignedChar:sceneCount], - // sceneList: /* TYPE WARNING: array array defaults to */ uint8_t * - // Conversion from this type to Objc is not properly implemented yet + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1709,26 +1817,26 @@ static void CallbackFn(void * context, uint8_t capacity, uint16_t groupId, uint8 dispatch_queue_t mQueue; }; -class CHIPScenesClusterRemoveAllScenesResponseCallbackBridge - : public Callback::Callback { +class CHIPMediaPlaybackClusterMediaStopResponseCallbackBridge + : public Callback::Callback { public: - CHIPScenesClusterRemoveAllScenesResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPMediaPlaybackClusterMediaStopResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPScenesClusterRemoveAllScenesResponseCallbackBridge() {}; + ~CHIPMediaPlaybackClusterMediaStopResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t groupId) + static void CallbackFn(void * context, uint8_t mediaPlaybackStatus) { - CHIPScenesClusterRemoveAllScenesResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPMediaPlaybackClusterMediaStopResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"groupId" : [NSNumber numberWithUnsignedShort:groupId], + @"mediaPlaybackStatus" : [NSNumber numberWithUnsignedChar:mediaPlaybackStatus], }); callback->Cancel(); delete callback; @@ -1741,26 +1849,27 @@ static void CallbackFn(void * context, uint16_t groupId) dispatch_queue_t mQueue; }; -class CHIPScenesClusterRemoveSceneResponseCallbackBridge : public Callback::Callback { +class CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge + : public Callback::Callback { public: - CHIPScenesClusterRemoveSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPScenesClusterRemoveSceneResponseCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) { - CHIPScenesClusterRemoveSceneResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"groupId" : [NSNumber numberWithUnsignedShort:groupId], - @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], }); callback->Cancel(); delete callback; @@ -1773,26 +1882,27 @@ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) dispatch_queue_t mQueue; }; -class CHIPScenesClusterStoreSceneResponseCallbackBridge : public Callback::Callback { +class CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge + : public Callback::Callback { public: - CHIPScenesClusterStoreSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPScenesClusterStoreSceneResponseCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) { - CHIPScenesClusterStoreSceneResponseCallbackBridge * callback - = reinterpret_cast(context); - if (callback && callback->mQueue) { + CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"groupId" : [NSNumber numberWithUnsignedShort:groupId], - @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], }); callback->Cancel(); delete callback; @@ -1805,31 +1915,27 @@ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) dispatch_queue_t mQueue; }; -class CHIPScenesClusterViewSceneResponseCallbackBridge : public Callback::Callback { +class CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge + : public Callback::Callback { public: - CHIPScenesClusterViewSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPScenesClusterViewSceneResponseCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime, uint8_t * sceneName, - /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) { - CHIPScenesClusterViewSceneResponseCallbackBridge * callback - = reinterpret_cast(context); + CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { dispatch_async(callback->mQueue, ^{ callback->mHandler(nil, @ { - @"groupId" : [NSNumber numberWithUnsignedShort:groupId], - @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], - @"transitionTime" : [NSNumber numberWithUnsignedShort:transitionTime], - @"sceneName" : [NSString stringWithFormat:@"%s", sceneName], - // extensionFieldSets: /* TYPE WARNING: array array defaults to */ uint8_t * - // Conversion from this type to Objc is not properly implemented yet + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], }); callback->Cancel(); delete callback; @@ -1842,317 +1948,2012 @@ static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId, uint16 dispatch_queue_t mQueue; }; -class CHIPDescriptorDeviceListAttributeCallbackBridge : public Callback::Callback { +class CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge + : public Callback::Callback { public: - CHIPDescriptorDeviceListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPDescriptorDeviceListAttributeCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t count, _DeviceType * entries) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) { - CHIPDescriptorDeviceListAttributeCallbackBridge * callback - = reinterpret_cast(context); + CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { - id values[count]; - for (uint16_t i = 0; i < count; i++) { - values[i] = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithUnsignedLong:entries[i].type], @"type", - [NSNumber numberWithUnsignedShort:entries[i].revision], @"revision", nil]; - } - - id array = [NSArray arrayWithObjects:values count:count]; dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { @"value" : array }); + callback->mHandler(nil, @ { + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], + }); callback->Cancel(); delete callback; }); } - } + }; private: ResponseHandler mHandler; dispatch_queue_t mQueue; }; -class CHIPDescriptorServerListAttributeCallbackBridge : public Callback::Callback { +class CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge + : public Callback::Callback { public: - CHIPDescriptorServerListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPDescriptorServerListAttributeCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t count, chip::ClusterId * entries) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) { - CHIPDescriptorServerListAttributeCallbackBridge * callback - = reinterpret_cast(context); + CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { - id values[count]; - for (uint16_t i = 0; i < count; i++) { - values[i] = [NSNumber numberWithUnsignedShort:entries[i]]; - } - - id array = [NSArray arrayWithObjects:values count:count]; dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { @"value" : array }); + callback->mHandler(nil, @ { + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], + }); callback->Cancel(); delete callback; }); } - } + }; private: ResponseHandler mHandler; dispatch_queue_t mQueue; }; -class CHIPDescriptorClientListAttributeCallbackBridge : public Callback::Callback { +class CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge + : public Callback::Callback { public: - CHIPDescriptorClientListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPDescriptorClientListAttributeCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t count, chip::ClusterId * entries) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText, + /* TYPE WARNING: array array defaults to */ uint8_t * wifiScanResults, + /* TYPE WARNING: array array defaults to */ uint8_t * threadScanResults) { - CHIPDescriptorClientListAttributeCallbackBridge * callback - = reinterpret_cast(context); + CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { - id values[count]; - for (uint16_t i = 0; i < count; i++) { - values[i] = [NSNumber numberWithUnsignedShort:entries[i]]; - } - - id array = [NSArray arrayWithObjects:values count:count]; dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { @"value" : array }); + callback->mHandler(nil, @ { + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], + // wifiScanResults: /* TYPE WARNING: array array defaults to */ uint8_t * + // Conversion from this type to Objc is not properly implemented yet + // threadScanResults: /* TYPE WARNING: array array defaults to */ uint8_t * + // Conversion from this type to Objc is not properly implemented yet + }); callback->Cancel(); delete callback; }); } - } + }; private: ResponseHandler mHandler; dispatch_queue_t mQueue; }; -class CHIPDescriptorPartsListAttributeCallbackBridge : public Callback::Callback { +class CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge + : public Callback::Callback { public: - CHIPDescriptorPartsListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPDescriptorPartsListAttributeCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t count, chip::EndpointId * entries) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) { - CHIPDescriptorPartsListAttributeCallbackBridge * callback - = reinterpret_cast(context); + CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { - id values[count]; - for (uint16_t i = 0; i < count; i++) { - values[i] = [NSNumber numberWithUnsignedChar:entries[i]]; - } - - id array = [NSArray arrayWithObjects:values count:count]; dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { @"value" : array }); + callback->mHandler(nil, @ { + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], + }); callback->Cancel(); delete callback; }); } - } + }; private: ResponseHandler mHandler; dispatch_queue_t mQueue; }; -class CHIPGroupKeyManagementGroupsAttributeCallbackBridge - : public Callback::Callback { +class CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge + : public Callback::Callback { public: - CHIPGroupKeyManagementGroupsAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPGroupKeyManagementGroupsAttributeCallbackBridge() {}; + ~CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t count, _GroupState * entries) + static void CallbackFn(void * context, uint8_t errorCode, uint8_t * debugText) { - CHIPGroupKeyManagementGroupsAttributeCallbackBridge * callback - = reinterpret_cast(context); + CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { - id values[count]; - for (uint16_t i = 0; i < count; i++) { - values[i] = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithUnsignedShort:entries[i].VendorId], - @"VendorId", [NSNumber numberWithUnsignedShort:entries[i].VendorGroupId], - @"VendorGroupId", [NSNumber numberWithUnsignedShort:entries[i].GroupKeySetIndex], - @"GroupKeySetIndex", nil]; - } - - id array = [NSArray arrayWithObjects:values count:count]; dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { @"value" : array }); + callback->mHandler(nil, @ { + @"errorCode" : [NSNumber numberWithUnsignedChar:errorCode], + @"debugText" : [NSString stringWithFormat:@"%s", debugText], + }); callback->Cancel(); delete callback; }); } - } + }; private: ResponseHandler mHandler; dispatch_queue_t mQueue; }; -class CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge - : public Callback::Callback { +class CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge + : public Callback::Callback { public: - CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge() {}; + ~CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t count, _GroupKey * entries) + static void CallbackFn(void * context, chip::FabricId FabricId) { - CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge * callback - = reinterpret_cast(context); + CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { - id values[count]; - for (uint16_t i = 0; i < count; i++) { - values[i] = [[NSDictionary alloc] - initWithObjectsAndKeys:[NSNumber numberWithUnsignedShort:entries[i].VendorId], @"VendorId", - [NSNumber numberWithUnsignedShort:entries[i].GroupKeyIndex], @"GroupKeyIndex", - [NSData dataWithBytes:entries[i].GroupKeyRoot + 1u length:emberAfStringLength(entries[i].GroupKeyRoot)], - @"GroupKeyRoot", [NSNumber numberWithUnsignedLongLong:entries[i].GroupKeyEpochStartTime], - @"GroupKeyEpochStartTime", [NSNumber numberWithUnsignedChar:entries[i].GroupKeySecurityPolicy], - @"GroupKeySecurityPolicy", nil]; - } - - id array = [NSArray arrayWithObjects:values count:count]; dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { @"value" : array }); + callback->mHandler(nil, @ { + @"FabricId" : [NSNumber numberWithUnsignedLongLong:FabricId], + }); callback->Cancel(); delete callback; }); } - } + }; private: ResponseHandler mHandler; dispatch_queue_t mQueue; }; -class CHIPOperationalCredentialsFabricsListAttributeCallbackBridge - : public Callback::Callback { +class CHIPScenesClusterAddSceneResponseCallbackBridge : public Callback::Callback { public: - CHIPOperationalCredentialsFabricsListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) - : Callback::Callback(CallbackFn, this) + CHIPScenesClusterAddSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) , mHandler(handler) , mQueue(queue) { } - ~CHIPOperationalCredentialsFabricsListAttributeCallbackBridge() {}; + ~CHIPScenesClusterAddSceneResponseCallbackBridge() {}; - static void CallbackFn(void * context, uint16_t count, _FabricDescriptor * entries) + static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) { - CHIPOperationalCredentialsFabricsListAttributeCallbackBridge * callback - = reinterpret_cast(context); + CHIPScenesClusterAddSceneResponseCallbackBridge * callback + = reinterpret_cast(context); if (callback && callback->mQueue) { - id values[count]; - for (uint16_t i = 0; i < count; i++) { - values[i] = - [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithUnsignedLongLong:entries[i].FabricId], - @"FabricId", [NSNumber numberWithUnsignedShort:entries[i].VendorId], @"VendorId", - [NSData dataWithBytes:entries[i].Label + 1u length:emberAfStringLength(entries[i].Label)], - @"Label", [NSNumber numberWithUnsignedLongLong:entries[i].NodeId], @"NodeId", nil]; - } - - id array = [NSArray arrayWithObjects:values count:count]; dispatch_async(callback->mQueue, ^{ - callback->mHandler(nil, @ { @"value" : array }); + callback->mHandler(nil, @ { + @"groupId" : [NSNumber numberWithUnsignedShort:groupId], + @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], + }); callback->Cancel(); delete callback; }); } - } + }; private: ResponseHandler mHandler; dispatch_queue_t mQueue; }; -@interface CHIPCluster () -@property (readonly, nonatomic) dispatch_queue_t callbackQueue; -- (Controller::ClusterBase *)getCluster; -@end - -@implementation CHIPCluster -- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue -{ - if (self = [super init]) { - Controller::ClusterBase * cppCluster = [self getCluster]; - if (cppCluster == nullptr) { - return nil; +class CHIPScenesClusterGetSceneMembershipResponseCallbackBridge + : public Callback::Callback { +public: + CHIPScenesClusterGetSceneMembershipResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPScenesClusterGetSceneMembershipResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint8_t capacity, uint16_t groupId, uint8_t sceneCount, + /* TYPE WARNING: array array defaults to */ uint8_t * sceneList) + { + CHIPScenesClusterGetSceneMembershipResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"capacity" : [NSNumber numberWithUnsignedChar:capacity], + @"groupId" : [NSNumber numberWithUnsignedShort:groupId], + @"sceneCount" : [NSNumber numberWithUnsignedChar:sceneCount], + // sceneList: /* TYPE WARNING: array array defaults to */ uint8_t * + // Conversion from this type to Objc is not properly implemented yet + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPScenesClusterRemoveAllScenesResponseCallbackBridge + : public Callback::Callback { +public: + CHIPScenesClusterRemoveAllScenesResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPScenesClusterRemoveAllScenesResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t groupId) + { + CHIPScenesClusterRemoveAllScenesResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"groupId" : [NSNumber numberWithUnsignedShort:groupId], + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPScenesClusterRemoveSceneResponseCallbackBridge : public Callback::Callback { +public: + CHIPScenesClusterRemoveSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPScenesClusterRemoveSceneResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) + { + CHIPScenesClusterRemoveSceneResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"groupId" : [NSNumber numberWithUnsignedShort:groupId], + @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPScenesClusterStoreSceneResponseCallbackBridge : public Callback::Callback { +public: + CHIPScenesClusterStoreSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPScenesClusterStoreSceneResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId) + { + CHIPScenesClusterStoreSceneResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"groupId" : [NSNumber numberWithUnsignedShort:groupId], + @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPScenesClusterViewSceneResponseCallbackBridge : public Callback::Callback { +public: + CHIPScenesClusterViewSceneResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPScenesClusterViewSceneResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t groupId, uint8_t sceneId, uint16_t transitionTime, uint8_t * sceneName, + /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets) + { + CHIPScenesClusterViewSceneResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"groupId" : [NSNumber numberWithUnsignedShort:groupId], + @"sceneId" : [NSNumber numberWithUnsignedChar:sceneId], + @"transitionTime" : [NSNumber numberWithUnsignedShort:transitionTime], + @"sceneName" : [NSString stringWithFormat:@"%s", sceneName], + // extensionFieldSets: /* TYPE WARNING: array array defaults to */ uint8_t * + // Conversion from this type to Objc is not properly implemented yet + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPTvChannelClusterChangeChannelResponseCallbackBridge + : public Callback::Callback { +public: + CHIPTvChannelClusterChangeChannelResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPTvChannelClusterChangeChannelResponseCallbackBridge() {}; + + static void CallbackFn(void * context, /* TYPE WARNING: array array defaults to */ uint8_t * ChannelMatch, uint8_t ErrorType) + { + CHIPTvChannelClusterChangeChannelResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + // ChannelMatch: /* TYPE WARNING: array array defaults to */ uint8_t * + // Conversion from this type to Objc is not properly implemented yet + @"ErrorType" : [NSNumber numberWithUnsignedChar:ErrorType], + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPTargetNavigatorClusterNavigateTargetResponseCallbackBridge + : public Callback::Callback { +public: + CHIPTargetNavigatorClusterNavigateTargetResponseCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPTargetNavigatorClusterNavigateTargetResponseCallbackBridge() {}; + + static void CallbackFn(void * context, uint8_t * data) + { + CHIPTargetNavigatorClusterNavigateTargetResponseCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { + @"data" : [NSString stringWithFormat:@"%s", data], + }); + callback->Cancel(); + delete callback; + }); + } + }; + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPDescriptorDeviceListAttributeCallbackBridge : public Callback::Callback { +public: + CHIPDescriptorDeviceListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPDescriptorDeviceListAttributeCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t count, _DeviceType * entries) + { + CHIPDescriptorDeviceListAttributeCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + id values[count]; + for (uint16_t i = 0; i < count; i++) { + values[i] = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithUnsignedLong:entries[i].type], @"type", + [NSNumber numberWithUnsignedShort:entries[i].revision], @"revision", nil]; + } + + id array = [NSArray arrayWithObjects:values count:count]; + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { @"value" : array }); + callback->Cancel(); + delete callback; + }); } + } + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPDescriptorServerListAttributeCallbackBridge : public Callback::Callback { +public: + CHIPDescriptorServerListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPDescriptorServerListAttributeCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t count, chip::ClusterId * entries) + { + CHIPDescriptorServerListAttributeCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + id values[count]; + for (uint16_t i = 0; i < count; i++) { + values[i] = [NSNumber numberWithUnsignedShort:entries[i]]; + } + + id array = [NSArray arrayWithObjects:values count:count]; + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { @"value" : array }); + callback->Cancel(); + delete callback; + }); + } + } + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPDescriptorClientListAttributeCallbackBridge : public Callback::Callback { +public: + CHIPDescriptorClientListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPDescriptorClientListAttributeCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t count, chip::ClusterId * entries) + { + CHIPDescriptorClientListAttributeCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + id values[count]; + for (uint16_t i = 0; i < count; i++) { + values[i] = [NSNumber numberWithUnsignedShort:entries[i]]; + } + + id array = [NSArray arrayWithObjects:values count:count]; + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { @"value" : array }); + callback->Cancel(); + delete callback; + }); + } + } + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPDescriptorPartsListAttributeCallbackBridge : public Callback::Callback { +public: + CHIPDescriptorPartsListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPDescriptorPartsListAttributeCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t count, chip::EndpointId * entries) + { + CHIPDescriptorPartsListAttributeCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + id values[count]; + for (uint16_t i = 0; i < count; i++) { + values[i] = [NSNumber numberWithUnsignedChar:entries[i]]; + } + + id array = [NSArray arrayWithObjects:values count:count]; + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { @"value" : array }); + callback->Cancel(); + delete callback; + }); + } + } + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPGroupKeyManagementGroupsAttributeCallbackBridge + : public Callback::Callback { +public: + CHIPGroupKeyManagementGroupsAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPGroupKeyManagementGroupsAttributeCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t count, _GroupState * entries) + { + CHIPGroupKeyManagementGroupsAttributeCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + id values[count]; + for (uint16_t i = 0; i < count; i++) { + values[i] = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithUnsignedShort:entries[i].VendorId], + @"VendorId", [NSNumber numberWithUnsignedShort:entries[i].VendorGroupId], + @"VendorGroupId", [NSNumber numberWithUnsignedShort:entries[i].GroupKeySetIndex], + @"GroupKeySetIndex", nil]; + } + + id array = [NSArray arrayWithObjects:values count:count]; + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { @"value" : array }); + callback->Cancel(); + delete callback; + }); + } + } + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge + : public Callback::Callback { +public: + CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t count, _GroupKey * entries) + { + CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + id values[count]; + for (uint16_t i = 0; i < count; i++) { + values[i] = [[NSDictionary alloc] + initWithObjectsAndKeys:[NSNumber numberWithUnsignedShort:entries[i].VendorId], @"VendorId", + [NSNumber numberWithUnsignedShort:entries[i].GroupKeyIndex], @"GroupKeyIndex", + [NSData dataWithBytes:entries[i].GroupKeyRoot + 1u length:emberAfStringLength(entries[i].GroupKeyRoot)], + @"GroupKeyRoot", [NSNumber numberWithUnsignedLongLong:entries[i].GroupKeyEpochStartTime], + @"GroupKeyEpochStartTime", [NSNumber numberWithUnsignedChar:entries[i].GroupKeySecurityPolicy], + @"GroupKeySecurityPolicy", nil]; + } + + id array = [NSArray arrayWithObjects:values count:count]; + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { @"value" : array }); + callback->Cancel(); + delete callback; + }); + } + } + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +class CHIPOperationalCredentialsFabricsListAttributeCallbackBridge + : public Callback::Callback { +public: + CHIPOperationalCredentialsFabricsListAttributeCallbackBridge(ResponseHandler handler, dispatch_queue_t queue) + : Callback::Callback(CallbackFn, this) + , mHandler(handler) + , mQueue(queue) + { + } + + ~CHIPOperationalCredentialsFabricsListAttributeCallbackBridge() {}; + + static void CallbackFn(void * context, uint16_t count, _FabricDescriptor * entries) + { + CHIPOperationalCredentialsFabricsListAttributeCallbackBridge * callback + = reinterpret_cast(context); + if (callback && callback->mQueue) { + id values[count]; + for (uint16_t i = 0; i < count; i++) { + values[i] = + [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithUnsignedLongLong:entries[i].FabricId], + @"FabricId", [NSNumber numberWithUnsignedShort:entries[i].VendorId], @"VendorId", + [NSData dataWithBytes:entries[i].Label + 1u length:emberAfStringLength(entries[i].Label)], + @"Label", [NSNumber numberWithUnsignedLongLong:entries[i].NodeId], @"NodeId", nil]; + } + + id array = [NSArray arrayWithObjects:values count:count]; + dispatch_async(callback->mQueue, ^{ + callback->mHandler(nil, @ { @"value" : array }); + callback->Cancel(); + delete callback; + }); + } + } + +private: + ResponseHandler mHandler; + dispatch_queue_t mQueue; +}; + +@interface CHIPCluster () +@property (readonly, nonatomic) dispatch_queue_t callbackQueue; +- (Controller::ClusterBase *)getCluster; +@end + +@implementation CHIPCluster +- (instancetype)initWithDevice:(CHIPDevice *)device endpoint:(EndpointId)endpoint queue:(dispatch_queue_t)queue +{ + if (self = [super init]) { + Controller::ClusterBase * cppCluster = [self getCluster]; + if (cppCluster == nullptr) { + return nil; + } + + if (device == nullptr) { + return nil; + } + + CHIP_ERROR err = cppCluster->Associate([device internalDevice], endpoint); + if (err != CHIP_NO_ERROR) { + return nil; + } + + _callbackQueue = queue; + } + return self; +} + +- (Controller::ClusterBase *)getCluster +{ + return nullptr; +} +@end + +@interface CHIPAccountLogin () +@property (readonly) Controller::AccountLoginCluster cppCluster; +@end + +@implementation CHIPAccountLogin + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)getSetupPIN:(NSString *)tempAccountIdentifier completionHandler:(ResponseHandler)completionHandler +{ + CHIPAccountLoginClusterGetSetupPINResponseCallbackBridge * onSuccess + = new CHIPAccountLoginClusterGetSetupPINResponseCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.GetSetupPIN(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [tempAccountIdentifier dataUsingEncoding:NSUTF8StringEncoding].bytes, + [tempAccountIdentifier lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} +- (void)login:(NSString *)tempAccountIdentifier setupPIN:(NSString *)setupPIN completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.Login(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [tempAccountIdentifier dataUsingEncoding:NSUTF8StringEncoding].bytes, + [tempAccountIdentifier lengthOfBytesUsingEncoding:NSUTF8StringEncoding]), + chip::ByteSpan((const uint8_t *) [setupPIN dataUsingEncoding:NSUTF8StringEncoding].bytes, + [setupPIN lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +@end + +@interface CHIPApplicationBasic () +@property (readonly) Controller::ApplicationBasicCluster cppCluster; +@end + +@implementation CHIPApplicationBasic + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)readAttributeVendorName:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeVendorName(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeVendorId:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeVendorId(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeApplicationName:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeApplicationName(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeProductId:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeProductId(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeApplicationId:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeApplicationId(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeCatalogVendorId:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeCatalogVendorId(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeApplicationSatus:(ResponseHandler)completionHandler +{ + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeApplicationSatus(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +@end + +@interface CHIPApplicationLauncher () +@property (readonly) Controller::ApplicationLauncherCluster cppCluster; +@end + +@implementation CHIPApplicationLauncher + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)launchApp:(NSString *)data + catalogVendorId:(uint16_t)catalogVendorId + applicationId:(NSString *)applicationId + completionHandler:(ResponseHandler)completionHandler +{ + CHIPApplicationLauncherClusterLaunchAppResponseCallbackBridge * onSuccess + = new CHIPApplicationLauncherClusterLaunchAppResponseCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.LaunchApp(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [data dataUsingEncoding:NSUTF8StringEncoding].bytes, + [data lengthOfBytesUsingEncoding:NSUTF8StringEncoding]), + catalogVendorId, + chip::ByteSpan((const uint8_t *) [applicationId dataUsingEncoding:NSUTF8StringEncoding].bytes, + [applicationId lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeApplicationLauncherList:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeApplicationLauncherList(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +@end + +@interface CHIPAudioOutput () +@property (readonly) Controller::AudioOutputCluster cppCluster; +@end + +@implementation CHIPAudioOutput + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)renameOutput:(uint8_t)index name:(NSString *)name completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.RenameOutput(onSuccess->Cancel(), onFailure->Cancel(), index, + chip::ByteSpan((const uint8_t *) [name dataUsingEncoding:NSUTF8StringEncoding].bytes, + [name lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} +- (void)selectOutput:(uint8_t)index completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.SelectOutput(onSuccess->Cancel(), onFailure->Cancel(), index); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeAudioOutputList:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeAudioOutputList(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +@end + +@interface CHIPBarrierControl () +@property (readonly) Controller::BarrierControlCluster cppCluster; +@end + +@implementation CHIPBarrierControl + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)barrierControlGoToPercent:(uint8_t)percentOpen completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.BarrierControlGoToPercent(onSuccess->Cancel(), onFailure->Cancel(), percentOpen); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} +- (void)barrierControlStop:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.BarrierControlStop(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeBarrierMovingState:(ResponseHandler)completionHandler +{ + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierMovingState(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeBarrierSafetyStatus:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierSafetyStatus(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeBarrierCapabilities:(ResponseHandler)completionHandler +{ + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierCapabilities(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeBarrierPosition:(ResponseHandler)completionHandler +{ + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierPosition(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +@end + +@interface CHIPBasic () +@property (readonly) Controller::BasicCluster cppCluster; +@end + +@implementation CHIPBasic + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)mfgSpecificPing:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.MfgSpecificPing(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeInteractionModelVersion:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeInteractionModelVersion(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeVendorName:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeVendorName(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeVendorID:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeVendorID(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeProductName:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeProductName(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeProductID:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeProductID(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeUserLabel:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeUserLabel(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)writeAttributeUserLabel:(NSString *)value completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + NSData * data = [value dataUsingEncoding:NSUTF8StringEncoding]; + CHIP_ERROR err = self.cppCluster.WriteAttributeUserLabel( + onSuccess->Cancel(), onFailure->Cancel(), chip::ByteSpan((const uint8_t *) data.bytes, data.length)); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeLocation:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeLocation(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)writeAttributeLocation:(NSString *)value completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + NSData * data = [value dataUsingEncoding:NSUTF8StringEncoding]; + CHIP_ERROR err = self.cppCluster.WriteAttributeLocation( + onSuccess->Cancel(), onFailure->Cancel(), chip::ByteSpan((const uint8_t *) data.bytes, data.length)); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeHardwareVersion:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeHardwareVersion(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeHardwareVersionString:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeHardwareVersionString(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeSoftwareVersion:(ResponseHandler)completionHandler +{ + CHIPInt32uAttributeCallbackBridge * onSuccess = new CHIPInt32uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeSoftwareVersion(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} - if (device == nullptr) { - return nil; - } +- (void)readAttributeSoftwareVersionString:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } - CHIP_ERROR err = cppCluster->Associate([device internalDevice], endpoint); - if (err != CHIP_NO_ERROR) { - return nil; - } + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } - _callbackQueue = queue; + CHIP_ERROR err = self.cppCluster.ReadAttributeSoftwareVersionString(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } - return self; } -- (Controller::ClusterBase *)getCluster +- (void)readAttributeManufacturingDate:(ResponseHandler)completionHandler { - return nullptr; + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeManufacturingDate(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributePartNumber:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributePartNumber(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeProductURL:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeProductURL(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeProductLabel:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeProductLabel(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeSerialNumber:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeSerialNumber(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeLocalConfigDisabled:(ResponseHandler)completionHandler +{ + CHIPBooleanAttributeCallbackBridge * onSuccess + = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeLocalConfigDisabled(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)writeAttributeLocalConfigDisabled:(uint8_t)value completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.WriteAttributeLocalConfigDisabled(onSuccess->Cancel(), onFailure->Cancel(), value); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } } + @end -@interface CHIPApplicationBasic () -@property (readonly) Controller::ApplicationBasicCluster cppCluster; +@interface CHIPBinding () +@property (readonly) Controller::BindingCluster cppCluster; @end -@implementation CHIPApplicationBasic +@implementation CHIPBinding - (Controller::ClusterBase *)getCluster { return &_cppCluster; } -- (void)readAttributeVendorName:(ResponseHandler)completionHandler +- (void)bind:(uint64_t)nodeId + groupId:(uint16_t)groupId + endpointId:(uint8_t)endpointId + clusterId:(uint16_t)clusterId + completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.Bind(onSuccess->Cancel(), onFailure->Cancel(), nodeId, groupId, endpointId, clusterId); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} +- (void)unbind:(uint64_t)nodeId + groupId:(uint16_t)groupId + endpointId:(uint8_t)endpointId + clusterId:(uint16_t)clusterId + completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2165,7 +3966,7 @@ - (void)readAttributeVendorName:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeVendorName(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.Unbind(onSuccess->Cancel(), onFailure->Cancel(), nodeId, groupId, endpointId, clusterId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2173,7 +3974,7 @@ - (void)readAttributeVendorName:(ResponseHandler)completionHandler } } -- (void)readAttributeVendorId:(ResponseHandler)completionHandler +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -2188,7 +3989,7 @@ - (void)readAttributeVendorId:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeVendorId(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2196,10 +3997,26 @@ - (void)readAttributeVendorId:(ResponseHandler)completionHandler } } -- (void)readAttributeApplicationName:(ResponseHandler)completionHandler +@end + +@interface CHIPColorControl () +@property (readonly) Controller::ColorControlCluster cppCluster; +@end + +@implementation CHIPColorControl + +- (Controller::ClusterBase *)getCluster { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + return &_cppCluster; +} + +- (void)moveColor:(int16_t)rateX + rateY:(int16_t)rateY + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2212,17 +4029,23 @@ - (void)readAttributeApplicationName:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeApplicationName(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.MoveColor(onSuccess->Cancel(), onFailure->Cancel(), rateX, rateY, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeProductId:(ResponseHandler)completionHandler +- (void)moveColorTemperature:(uint8_t)moveMode + rate:(uint16_t)rate + colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum + colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2235,18 +4058,21 @@ - (void)readAttributeProductId:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeProductId(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MoveColorTemperature(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, + colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeApplicationId:(ResponseHandler)completionHandler +- (void)moveHue:(uint8_t)moveMode + rate:(uint8_t)rate + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2259,17 +4085,21 @@ - (void)readAttributeApplicationId:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeApplicationId(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.MoveHue(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeCatalogVendorId:(ResponseHandler)completionHandler +- (void)moveSaturation:(uint8_t)moveMode + rate:(uint8_t)rate + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2282,17 +4112,22 @@ - (void)readAttributeCatalogVendorId:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCatalogVendorId(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.MoveSaturation(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeApplicationSatus:(ResponseHandler)completionHandler +- (void)moveToColor:(uint16_t)colorX + colorY:(uint16_t)colorY + transitionTime:(uint16_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2305,17 +4140,21 @@ - (void)readAttributeApplicationSatus:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeApplicationSatus(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MoveToColor( + onSuccess->Cancel(), onFailure->Cancel(), colorX, colorY, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)moveToColorTemperature:(uint16_t)colorTemperature + transitionTime:(uint16_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2328,28 +4167,20 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MoveToColorTemperature( + onSuccess->Cancel(), onFailure->Cancel(), colorTemperature, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPBarrierControl () -@property (readonly) Controller::BarrierControlCluster cppCluster; -@end - -@implementation CHIPBarrierControl - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)barrierControlGoToPercent:(uint8_t)percentOpen completionHandler:(ResponseHandler)completionHandler +- (void)moveToHue:(uint8_t)hue + direction:(uint8_t)direction + transitionTime:(uint16_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -2364,14 +4195,20 @@ - (void)barrierControlGoToPercent:(uint8_t)percentOpen completionHandler:(Respon return; } - CHIP_ERROR err = self.cppCluster.BarrierControlGoToPercent(onSuccess->Cancel(), onFailure->Cancel(), percentOpen); + CHIP_ERROR err = self.cppCluster.MoveToHue( + onSuccess->Cancel(), onFailure->Cancel(), hue, direction, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)barrierControlStop:(ResponseHandler)completionHandler +- (void)moveToHueAndSaturation:(uint8_t)hue + saturation:(uint8_t)saturation + transitionTime:(uint16_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -2386,17 +4223,21 @@ - (void)barrierControlStop:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.BarrierControlStop(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MoveToHueAndSaturation( + onSuccess->Cancel(), onFailure->Cancel(), hue, saturation, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeBarrierMovingState:(ResponseHandler)completionHandler +- (void)moveToSaturation:(uint8_t)saturation + transitionTime:(uint16_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2409,17 +4250,22 @@ - (void)readAttributeBarrierMovingState:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierMovingState(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MoveToSaturation( + onSuccess->Cancel(), onFailure->Cancel(), saturation, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeBarrierSafetyStatus:(ResponseHandler)completionHandler +- (void)stepColor:(int16_t)stepX + stepY:(int16_t)stepY + transitionTime:(uint16_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2432,17 +4278,24 @@ - (void)readAttributeBarrierSafetyStatus:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierSafetyStatus(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StepColor( + onSuccess->Cancel(), onFailure->Cancel(), stepX, stepY, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeBarrierCapabilities:(ResponseHandler)completionHandler +- (void)stepColorTemperature:(uint8_t)stepMode + stepSize:(uint16_t)stepSize + transitionTime:(uint16_t)transitionTime + colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum + colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2455,17 +4308,22 @@ - (void)readAttributeBarrierCapabilities:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierCapabilities(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StepColorTemperature(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, + transitionTime, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeBarrierPosition:(ResponseHandler)completionHandler +- (void)stepHue:(uint8_t)stepMode + stepSize:(uint8_t)stepSize + transitionTime:(uint8_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2478,17 +4336,22 @@ - (void)readAttributeBarrierPosition:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeBarrierPosition(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StepHue( + onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)stepSaturation:(uint8_t)stepMode + stepSize:(uint8_t)stepSize + transitionTime:(uint8_t)transitionTime + optionsMask:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2501,28 +4364,17 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StepSaturation( + onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPBasic () -@property (readonly) Controller::BasicCluster cppCluster; -@end - -@implementation CHIPBasic - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)mfgSpecificPing:(ResponseHandler)completionHandler +- (void)stopMoveStep:(uint8_t)optionsMask + optionsOverride:(uint8_t)optionsOverride + completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -2537,7 +4389,7 @@ - (void)mfgSpecificPing:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.MfgSpecificPing(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StopMoveStep(onSuccess->Cancel(), onFailure->Cancel(), optionsMask, optionsOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2545,9 +4397,9 @@ - (void)mfgSpecificPing:(ResponseHandler)completionHandler } } -- (void)readAttributeInteractionModelVersion:(ResponseHandler)completionHandler +- (void)readAttributeCurrentHue:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2560,7 +4412,7 @@ - (void)readAttributeInteractionModelVersion:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeInteractionModelVersion(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentHue(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2568,10 +4420,12 @@ - (void)readAttributeInteractionModelVersion:(ResponseHandler)completionHandler } } -- (void)readAttributeVendorName:(ResponseHandler)completionHandler +- (void)configureAttributeCurrentHue:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(uint8_t)change + completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2584,7 +4438,8 @@ - (void)readAttributeVendorName:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeVendorName(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.ConfigureAttributeCurrentHue(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2592,9 +4447,24 @@ - (void)readAttributeVendorName:(ResponseHandler)completionHandler } } -- (void)readAttributeVendorID:(ResponseHandler)completionHandler +- (void)reportAttributeCurrentHue:(ResponseHandler)reportHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentHue(onReport->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeCurrentSaturation:(ResponseHandler)completionHandler +{ + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2607,7 +4477,7 @@ - (void)readAttributeVendorID:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeVendorID(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentSaturation(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2615,10 +4485,12 @@ - (void)readAttributeVendorID:(ResponseHandler)completionHandler } } -- (void)readAttributeProductName:(ResponseHandler)completionHandler +- (void)configureAttributeCurrentSaturation:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(uint8_t)change + completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2631,7 +4503,8 @@ - (void)readAttributeProductName:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeProductName(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentSaturation( + onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2639,7 +4512,22 @@ - (void)readAttributeProductName:(ResponseHandler)completionHandler } } -- (void)readAttributeProductID:(ResponseHandler)completionHandler +- (void)reportAttributeCurrentSaturation:(ResponseHandler)reportHandler +{ + CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentSaturation(onReport->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeRemainingTime:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -2654,7 +4542,7 @@ - (void)readAttributeProductID:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeProductID(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeRemainingTime(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2662,10 +4550,9 @@ - (void)readAttributeProductID:(ResponseHandler)completionHandler } } -- (void)readAttributeUserLabel:(ResponseHandler)completionHandler +- (void)readAttributeCurrentX:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2678,7 +4565,7 @@ - (void)readAttributeUserLabel:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeUserLabel(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentX(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2686,7 +4573,10 @@ - (void)readAttributeUserLabel:(ResponseHandler)completionHandler } } -- (void)writeAttributeUserLabel:(NSString *)value completionHandler:(ResponseHandler)completionHandler +- (void)configureAttributeCurrentX:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(uint16_t)change + completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -2701,9 +4591,8 @@ - (void)writeAttributeUserLabel:(NSString *)value completionHandler:(ResponseHan return; } - NSData * data = [value dataUsingEncoding:NSUTF8StringEncoding]; - CHIP_ERROR err = self.cppCluster.WriteAttributeUserLabel( - onSuccess->Cancel(), onFailure->Cancel(), chip::ByteSpan((const uint8_t *) data.bytes, data.length)); + CHIP_ERROR err + = self.cppCluster.ConfigureAttributeCurrentX(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2711,10 +4600,24 @@ - (void)writeAttributeUserLabel:(NSString *)value completionHandler:(ResponseHan } } -- (void)readAttributeLocation:(ResponseHandler)completionHandler +- (void)reportAttributeCurrentX:(ResponseHandler)reportHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentX(onReport->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeCurrentY:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2727,7 +4630,7 @@ - (void)readAttributeLocation:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeLocation(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentY(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2735,7 +4638,10 @@ - (void)readAttributeLocation:(ResponseHandler)completionHandler } } -- (void)writeAttributeLocation:(NSString *)value completionHandler:(ResponseHandler)completionHandler +- (void)configureAttributeCurrentY:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(uint16_t)change + completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -2750,9 +4656,8 @@ - (void)writeAttributeLocation:(NSString *)value completionHandler:(ResponseHand return; } - NSData * data = [value dataUsingEncoding:NSUTF8StringEncoding]; - CHIP_ERROR err = self.cppCluster.WriteAttributeLocation( - onSuccess->Cancel(), onFailure->Cancel(), chip::ByteSpan((const uint8_t *) data.bytes, data.length)); + CHIP_ERROR err + = self.cppCluster.ConfigureAttributeCurrentY(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2760,9 +4665,24 @@ - (void)writeAttributeLocation:(NSString *)value completionHandler:(ResponseHand } } -- (void)readAttributeHardwareVersion:(ResponseHandler)completionHandler +- (void)reportAttributeCurrentY:(ResponseHandler)reportHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentY(onReport->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeDriftCompensation:(ResponseHandler)completionHandler +{ + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2775,7 +4695,7 @@ - (void)readAttributeHardwareVersion:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeHardwareVersion(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeDriftCompensation(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2783,7 +4703,7 @@ - (void)readAttributeHardwareVersion:(ResponseHandler)completionHandler } } -- (void)readAttributeHardwareVersionString:(ResponseHandler)completionHandler +- (void)readAttributeCompensationText:(ResponseHandler)completionHandler { CHIPStringAttributeCallbackBridge * onSuccess = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); @@ -2799,7 +4719,7 @@ - (void)readAttributeHardwareVersionString:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeHardwareVersionString(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeCompensationText(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2807,9 +4727,9 @@ - (void)readAttributeHardwareVersionString:(ResponseHandler)completionHandler } } -- (void)readAttributeSoftwareVersion:(ResponseHandler)completionHandler +- (void)readAttributeColorTemperature:(ResponseHandler)completionHandler { - CHIPInt32uAttributeCallbackBridge * onSuccess = new CHIPInt32uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2822,7 +4742,7 @@ - (void)readAttributeSoftwareVersion:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeSoftwareVersion(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorTemperature(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2830,10 +4750,12 @@ - (void)readAttributeSoftwareVersion:(ResponseHandler)completionHandler } } -- (void)readAttributeSoftwareVersionString:(ResponseHandler)completionHandler +- (void)configureAttributeColorTemperature:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(uint16_t)change + completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2846,7 +4768,8 @@ - (void)readAttributeSoftwareVersionString:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeSoftwareVersionString(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ConfigureAttributeColorTemperature( + onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2854,34 +4777,24 @@ - (void)readAttributeSoftwareVersionString:(ResponseHandler)completionHandler } } -- (void)readAttributeManufacturingDate:(ResponseHandler)completionHandler +- (void)reportAttributeColorTemperature:(ResponseHandler)reportHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeManufacturingDate(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReportAttributeColorTemperature(onReport->Cancel()); if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)readAttributePartNumber:(ResponseHandler)completionHandler +- (void)readAttributeColorMode:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2894,7 +4807,7 @@ - (void)readAttributePartNumber:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePartNumber(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorMode(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2902,10 +4815,9 @@ - (void)readAttributePartNumber:(ResponseHandler)completionHandler } } -- (void)readAttributeProductURL:(ResponseHandler)completionHandler +- (void)readAttributeColorControlOptions:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2918,7 +4830,7 @@ - (void)readAttributeProductURL:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeProductURL(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorControlOptions(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2926,10 +4838,9 @@ - (void)readAttributeProductURL:(ResponseHandler)completionHandler } } -- (void)readAttributeProductLabel:(ResponseHandler)completionHandler +- (void)writeAttributeColorControlOptions:(uint8_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2942,7 +4853,7 @@ - (void)readAttributeProductLabel:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeProductLabel(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorControlOptions(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2950,10 +4861,9 @@ - (void)readAttributeProductLabel:(ResponseHandler)completionHandler } } -- (void)readAttributeSerialNumber:(ResponseHandler)completionHandler +- (void)readAttributeNumberOfPrimaries:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2966,7 +4876,7 @@ - (void)readAttributeSerialNumber:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeSerialNumber(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeNumberOfPrimaries(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2974,10 +4884,9 @@ - (void)readAttributeSerialNumber:(ResponseHandler)completionHandler } } -- (void)readAttributeLocalConfigDisabled:(ResponseHandler)completionHandler +- (void)readAttributePrimary1X:(ResponseHandler)completionHandler { - CHIPBooleanAttributeCallbackBridge * onSuccess - = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -2990,7 +4899,7 @@ - (void)readAttributeLocalConfigDisabled:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeLocalConfigDisabled(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1X(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -2998,9 +4907,9 @@ - (void)readAttributeLocalConfigDisabled:(ResponseHandler)completionHandler } } -- (void)writeAttributeLocalConfigDisabled:(uint8_t)value completionHandler:(ResponseHandler)completionHandler +- (void)readAttributePrimary1Y:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3013,7 +4922,7 @@ - (void)writeAttributeLocalConfigDisabled:(uint8_t)value completionHandler:(Resp return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeLocalConfigDisabled(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Y(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3021,9 +4930,9 @@ - (void)writeAttributeLocalConfigDisabled:(uint8_t)value completionHandler:(Resp } } -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)readAttributePrimary1Intensity:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3036,7 +4945,7 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Intensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3044,26 +4953,9 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler } } -@end - -@interface CHIPBinding () -@property (readonly) Controller::BindingCluster cppCluster; -@end - -@implementation CHIPBinding - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)bind:(uint64_t)nodeId - groupId:(uint16_t)groupId - endpointId:(uint8_t)endpointId - clusterId:(uint16_t)clusterId - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributePrimary2X:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3076,20 +4968,17 @@ - (void)bind:(uint64_t)nodeId return; } - CHIP_ERROR err = self.cppCluster.Bind(onSuccess->Cancel(), onFailure->Cancel(), nodeId, groupId, endpointId, clusterId); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2X(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)unbind:(uint64_t)nodeId - groupId:(uint16_t)groupId - endpointId:(uint8_t)endpointId - clusterId:(uint16_t)clusterId - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary2Y:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3102,7 +4991,7 @@ - (void)unbind:(uint64_t)nodeId return; } - CHIP_ERROR err = self.cppCluster.Unbind(onSuccess->Cancel(), onFailure->Cancel(), nodeId, groupId, endpointId, clusterId); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Y(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3110,9 +4999,9 @@ - (void)unbind:(uint64_t)nodeId } } -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)readAttributePrimary2Intensity:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3125,7 +5014,7 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Intensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3133,26 +5022,9 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler } } -@end - -@interface CHIPColorControl () -@property (readonly) Controller::ColorControlCluster cppCluster; -@end - -@implementation CHIPColorControl - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)moveColor:(int16_t)rateX - rateY:(int16_t)rateY - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributePrimary3X:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3165,23 +5037,17 @@ - (void)moveColor:(int16_t)rateX return; } - CHIP_ERROR err - = self.cppCluster.MoveColor(onSuccess->Cancel(), onFailure->Cancel(), rateX, rateY, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3X(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveColorTemperature:(uint8_t)moveMode - rate:(uint16_t)rate - colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum - colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary3Y:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3194,21 +5060,17 @@ - (void)moveColorTemperature:(uint8_t)moveMode return; } - CHIP_ERROR err = self.cppCluster.MoveColorTemperature(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, - colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Y(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveHue:(uint8_t)moveMode - rate:(uint8_t)rate - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary3Intensity:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3221,21 +5083,17 @@ - (void)moveHue:(uint8_t)moveMode return; } - CHIP_ERROR err - = self.cppCluster.MoveHue(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Intensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveSaturation:(uint8_t)moveMode - rate:(uint8_t)rate - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary4X:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3248,22 +5106,17 @@ - (void)moveSaturation:(uint8_t)moveMode return; } - CHIP_ERROR err - = self.cppCluster.MoveSaturation(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4X(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveToColor:(uint16_t)colorX - colorY:(uint16_t)colorY - transitionTime:(uint16_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary4Y:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3276,21 +5129,17 @@ - (void)moveToColor:(uint16_t)colorX return; } - CHIP_ERROR err = self.cppCluster.MoveToColor( - onSuccess->Cancel(), onFailure->Cancel(), colorX, colorY, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Y(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveToColorTemperature:(uint16_t)colorTemperature - transitionTime:(uint16_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary4Intensity:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3303,22 +5152,17 @@ - (void)moveToColorTemperature:(uint16_t)colorTemperature return; } - CHIP_ERROR err = self.cppCluster.MoveToColorTemperature( - onSuccess->Cancel(), onFailure->Cancel(), colorTemperature, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Intensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveToHue:(uint8_t)hue - direction:(uint8_t)direction - transitionTime:(uint16_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary5X:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3331,22 +5175,17 @@ - (void)moveToHue:(uint8_t)hue return; } - CHIP_ERROR err = self.cppCluster.MoveToHue( - onSuccess->Cancel(), onFailure->Cancel(), hue, direction, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5X(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveToHueAndSaturation:(uint8_t)hue - saturation:(uint8_t)saturation - transitionTime:(uint16_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary5Y:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3359,21 +5198,17 @@ - (void)moveToHueAndSaturation:(uint8_t)hue return; } - CHIP_ERROR err = self.cppCluster.MoveToHueAndSaturation( - onSuccess->Cancel(), onFailure->Cancel(), hue, saturation, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Y(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveToSaturation:(uint8_t)saturation - transitionTime:(uint16_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary5Intensity:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3386,22 +5221,17 @@ - (void)moveToSaturation:(uint8_t)saturation return; } - CHIP_ERROR err = self.cppCluster.MoveToSaturation( - onSuccess->Cancel(), onFailure->Cancel(), saturation, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Intensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stepColor:(int16_t)stepX - stepY:(int16_t)stepY - transitionTime:(uint16_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary6X:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3414,24 +5244,17 @@ - (void)stepColor:(int16_t)stepX return; } - CHIP_ERROR err = self.cppCluster.StepColor( - onSuccess->Cancel(), onFailure->Cancel(), stepX, stepY, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6X(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stepColorTemperature:(uint8_t)stepMode - stepSize:(uint16_t)stepSize - transitionTime:(uint16_t)transitionTime - colorTemperatureMinimum:(uint16_t)colorTemperatureMinimum - colorTemperatureMaximum:(uint16_t)colorTemperatureMaximum - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary6Y:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3444,22 +5267,17 @@ - (void)stepColorTemperature:(uint8_t)stepMode return; } - CHIP_ERROR err = self.cppCluster.StepColorTemperature(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, - transitionTime, colorTemperatureMinimum, colorTemperatureMaximum, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Y(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stepHue:(uint8_t)stepMode - stepSize:(uint8_t)stepSize - transitionTime:(uint8_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributePrimary6Intensity:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3472,22 +5290,17 @@ - (void)stepHue:(uint8_t)stepMode return; } - CHIP_ERROR err = self.cppCluster.StepHue( - onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Intensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stepSaturation:(uint8_t)stepMode - stepSize:(uint8_t)stepSize - transitionTime:(uint8_t)transitionTime - optionsMask:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeWhitePointX:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3500,17 +5313,15 @@ - (void)stepSaturation:(uint8_t)stepMode return; } - CHIP_ERROR err = self.cppCluster.StepSaturation( - onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointX(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stopMoveStep:(uint8_t)optionsMask - optionsOverride:(uint8_t)optionsOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)writeAttributeWhitePointX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -3525,7 +5336,7 @@ - (void)stopMoveStep:(uint8_t)optionsMask return; } - CHIP_ERROR err = self.cppCluster.StopMoveStep(onSuccess->Cancel(), onFailure->Cancel(), optionsMask, optionsOverride); + CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointX(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3533,9 +5344,9 @@ - (void)stopMoveStep:(uint8_t)optionsMask } } -- (void)readAttributeCurrentHue:(ResponseHandler)completionHandler +- (void)readAttributeWhitePointY:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3548,7 +5359,7 @@ - (void)readAttributeCurrentHue:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentHue(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointY(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3556,10 +5367,7 @@ - (void)readAttributeCurrentHue:(ResponseHandler)completionHandler } } -- (void)configureAttributeCurrentHue:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(uint8_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)writeAttributeWhitePointY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -3574,8 +5382,7 @@ - (void)configureAttributeCurrentHue:(uint16_t)minInterval return; } - CHIP_ERROR err - = self.cppCluster.ConfigureAttributeCurrentHue(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointY(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3583,24 +5390,9 @@ - (void)configureAttributeCurrentHue:(uint16_t)minInterval } } -- (void)reportAttributeCurrentHue:(ResponseHandler)reportHandler -{ - CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentHue(onReport->Cancel()); - if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); - } -} - -- (void)readAttributeCurrentSaturation:(ResponseHandler)completionHandler +- (void)readAttributeColorPointRX:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3613,7 +5405,7 @@ - (void)readAttributeCurrentSaturation:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentSaturation(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRX(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3621,10 +5413,7 @@ - (void)readAttributeCurrentSaturation:(ResponseHandler)completionHandler } } -- (void)configureAttributeCurrentSaturation:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(uint8_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointRX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -3639,8 +5428,7 @@ - (void)configureAttributeCurrentSaturation:(uint16_t)minInterval return; } - CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentSaturation( - onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRX(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3648,22 +5436,7 @@ - (void)configureAttributeCurrentSaturation:(uint16_t)minInterval } } -- (void)reportAttributeCurrentSaturation:(ResponseHandler)reportHandler -{ - CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentSaturation(onReport->Cancel()); - if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); - } -} - -- (void)readAttributeRemainingTime:(ResponseHandler)completionHandler +- (void)readAttributeColorPointRY:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -3678,7 +5451,7 @@ - (void)readAttributeRemainingTime:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeRemainingTime(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRY(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3686,9 +5459,9 @@ - (void)readAttributeRemainingTime:(ResponseHandler)completionHandler } } -- (void)readAttributeCurrentX:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointRY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3701,7 +5474,7 @@ - (void)readAttributeCurrentX:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentX(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRY(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3709,12 +5482,9 @@ - (void)readAttributeCurrentX:(ResponseHandler)completionHandler } } -- (void)configureAttributeCurrentX:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(uint16_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeColorPointRIntensity:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3727,8 +5497,7 @@ - (void)configureAttributeCurrentX:(uint16_t)minInterval return; } - CHIP_ERROR err - = self.cppCluster.ConfigureAttributeCurrentX(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRIntensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3736,24 +5505,9 @@ - (void)configureAttributeCurrentX:(uint16_t)minInterval } } -- (void)reportAttributeCurrentX:(ResponseHandler)reportHandler -{ - CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentX(onReport->Cancel()); - if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); - } -} - -- (void)readAttributeCurrentY:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointRIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3766,7 +5520,7 @@ - (void)readAttributeCurrentY:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentY(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRIntensity(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3774,12 +5528,9 @@ - (void)readAttributeCurrentY:(ResponseHandler)completionHandler } } -- (void)configureAttributeCurrentY:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(uint16_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeColorPointGX:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3792,8 +5543,7 @@ - (void)configureAttributeCurrentY:(uint16_t)minInterval return; } - CHIP_ERROR err - = self.cppCluster.ConfigureAttributeCurrentY(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGX(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3801,24 +5551,32 @@ - (void)configureAttributeCurrentY:(uint16_t)minInterval } } -- (void)reportAttributeCurrentY:(ResponseHandler)reportHandler +- (void)writeAttributeColorPointGX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentY(onReport->Cancel()); + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGX(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)readAttributeDriftCompensation:(ResponseHandler)completionHandler +- (void)readAttributeColorPointGY:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3831,7 +5589,7 @@ - (void)readAttributeDriftCompensation:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeDriftCompensation(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGY(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3839,10 +5597,9 @@ - (void)readAttributeDriftCompensation:(ResponseHandler)completionHandler } } -- (void)readAttributeCompensationText:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointGY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3855,7 +5612,7 @@ - (void)readAttributeCompensationText:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCompensationText(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGY(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3863,9 +5620,9 @@ - (void)readAttributeCompensationText:(ResponseHandler)completionHandler } } -- (void)readAttributeColorTemperature:(ResponseHandler)completionHandler +- (void)readAttributeColorPointGIntensity:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3878,7 +5635,7 @@ - (void)readAttributeColorTemperature:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorTemperature(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGIntensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3886,10 +5643,7 @@ - (void)readAttributeColorTemperature:(ResponseHandler)completionHandler } } -- (void)configureAttributeColorTemperature:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(uint16_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointGIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -3904,8 +5658,7 @@ - (void)configureAttributeColorTemperature:(uint16_t)minInterval return; } - CHIP_ERROR err = self.cppCluster.ConfigureAttributeColorTemperature( - onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGIntensity(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3913,24 +5666,32 @@ - (void)configureAttributeColorTemperature:(uint16_t)minInterval } } -- (void)reportAttributeColorTemperature:(ResponseHandler)reportHandler +- (void)readAttributeColorPointBX:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onReport = new CHIPInt16uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.ReportAttributeColorTemperature(onReport->Cancel()); + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBX(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)readAttributeColorMode:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointBX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3943,7 +5704,7 @@ - (void)readAttributeColorMode:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorMode(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBX(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3951,9 +5712,9 @@ - (void)readAttributeColorMode:(ResponseHandler)completionHandler } } -- (void)readAttributeColorControlOptions:(ResponseHandler)completionHandler +- (void)readAttributeColorPointBY:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -3966,7 +5727,7 @@ - (void)readAttributeColorControlOptions:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorControlOptions(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBY(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3974,7 +5735,7 @@ - (void)readAttributeColorControlOptions:(ResponseHandler)completionHandler } } -- (void)writeAttributeColorControlOptions:(uint8_t)value completionHandler:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointBY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -3989,7 +5750,7 @@ - (void)writeAttributeColorControlOptions:(uint8_t)value completionHandler:(Resp return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorControlOptions(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBY(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -3997,7 +5758,7 @@ - (void)writeAttributeColorControlOptions:(uint8_t)value completionHandler:(Resp } } -- (void)readAttributeNumberOfPrimaries:(ResponseHandler)completionHandler +- (void)readAttributeColorPointBIntensity:(ResponseHandler)completionHandler { CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4012,7 +5773,7 @@ - (void)readAttributeNumberOfPrimaries:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeNumberOfPrimaries(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBIntensity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4020,9 +5781,9 @@ - (void)readAttributeNumberOfPrimaries:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary1X:(ResponseHandler)completionHandler +- (void)writeAttributeColorPointBIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4035,7 +5796,7 @@ - (void)readAttributePrimary1X:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1X(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBIntensity(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4043,7 +5804,7 @@ - (void)readAttributePrimary1X:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary1Y:(ResponseHandler)completionHandler +- (void)readAttributeEnhancedCurrentHue:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4058,7 +5819,7 @@ - (void)readAttributePrimary1Y:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Y(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedCurrentHue(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4066,7 +5827,7 @@ - (void)readAttributePrimary1Y:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary1Intensity:(ResponseHandler)completionHandler +- (void)readAttributeEnhancedColorMode:(ResponseHandler)completionHandler { CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4081,7 +5842,7 @@ - (void)readAttributePrimary1Intensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary1Intensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedColorMode(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4089,9 +5850,9 @@ - (void)readAttributePrimary1Intensity:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary2X:(ResponseHandler)completionHandler +- (void)readAttributeColorLoopActive:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4104,7 +5865,7 @@ - (void)readAttributePrimary2X:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2X(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopActive(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4112,9 +5873,9 @@ - (void)readAttributePrimary2X:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary2Y:(ResponseHandler)completionHandler +- (void)readAttributeColorLoopDirection:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4127,7 +5888,7 @@ - (void)readAttributePrimary2Y:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Y(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopDirection(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4135,9 +5896,9 @@ - (void)readAttributePrimary2Y:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary2Intensity:(ResponseHandler)completionHandler +- (void)readAttributeColorLoopTime:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4150,7 +5911,7 @@ - (void)readAttributePrimary2Intensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary2Intensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopTime(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4158,7 +5919,7 @@ - (void)readAttributePrimary2Intensity:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary3X:(ResponseHandler)completionHandler +- (void)readAttributeColorCapabilities:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4173,7 +5934,7 @@ - (void)readAttributePrimary3X:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3X(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorCapabilities(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4181,7 +5942,7 @@ - (void)readAttributePrimary3X:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary3Y:(ResponseHandler)completionHandler +- (void)readAttributeColorTempPhysicalMin:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4196,7 +5957,7 @@ - (void)readAttributePrimary3Y:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Y(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMin(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4204,9 +5965,9 @@ - (void)readAttributePrimary3Y:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary3Intensity:(ResponseHandler)completionHandler +- (void)readAttributeColorTempPhysicalMax:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4219,7 +5980,7 @@ - (void)readAttributePrimary3Intensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary3Intensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMax(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4227,7 +5988,7 @@ - (void)readAttributePrimary3Intensity:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary4X:(ResponseHandler)completionHandler +- (void)readAttributeCoupleColorTempToLevelMinMireds:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4242,7 +6003,7 @@ - (void)readAttributePrimary4X:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4X(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeCoupleColorTempToLevelMinMireds(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4250,7 +6011,7 @@ - (void)readAttributePrimary4X:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary4Y:(ResponseHandler)completionHandler +- (void)readAttributeStartUpColorTemperatureMireds:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4265,7 +6026,7 @@ - (void)readAttributePrimary4Y:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Y(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeStartUpColorTemperatureMireds(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4273,9 +6034,9 @@ - (void)readAttributePrimary4Y:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary4Intensity:(ResponseHandler)completionHandler +- (void)writeAttributeStartUpColorTemperatureMireds:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4288,7 +6049,7 @@ - (void)readAttributePrimary4Intensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary4Intensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeStartUpColorTemperatureMireds(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4296,7 +6057,7 @@ - (void)readAttributePrimary4Intensity:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary5X:(ResponseHandler)completionHandler +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4311,7 +6072,7 @@ - (void)readAttributePrimary5X:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5X(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4319,9 +6080,23 @@ - (void)readAttributePrimary5X:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary5Y:(ResponseHandler)completionHandler +@end + +@interface CHIPContentLaunch () +@property (readonly) Controller::ContentLaunchCluster cppCluster; +@end + +@implementation CHIPContentLaunch + +- (Controller::ClusterBase *)getCluster { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)launchContent:(uint8_t)autoPlay data:(NSString *)data completionHandler:(ResponseHandler)completionHandler +{ + CHIPContentLaunchClusterLaunchContentResponseCallbackBridge * onSuccess + = new CHIPContentLaunchClusterLaunchContentResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4334,17 +6109,21 @@ - (void)readAttributePrimary5Y:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Y(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.LaunchContent(onSuccess->Cancel(), onFailure->Cancel(), autoPlay, + chip::ByteSpan((const uint8_t *) [data dataUsingEncoding:NSUTF8StringEncoding].bytes, + [data lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributePrimary5Intensity:(ResponseHandler)completionHandler +- (void)launchURL:(NSString *)contentURL + displayString:(NSString *)displayString + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPContentLaunchClusterLaunchURLResponseCallbackBridge * onSuccess + = new CHIPContentLaunchClusterLaunchURLResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4357,7 +6136,11 @@ - (void)readAttributePrimary5Intensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary5Intensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.LaunchURL(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [contentURL dataUsingEncoding:NSUTF8StringEncoding].bytes, + [contentURL lengthOfBytesUsingEncoding:NSUTF8StringEncoding]), + chip::ByteSpan((const uint8_t *) [displayString dataUsingEncoding:NSUTF8StringEncoding].bytes, + [displayString lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4365,9 +6148,10 @@ - (void)readAttributePrimary5Intensity:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary6X:(ResponseHandler)completionHandler +- (void)readAttributeAcceptsHeaderList:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4380,7 +6164,7 @@ - (void)readAttributePrimary6X:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6X(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeAcceptsHeaderList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4388,9 +6172,10 @@ - (void)readAttributePrimary6X:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary6Y:(ResponseHandler)completionHandler +- (void)readAttributeSupportedStreamingTypes:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4403,7 +6188,7 @@ - (void)readAttributePrimary6Y:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Y(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeSupportedStreamingTypes(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4411,9 +6196,9 @@ - (void)readAttributePrimary6Y:(ResponseHandler)completionHandler } } -- (void)readAttributePrimary6Intensity:(ResponseHandler)completionHandler +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4426,7 +6211,7 @@ - (void)readAttributePrimary6Intensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePrimary6Intensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4434,9 +6219,23 @@ - (void)readAttributePrimary6Intensity:(ResponseHandler)completionHandler } } -- (void)readAttributeWhitePointX:(ResponseHandler)completionHandler +@end + +@interface CHIPDescriptor () +@property (readonly) Controller::DescriptorCluster cppCluster; +@end + +@implementation CHIPDescriptor + +- (Controller::ClusterBase *)getCluster { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)readAttributeDeviceList:(ResponseHandler)completionHandler +{ + CHIPDescriptorDeviceListAttributeCallbackBridge * onSuccess + = new CHIPDescriptorDeviceListAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4449,7 +6248,7 @@ - (void)readAttributeWhitePointX:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointX(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeDeviceList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4457,9 +6256,10 @@ - (void)readAttributeWhitePointX:(ResponseHandler)completionHandler } } -- (void)writeAttributeWhitePointX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeServerList:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDescriptorServerListAttributeCallbackBridge * onSuccess + = new CHIPDescriptorServerListAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4472,7 +6272,7 @@ - (void)writeAttributeWhitePointX:(uint16_t)value completionHandler:(ResponseHan return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointX(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ReadAttributeServerList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4480,9 +6280,10 @@ - (void)writeAttributeWhitePointX:(uint16_t)value completionHandler:(ResponseHan } } -- (void)readAttributeWhitePointY:(ResponseHandler)completionHandler +- (void)readAttributeClientList:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDescriptorClientListAttributeCallbackBridge * onSuccess + = new CHIPDescriptorClientListAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4495,7 +6296,7 @@ - (void)readAttributeWhitePointY:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeWhitePointY(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeClientList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4503,9 +6304,10 @@ - (void)readAttributeWhitePointY:(ResponseHandler)completionHandler } } -- (void)writeAttributeWhitePointY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)readAttributePartsList:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDescriptorPartsListAttributeCallbackBridge * onSuccess + = new CHIPDescriptorPartsListAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4518,7 +6320,7 @@ - (void)writeAttributeWhitePointY:(uint16_t)value completionHandler:(ResponseHan return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeWhitePointY(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ReadAttributePartsList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4526,7 +6328,7 @@ - (void)writeAttributeWhitePointY:(uint16_t)value completionHandler:(ResponseHan } } -- (void)readAttributeColorPointRX:(ResponseHandler)completionHandler +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -4541,7 +6343,7 @@ - (void)readAttributeColorPointRX:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRX(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -4549,9 +6351,23 @@ - (void)readAttributeColorPointRX:(ResponseHandler)completionHandler } } -- (void)writeAttributeColorPointRX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +@end + +@interface CHIPDoorLock () +@property (readonly) Controller::DoorLockCluster cppCluster; +@end + +@implementation CHIPDoorLock + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)clearAllPins:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterClearAllPinsResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterClearAllPinsResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4564,17 +6380,17 @@ - (void)writeAttributeColorPointRX:(uint16_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRX(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ClearAllPins(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointRY:(ResponseHandler)completionHandler +- (void)clearAllRfids:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4587,17 +6403,17 @@ - (void)readAttributeColorPointRY:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRY(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ClearAllRfids(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointRY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)clearHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4610,17 +6426,17 @@ - (void)writeAttributeColorPointRY:(uint16_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRY(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ClearHolidaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointRIntensity:(ResponseHandler)completionHandler +- (void)clearPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterClearPinResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterClearPinResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4633,17 +6449,17 @@ - (void)readAttributeColorPointRIntensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointRIntensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ClearPin(onSuccess->Cancel(), onFailure->Cancel(), userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointRIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler +- (void)clearRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterClearRfidResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterClearRfidResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4656,17 +6472,17 @@ - (void)writeAttributeColorPointRIntensity:(uint8_t)value completionHandler:(Res return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointRIntensity(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ClearRfid(onSuccess->Cancel(), onFailure->Cancel(), userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointGX:(ResponseHandler)completionHandler +- (void)clearWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4679,17 +6495,17 @@ - (void)readAttributeColorPointGX:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGX(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ClearWeekdaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointGX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)clearYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4702,17 +6518,17 @@ - (void)writeAttributeColorPointGX:(uint16_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGX(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ClearYeardaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointGY:(ResponseHandler)completionHandler +- (void)getHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4725,17 +6541,17 @@ - (void)readAttributeColorPointGY:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGY(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.GetHolidaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointGY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)getLogRecord:(uint16_t)logIndex completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterGetLogRecordResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterGetLogRecordResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4748,17 +6564,17 @@ - (void)writeAttributeColorPointGY:(uint16_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGY(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.GetLogRecord(onSuccess->Cancel(), onFailure->Cancel(), logIndex); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointGIntensity:(ResponseHandler)completionHandler +- (void)getPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterGetPinResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterGetPinResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4771,17 +6587,17 @@ - (void)readAttributeColorPointGIntensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointGIntensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.GetPin(onSuccess->Cancel(), onFailure->Cancel(), userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointGIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler +- (void)getRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterGetRfidResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterGetRfidResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4794,17 +6610,17 @@ - (void)writeAttributeColorPointGIntensity:(uint8_t)value completionHandler:(Res return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointGIntensity(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.GetRfid(onSuccess->Cancel(), onFailure->Cancel(), userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointBX:(ResponseHandler)completionHandler +- (void)getUserType:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterGetUserTypeResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterGetUserTypeResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4817,17 +6633,17 @@ - (void)readAttributeColorPointBX:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBX(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.GetUserType(onSuccess->Cancel(), onFailure->Cancel(), userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointBX:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)getWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4840,17 +6656,17 @@ - (void)writeAttributeColorPointBX:(uint16_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBX(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.GetWeekdaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointBY:(ResponseHandler)completionHandler +- (void)getYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4863,17 +6679,17 @@ - (void)readAttributeColorPointBY:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBY(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.GetYeardaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointBY:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)lockDoor:(NSString *)pin completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterLockDoorResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterLockDoorResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4886,17 +6702,23 @@ - (void)writeAttributeColorPointBY:(uint16_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBY(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.LockDoor(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, + [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorPointBIntensity:(ResponseHandler)completionHandler +- (void)setHolidaySchedule:(uint8_t)scheduleId + localStartTime:(uint32_t)localStartTime + localEndTime:(uint32_t)localEndTime + operatingModeDuringHoliday:(uint8_t)operatingModeDuringHoliday + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4909,17 +6731,22 @@ - (void)readAttributeColorPointBIntensity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorPointBIntensity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SetHolidaySchedule( + onSuccess->Cancel(), onFailure->Cancel(), scheduleId, localStartTime, localEndTime, operatingModeDuringHoliday); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeColorPointBIntensity:(uint8_t)value completionHandler:(ResponseHandler)completionHandler +- (void)setPin:(uint16_t)userId + userStatus:(uint8_t)userStatus + userType:(uint8_t)userType + pin:(NSString *)pin + completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterSetPinResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterSetPinResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4932,17 +6759,23 @@ - (void)writeAttributeColorPointBIntensity:(uint8_t)value completionHandler:(Res return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeColorPointBIntensity(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.SetPin(onSuccess->Cancel(), onFailure->Cancel(), userId, userStatus, userType, + chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, + [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeEnhancedCurrentHue:(ResponseHandler)completionHandler +- (void)setRfid:(uint16_t)userId + userStatus:(uint8_t)userStatus + userType:(uint8_t)userType + id:(NSString *)id + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterSetRfidResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterSetRfidResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4955,17 +6788,19 @@ - (void)readAttributeEnhancedCurrentHue:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedCurrentHue(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SetRfid(onSuccess->Cancel(), onFailure->Cancel(), userId, userStatus, userType, + chip::ByteSpan((const uint8_t *) [id dataUsingEncoding:NSUTF8StringEncoding].bytes, + [id lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeEnhancedColorMode:(ResponseHandler)completionHandler +- (void)setUserType:(uint16_t)userId userType:(uint8_t)userType completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterSetUserTypeResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterSetUserTypeResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -4978,17 +6813,24 @@ - (void)readAttributeEnhancedColorMode:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeEnhancedColorMode(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SetUserType(onSuccess->Cancel(), onFailure->Cancel(), userId, userType); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorLoopActive:(ResponseHandler)completionHandler +- (void)setWeekdaySchedule:(uint8_t)scheduleId + userId:(uint16_t)userId + daysMask:(uint8_t)daysMask + startHour:(uint8_t)startHour + startMinute:(uint8_t)startMinute + endHour:(uint8_t)endHour + endMinute:(uint8_t)endMinute + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5001,17 +6843,22 @@ - (void)readAttributeColorLoopActive:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopActive(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SetWeekdaySchedule( + onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId, daysMask, startHour, startMinute, endHour, endMinute); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorLoopDirection:(ResponseHandler)completionHandler +- (void)setYeardaySchedule:(uint8_t)scheduleId + userId:(uint16_t)userId + localStartTime:(uint32_t)localStartTime + localEndTime:(uint32_t)localEndTime + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5024,17 +6871,18 @@ - (void)readAttributeColorLoopDirection:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopDirection(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SetYeardaySchedule( + onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId, localStartTime, localEndTime); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorLoopTime:(ResponseHandler)completionHandler +- (void)unlockDoor:(NSString *)pin completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterUnlockDoorResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterUnlockDoorResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5047,17 +6895,19 @@ - (void)readAttributeColorLoopTime:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorLoopTime(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.UnlockDoor(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, + [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeColorCapabilities:(ResponseHandler)completionHandler +- (void)unlockWithTimeout:(uint16_t)timeoutInSeconds pin:(NSString *)pin completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge * onSuccess + = new CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5070,7 +6920,9 @@ - (void)readAttributeColorCapabilities:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorCapabilities(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.UnlockWithTimeout(onSuccess->Cancel(), onFailure->Cancel(), timeoutInSeconds, + chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, + [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5078,9 +6930,9 @@ - (void)readAttributeColorCapabilities:(ResponseHandler)completionHandler } } -- (void)readAttributeColorTempPhysicalMin:(ResponseHandler)completionHandler +- (void)readAttributeLockState:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5093,7 +6945,7 @@ - (void)readAttributeColorTempPhysicalMin:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMin(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeLockState(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5101,9 +6953,11 @@ - (void)readAttributeColorTempPhysicalMin:(ResponseHandler)completionHandler } } -- (void)readAttributeColorTempPhysicalMax:(ResponseHandler)completionHandler +- (void)configureAttributeLockState:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5116,7 +6970,8 @@ - (void)readAttributeColorTempPhysicalMax:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeColorTempPhysicalMax(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.ConfigureAttributeLockState(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5124,32 +6979,24 @@ - (void)readAttributeColorTempPhysicalMax:(ResponseHandler)completionHandler } } -- (void)readAttributeCoupleColorTempToLevelMinMireds:(ResponseHandler)completionHandler +- (void)reportAttributeLockState:(ResponseHandler)reportHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCoupleColorTempToLevelMinMireds(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReportAttributeLockState(onReport->Cancel()); if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)readAttributeStartUpColorTemperatureMireds:(ResponseHandler)completionHandler +- (void)readAttributeLockType:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5162,7 +7009,7 @@ - (void)readAttributeStartUpColorTemperatureMireds:(ResponseHandler)completionHa return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeStartUpColorTemperatureMireds(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeLockType(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5170,9 +7017,10 @@ - (void)readAttributeStartUpColorTemperatureMireds:(ResponseHandler)completionHa } } -- (void)writeAttributeStartUpColorTemperatureMireds:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeActuatorEnabled:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPBooleanAttributeCallbackBridge * onSuccess + = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5185,7 +7033,7 @@ - (void)writeAttributeStartUpColorTemperatureMireds:(uint16_t)value completionHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeStartUpColorTemperatureMireds(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ReadAttributeActuatorEnabled(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5218,21 +7066,24 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler @end -@interface CHIPDescriptor () -@property (readonly) Controller::DescriptorCluster cppCluster; +@interface CHIPGeneralCommissioning () +@property (readonly) Controller::GeneralCommissioningCluster cppCluster; @end -@implementation CHIPDescriptor +@implementation CHIPGeneralCommissioning - (Controller::ClusterBase *)getCluster { return &_cppCluster; } -- (void)readAttributeDeviceList:(ResponseHandler)completionHandler +- (void)armFailSafe:(uint16_t)expiryLengthSeconds + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPDescriptorDeviceListAttributeCallbackBridge * onSuccess - = new CHIPDescriptorDeviceListAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGeneralCommissioningClusterArmFailSafeResponseCallbackBridge * onSuccess + = new CHIPGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5245,18 +7096,18 @@ - (void)readAttributeDeviceList:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeDeviceList(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.ArmFailSafe(onSuccess->Cancel(), onFailure->Cancel(), expiryLengthSeconds, breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeServerList:(ResponseHandler)completionHandler +- (void)commissioningComplete:(ResponseHandler)completionHandler { - CHIPDescriptorServerListAttributeCallbackBridge * onSuccess - = new CHIPDescriptorServerListAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge * onSuccess + = new CHIPGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5269,18 +7120,21 @@ - (void)readAttributeServerList:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeServerList(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.CommissioningComplete(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClientList:(ResponseHandler)completionHandler +- (void)setRegulatoryConfig:(uint8_t)location + countryCode:(NSString *)countryCode + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPDescriptorClientListAttributeCallbackBridge * onSuccess - = new CHIPDescriptorClientListAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge * onSuccess + = new CHIPGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5293,7 +7147,10 @@ - (void)readAttributeClientList:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClientList(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SetRegulatoryConfig(onSuccess->Cancel(), onFailure->Cancel(), location, + chip::ByteSpan((const uint8_t *) [countryCode dataUsingEncoding:NSUTF8StringEncoding].bytes, + [countryCode lengthOfBytesUsingEncoding:NSUTF8StringEncoding]), + breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5301,10 +7158,10 @@ - (void)readAttributeClientList:(ResponseHandler)completionHandler } } -- (void)readAttributePartsList:(ResponseHandler)completionHandler +- (void)readAttributeFabricId:(ResponseHandler)completionHandler { - CHIPDescriptorPartsListAttributeCallbackBridge * onSuccess - = new CHIPDescriptorPartsListAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5317,7 +7174,7 @@ - (void)readAttributePartsList:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributePartsList(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeFabricId(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5325,9 +7182,9 @@ - (void)readAttributePartsList:(ResponseHandler)completionHandler } } -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)readAttributeBreadcrumb:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt64uAttributeCallbackBridge * onSuccess = new CHIPInt64uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5340,7 +7197,7 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeBreadcrumb(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -5348,23 +7205,9 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler } } -@end - -@interface CHIPDoorLock () -@property (readonly) Controller::DoorLockCluster cppCluster; -@end - -@implementation CHIPDoorLock - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)clearAllPins:(ResponseHandler)completionHandler +- (void)writeAttributeBreadcrumb:(uint64_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPDoorLockClusterClearAllPinsResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterClearAllPinsResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5377,17 +7220,17 @@ - (void)clearAllPins:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ClearAllPins(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.WriteAttributeBreadcrumb(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)clearAllRfids:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterClearAllRfidsResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5400,40 +7243,31 @@ - (void)clearAllRfids:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ClearAllRfids(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)clearHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler -{ - CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterClearHolidayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } +@end - CHIP_ERROR err = self.cppCluster.ClearHolidaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId); - if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); - } +@interface CHIPGroupKeyManagement () +@property (readonly) Controller::GroupKeyManagementCluster cppCluster; +@end + +@implementation CHIPGroupKeyManagement + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; } -- (void)clearPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeGroups:(ResponseHandler)completionHandler { - CHIPDoorLockClusterClearPinResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterClearPinResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGroupKeyManagementGroupsAttributeCallbackBridge * onSuccess + = new CHIPGroupKeyManagementGroupsAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5446,17 +7280,18 @@ - (void)clearPin:(uint16_t)userId completionHandler:(ResponseHandler)completionH return; } - CHIP_ERROR err = self.cppCluster.ClearPin(onSuccess->Cancel(), onFailure->Cancel(), userId); + CHIP_ERROR err = self.cppCluster.ReadAttributeGroups(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)clearRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeGroupKeys:(ResponseHandler)completionHandler { - CHIPDoorLockClusterClearRfidResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterClearRfidResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge * onSuccess + = new CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5469,17 +7304,17 @@ - (void)clearRfid:(uint16_t)userId completionHandler:(ResponseHandler)completion return; } - CHIP_ERROR err = self.cppCluster.ClearRfid(onSuccess->Cancel(), onFailure->Cancel(), userId); + CHIP_ERROR err = self.cppCluster.ReadAttributeGroupKeys(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)clearWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterClearWeekdayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5492,40 +7327,31 @@ - (void)clearWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId complet return; } - CHIP_ERROR err = self.cppCluster.ClearWeekdaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)clearYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler -{ - CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterClearYeardayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } +@end - CHIP_ERROR err = self.cppCluster.ClearYeardaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); - if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); - } +@interface CHIPGroups () +@property (readonly) Controller::GroupsCluster cppCluster; +@end + +@implementation CHIPGroups + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; } -- (void)getHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandler)completionHandler + +- (void)addGroup:(uint16_t)groupId groupName:(NSString *)groupName completionHandler:(ResponseHandler)completionHandler { - CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterGetHolidayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGroupsClusterAddGroupResponseCallbackBridge * onSuccess + = new CHIPGroupsClusterAddGroupResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5538,17 +7364,18 @@ - (void)getHolidaySchedule:(uint8_t)scheduleId completionHandler:(ResponseHandle return; } - CHIP_ERROR err = self.cppCluster.GetHolidaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId); + CHIP_ERROR err = self.cppCluster.AddGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId, + chip::ByteSpan((const uint8_t *) [groupName dataUsingEncoding:NSUTF8StringEncoding].bytes, + [groupName lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getLogRecord:(uint16_t)logIndex completionHandler:(ResponseHandler)completionHandler +- (void)addGroupIfIdentifying:(uint16_t)groupId groupName:(NSString *)groupName completionHandler:(ResponseHandler)completionHandler { - CHIPDoorLockClusterGetLogRecordResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterGetLogRecordResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5561,17 +7388,19 @@ - (void)getLogRecord:(uint16_t)logIndex completionHandler:(ResponseHandler)compl return; } - CHIP_ERROR err = self.cppCluster.GetLogRecord(onSuccess->Cancel(), onFailure->Cancel(), logIndex); + CHIP_ERROR err = self.cppCluster.AddGroupIfIdentifying(onSuccess->Cancel(), onFailure->Cancel(), groupId, + chip::ByteSpan((const uint8_t *) [groupName dataUsingEncoding:NSUTF8StringEncoding].bytes, + [groupName lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler +- (void)getGroupMembership:(uint8_t)groupCount groupList:(uint16_t)groupList completionHandler:(ResponseHandler)completionHandler { - CHIPDoorLockClusterGetPinResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterGetPinResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge * onSuccess + = new CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5584,17 +7413,16 @@ - (void)getPin:(uint16_t)userId completionHandler:(ResponseHandler)completionHan return; } - CHIP_ERROR err = self.cppCluster.GetPin(onSuccess->Cancel(), onFailure->Cancel(), userId); + CHIP_ERROR err = self.cppCluster.GetGroupMembership(onSuccess->Cancel(), onFailure->Cancel(), groupCount, groupList); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler +- (void)removeAllGroups:(ResponseHandler)completionHandler { - CHIPDoorLockClusterGetRfidResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterGetRfidResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5607,17 +7435,17 @@ - (void)getRfid:(uint16_t)userId completionHandler:(ResponseHandler)completionHa return; } - CHIP_ERROR err = self.cppCluster.GetRfid(onSuccess->Cancel(), onFailure->Cancel(), userId); + CHIP_ERROR err = self.cppCluster.RemoveAllGroups(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getUserType:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler +- (void)removeGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler { - CHIPDoorLockClusterGetUserTypeResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterGetUserTypeResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGroupsClusterRemoveGroupResponseCallbackBridge * onSuccess + = new CHIPGroupsClusterRemoveGroupResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5630,17 +7458,17 @@ - (void)getUserType:(uint16_t)userId completionHandler:(ResponseHandler)completi return; } - CHIP_ERROR err = self.cppCluster.GetUserType(onSuccess->Cancel(), onFailure->Cancel(), userId); + CHIP_ERROR err = self.cppCluster.RemoveGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler +- (void)viewGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler { - CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterGetWeekdayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPGroupsClusterViewGroupResponseCallbackBridge * onSuccess + = new CHIPGroupsClusterViewGroupResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5653,17 +7481,17 @@ - (void)getWeekdaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completio return; } - CHIP_ERROR err = self.cppCluster.GetWeekdaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); + CHIP_ERROR err = self.cppCluster.ViewGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeNameSupport:(ResponseHandler)completionHandler { - CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterGetYeardayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5676,17 +7504,17 @@ - (void)getYeardaySchedule:(uint8_t)scheduleId userId:(uint16_t)userId completio return; } - CHIP_ERROR err = self.cppCluster.GetYeardaySchedule(onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId); + CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)lockDoor:(NSString *)pin completionHandler:(ResponseHandler)completionHandler -{ - CHIPDoorLockClusterLockDoorResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterLockDoorResponseCallbackBridge(completionHandler, [self callbackQueue]); + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5699,23 +7527,30 @@ - (void)lockDoor:(NSString *)pin completionHandler:(ResponseHandler)completionHa return; } - CHIP_ERROR err = self.cppCluster.LockDoor(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, - [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)setHolidaySchedule:(uint8_t)scheduleId - localStartTime:(uint32_t)localStartTime - localEndTime:(uint32_t)localEndTime - operatingModeDuringHoliday:(uint8_t)operatingModeDuringHoliday - completionHandler:(ResponseHandler)completionHandler + +@end + +@interface CHIPIdentify () +@property (readonly) Controller::IdentifyCluster cppCluster; +@end + +@implementation CHIPIdentify + +- (Controller::ClusterBase *)getCluster { - CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterSetHolidayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)identify:(uint16_t)identifyTime completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5728,22 +7563,17 @@ - (void)setHolidaySchedule:(uint8_t)scheduleId return; } - CHIP_ERROR err = self.cppCluster.SetHolidaySchedule( - onSuccess->Cancel(), onFailure->Cancel(), scheduleId, localStartTime, localEndTime, operatingModeDuringHoliday); + CHIP_ERROR err = self.cppCluster.Identify(onSuccess->Cancel(), onFailure->Cancel(), identifyTime); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)setPin:(uint16_t)userId - userStatus:(uint8_t)userStatus - userType:(uint8_t)userType - pin:(NSString *)pin - completionHandler:(ResponseHandler)completionHandler +- (void)identifyQuery:(ResponseHandler)completionHandler { - CHIPDoorLockClusterSetPinResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterSetPinResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge * onSuccess + = new CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5756,23 +7586,17 @@ - (void)setPin:(uint16_t)userId return; } - CHIP_ERROR err = self.cppCluster.SetPin(onSuccess->Cancel(), onFailure->Cancel(), userId, userStatus, userType, - chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, - [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.IdentifyQuery(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)setRfid:(uint16_t)userId - userStatus:(uint8_t)userStatus - userType:(uint8_t)userType - id:(NSString *)id - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeIdentifyTime:(ResponseHandler)completionHandler { - CHIPDoorLockClusterSetRfidResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterSetRfidResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5785,19 +7609,17 @@ - (void)setRfid:(uint16_t)userId return; } - CHIP_ERROR err = self.cppCluster.SetRfid(onSuccess->Cancel(), onFailure->Cancel(), userId, userStatus, userType, - chip::ByteSpan((const uint8_t *) [id dataUsingEncoding:NSUTF8StringEncoding].bytes, - [id lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.ReadAttributeIdentifyTime(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)setUserType:(uint16_t)userId userType:(uint8_t)userType completionHandler:(ResponseHandler)completionHandler + +- (void)writeAttributeIdentifyTime:(uint16_t)value completionHandler:(ResponseHandler)completionHandler { - CHIPDoorLockClusterSetUserTypeResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterSetUserTypeResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5810,24 +7632,17 @@ - (void)setUserType:(uint16_t)userId userType:(uint8_t)userType completionHandle return; } - CHIP_ERROR err = self.cppCluster.SetUserType(onSuccess->Cancel(), onFailure->Cancel(), userId, userType); + CHIP_ERROR err = self.cppCluster.WriteAttributeIdentifyTime(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)setWeekdaySchedule:(uint8_t)scheduleId - userId:(uint16_t)userId - daysMask:(uint8_t)daysMask - startHour:(uint8_t)startHour - startMinute:(uint8_t)startMinute - endHour:(uint8_t)endHour - endMinute:(uint8_t)endMinute - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterSetWeekdayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5840,22 +7655,31 @@ - (void)setWeekdaySchedule:(uint8_t)scheduleId return; } - CHIP_ERROR err = self.cppCluster.SetWeekdaySchedule( - onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId, daysMask, startHour, startMinute, endHour, endMinute); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)setYeardaySchedule:(uint8_t)scheduleId - userId:(uint16_t)userId - localStartTime:(uint32_t)localStartTime - localEndTime:(uint32_t)localEndTime - completionHandler:(ResponseHandler)completionHandler + +@end + +@interface CHIPKeypadInput () +@property (readonly) Controller::KeypadInputCluster cppCluster; +@end + +@implementation CHIPKeypadInput + +- (Controller::ClusterBase *)getCluster { - CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterSetYeardayScheduleResponseCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)sendKey:(uint8_t)keyCode completionHandler:(ResponseHandler)completionHandler +{ + CHIPKeypadInputClusterSendKeyResponseCallbackBridge * onSuccess + = new CHIPKeypadInputClusterSendKeyResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5868,18 +7692,17 @@ - (void)setYeardaySchedule:(uint8_t)scheduleId return; } - CHIP_ERROR err = self.cppCluster.SetYeardaySchedule( - onSuccess->Cancel(), onFailure->Cancel(), scheduleId, userId, localStartTime, localEndTime); + CHIP_ERROR err = self.cppCluster.SendKey(onSuccess->Cancel(), onFailure->Cancel(), keyCode); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)unlockDoor:(NSString *)pin completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPDoorLockClusterUnlockDoorResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterUnlockDoorResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5892,19 +7715,34 @@ - (void)unlockDoor:(NSString *)pin completionHandler:(ResponseHandler)completion return; } - CHIP_ERROR err = self.cppCluster.UnlockDoor(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, - [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)unlockWithTimeout:(uint16_t)timeoutInSeconds pin:(NSString *)pin completionHandler:(ResponseHandler)completionHandler + +@end + +@interface CHIPLevelControl () +@property (readonly) Controller::LevelControlCluster cppCluster; +@end + +@implementation CHIPLevelControl + +- (Controller::ClusterBase *)getCluster { - CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge * onSuccess - = new CHIPDoorLockClusterUnlockWithTimeoutResponseCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)move:(uint8_t)moveMode + rate:(uint8_t)rate + optionMask:(uint8_t)optionMask + optionOverride:(uint8_t)optionOverride + completionHandler:(ResponseHandler)completionHandler +{ + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5917,19 +7755,20 @@ - (void)unlockWithTimeout:(uint16_t)timeoutInSeconds pin:(NSString *)pin complet return; } - CHIP_ERROR err = self.cppCluster.UnlockWithTimeout(onSuccess->Cancel(), onFailure->Cancel(), timeoutInSeconds, - chip::ByteSpan((const uint8_t *) [pin dataUsingEncoding:NSUTF8StringEncoding].bytes, - [pin lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.Move(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionMask, optionOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeLockState:(ResponseHandler)completionHandler +- (void)moveToLevel:(uint8_t)level + transitionTime:(uint16_t)transitionTime + optionMask:(uint8_t)optionMask + optionOverride:(uint8_t)optionOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -5942,17 +7781,17 @@ - (void)readAttributeLockState:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeLockState(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.MoveToLevel(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime, optionMask, optionOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)configureAttributeLockState:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - completionHandler:(ResponseHandler)completionHandler +- (void)moveToLevelWithOnOff:(uint8_t)level + transitionTime:(uint16_t)transitionTime + completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -5967,33 +7806,16 @@ - (void)configureAttributeLockState:(uint16_t)minInterval return; } - CHIP_ERROR err - = self.cppCluster.ConfigureAttributeLockState(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval); + CHIP_ERROR err = self.cppCluster.MoveToLevelWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)reportAttributeLockState:(ResponseHandler)reportHandler -{ - CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIP_ERROR err = self.cppCluster.ReportAttributeLockState(onReport->Cancel()); - if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); - } -} - -- (void)readAttributeLockType:(ResponseHandler)completionHandler +- (void)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6006,18 +7828,21 @@ - (void)readAttributeLockType:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeLockType(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MoveWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeActuatorEnabled:(ResponseHandler)completionHandler +- (void)step:(uint8_t)stepMode + stepSize:(uint8_t)stepSize + transitionTime:(uint16_t)transitionTime + optionMask:(uint8_t)optionMask + optionOverride:(uint8_t)optionOverride + completionHandler:(ResponseHandler)completionHandler { - CHIPBooleanAttributeCallbackBridge * onSuccess - = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6030,17 +7855,20 @@ - (void)readAttributeActuatorEnabled:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeActuatorEnabled(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.Step( + onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionMask, optionOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)stepWithOnOff:(uint8_t)stepMode + stepSize:(uint8_t)stepSize + transitionTime:(uint16_t)transitionTime + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6053,34 +7881,16 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StepWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPGeneralCommissioning () -@property (readonly) Controller::GeneralCommissioningCluster cppCluster; -@end - -@implementation CHIPGeneralCommissioning - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)armFailSafe:(uint16_t)expiryLengthSeconds - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler +- (void)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completionHandler:(ResponseHandler)completionHandler { - CHIPGeneralCommissioningClusterArmFailSafeResponseCallbackBridge * onSuccess - = new CHIPGeneralCommissioningClusterArmFailSafeResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6093,18 +7903,16 @@ - (void)armFailSafe:(uint16_t)expiryLengthSeconds return; } - CHIP_ERROR err - = self.cppCluster.ArmFailSafe(onSuccess->Cancel(), onFailure->Cancel(), expiryLengthSeconds, breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.Stop(onSuccess->Cancel(), onFailure->Cancel(), optionMask, optionOverride); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)commissioningComplete:(ResponseHandler)completionHandler +- (void)stopWithOnOff:(ResponseHandler)completionHandler { - CHIPGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge * onSuccess - = new CHIPGeneralCommissioningClusterCommissioningCompleteResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6117,21 +7925,17 @@ - (void)commissioningComplete:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.CommissioningComplete(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StopWithOnOff(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)setRegulatoryConfig:(uint8_t)location - countryCode:(NSString *)countryCode - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeCurrentLevel:(ResponseHandler)completionHandler { - CHIPGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge * onSuccess - = new CHIPGeneralCommissioningClusterSetRegulatoryConfigResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6143,11 +7947,8 @@ - (void)setRegulatoryConfig:(uint8_t)location completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - - CHIP_ERROR err = self.cppCluster.SetRegulatoryConfig(onSuccess->Cancel(), onFailure->Cancel(), location, - chip::ByteSpan((const uint8_t *) [countryCode dataUsingEncoding:NSUTF8StringEncoding].bytes, - [countryCode lengthOfBytesUsingEncoding:NSUTF8StringEncoding]), - breadcrumb, timeoutMs); + + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentLevel(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -6155,10 +7956,12 @@ - (void)setRegulatoryConfig:(uint8_t)location } } -- (void)readAttributeFabricId:(ResponseHandler)completionHandler +- (void)configureAttributeCurrentLevel:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(uint8_t)change + completionHandler:(ResponseHandler)completionHandler { - CHIPStringAttributeCallbackBridge * onSuccess - = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6171,7 +7974,8 @@ - (void)readAttributeFabricId:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeFabricId(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentLevel( + onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -6179,9 +7983,24 @@ - (void)readAttributeFabricId:(ResponseHandler)completionHandler } } -- (void)readAttributeBreadcrumb:(ResponseHandler)completionHandler +- (void)reportAttributeCurrentLevel:(ResponseHandler)reportHandler { - CHIPInt64uAttributeCallbackBridge * onSuccess = new CHIPInt64uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentLevel(onReport->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6194,7 +8013,7 @@ - (void)readAttributeBreadcrumb:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeBreadcrumb(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -6202,7 +8021,20 @@ - (void)readAttributeBreadcrumb:(ResponseHandler)completionHandler } } -- (void)writeAttributeBreadcrumb:(uint64_t)value completionHandler:(ResponseHandler)completionHandler +@end + +@interface CHIPLowPower () +@property (readonly) Controller::LowPowerCluster cppCluster; +@end + +@implementation CHIPLowPower + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)sleep:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -6217,7 +8049,7 @@ - (void)writeAttributeBreadcrumb:(uint64_t)value completionHandler:(ResponseHand return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeBreadcrumb(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.Sleep(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -6250,21 +8082,20 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler @end -@interface CHIPGroupKeyManagement () -@property (readonly) Controller::GroupKeyManagementCluster cppCluster; +@interface CHIPMediaInput () +@property (readonly) Controller::MediaInputCluster cppCluster; @end -@implementation CHIPGroupKeyManagement +@implementation CHIPMediaInput - (Controller::ClusterBase *)getCluster { return &_cppCluster; } -- (void)readAttributeGroups:(ResponseHandler)completionHandler +- (void)hideInputStatus:(ResponseHandler)completionHandler { - CHIPGroupKeyManagementGroupsAttributeCallbackBridge * onSuccess - = new CHIPGroupKeyManagementGroupsAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6277,18 +8108,16 @@ - (void)readAttributeGroups:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeGroups(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.HideInputStatus(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeGroupKeys:(ResponseHandler)completionHandler +- (void)renameInput:(uint8_t)index name:(NSString *)name completionHandler:(ResponseHandler)completionHandler { - CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge * onSuccess - = new CHIPGroupKeyManagementGroupKeysAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6301,17 +8130,18 @@ - (void)readAttributeGroupKeys:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeGroupKeys(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.RenameInput(onSuccess->Cancel(), onFailure->Cancel(), index, + chip::ByteSpan((const uint8_t *) [name dataUsingEncoding:NSUTF8StringEncoding].bytes, + [name lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)selectInput:(uint8_t)index completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6324,31 +8154,16 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SelectInput(onSuccess->Cancel(), onFailure->Cancel(), index); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPGroups () -@property (readonly) Controller::GroupsCluster cppCluster; -@end - -@implementation CHIPGroups - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)addGroup:(uint16_t)groupId groupName:(NSString *)groupName completionHandler:(ResponseHandler)completionHandler +- (void)showInputStatus:(ResponseHandler)completionHandler { - CHIPGroupsClusterAddGroupResponseCallbackBridge * onSuccess - = new CHIPGroupsClusterAddGroupResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6361,18 +8176,18 @@ - (void)addGroup:(uint16_t)groupId groupName:(NSString *)groupName completionHan return; } - CHIP_ERROR err = self.cppCluster.AddGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId, - chip::ByteSpan((const uint8_t *) [groupName dataUsingEncoding:NSUTF8StringEncoding].bytes, - [groupName lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.ShowInputStatus(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)addGroupIfIdentifying:(uint16_t)groupId groupName:(NSString *)groupName completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeMediaInputList:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6385,19 +8200,17 @@ - (void)addGroupIfIdentifying:(uint16_t)groupId groupName:(NSString *)groupName return; } - CHIP_ERROR err = self.cppCluster.AddGroupIfIdentifying(onSuccess->Cancel(), onFailure->Cancel(), groupId, - chip::ByteSpan((const uint8_t *) [groupName dataUsingEncoding:NSUTF8StringEncoding].bytes, - [groupName lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.ReadAttributeMediaInputList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getGroupMembership:(uint8_t)groupCount groupList:(uint16_t)groupList completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge * onSuccess - = new CHIPGroupsClusterGetGroupMembershipResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6410,16 +8223,31 @@ - (void)getGroupMembership:(uint8_t)groupCount groupList:(uint16_t)groupList com return; } - CHIP_ERROR err = self.cppCluster.GetGroupMembership(onSuccess->Cancel(), onFailure->Cancel(), groupCount, groupList); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)removeAllGroups:(ResponseHandler)completionHandler + +@end + +@interface CHIPMediaPlayback () +@property (readonly) Controller::MediaPlaybackCluster cppCluster; +@end + +@implementation CHIPMediaPlayback + +- (Controller::ClusterBase *)getCluster { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)mediaFastForward:(ResponseHandler)completionHandler +{ + CHIPMediaPlaybackClusterMediaFastForwardResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaFastForwardResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6432,17 +8260,17 @@ - (void)removeAllGroups:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.RemoveAllGroups(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MediaFastForward(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)removeGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler +- (void)mediaNext:(ResponseHandler)completionHandler { - CHIPGroupsClusterRemoveGroupResponseCallbackBridge * onSuccess - = new CHIPGroupsClusterRemoveGroupResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaNextResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaNextResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6455,17 +8283,17 @@ - (void)removeGroup:(uint16_t)groupId completionHandler:(ResponseHandler)complet return; } - CHIP_ERROR err = self.cppCluster.RemoveGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId); + CHIP_ERROR err = self.cppCluster.MediaNext(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)viewGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler +- (void)mediaPause:(ResponseHandler)completionHandler { - CHIPGroupsClusterViewGroupResponseCallbackBridge * onSuccess - = new CHIPGroupsClusterViewGroupResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaPauseResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaPauseResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6478,17 +8306,17 @@ - (void)viewGroup:(uint16_t)groupId completionHandler:(ResponseHandler)completio return; } - CHIP_ERROR err = self.cppCluster.ViewGroup(onSuccess->Cancel(), onFailure->Cancel(), groupId); + CHIP_ERROR err = self.cppCluster.MediaPause(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeNameSupport:(ResponseHandler)completionHandler +- (void)mediaPlay:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaPlayResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaPlayResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6501,17 +8329,17 @@ - (void)readAttributeNameSupport:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MediaPlay(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)mediaPrevious:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaPreviousResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaPreviousResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6524,30 +8352,17 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MediaPrevious(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPIdentify () -@property (readonly) Controller::IdentifyCluster cppCluster; -@end - -@implementation CHIPIdentify - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)identify:(uint16_t)identifyTime completionHandler:(ResponseHandler)completionHandler +- (void)mediaRewind:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaRewindResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaRewindResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6560,17 +8375,17 @@ - (void)identify:(uint16_t)identifyTime completionHandler:(ResponseHandler)compl return; } - CHIP_ERROR err = self.cppCluster.Identify(onSuccess->Cancel(), onFailure->Cancel(), identifyTime); + CHIP_ERROR err = self.cppCluster.MediaRewind(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)identifyQuery:(ResponseHandler)completionHandler +- (void)mediaSkipBackward:(uint64_t)deltaPositionMilliseconds completionHandler:(ResponseHandler)completionHandler { - CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge * onSuccess - = new CHIPIdentifyClusterIdentifyQueryResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaSkipBackwardResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaSkipBackwardResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6583,17 +8398,17 @@ - (void)identifyQuery:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.IdentifyQuery(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MediaSkipBackward(onSuccess->Cancel(), onFailure->Cancel(), deltaPositionMilliseconds); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeIdentifyTime:(ResponseHandler)completionHandler +- (void)mediaSkipForward:(uint64_t)deltaPositionMilliseconds completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaSkipForwardResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaSkipForwardResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6606,17 +8421,17 @@ - (void)readAttributeIdentifyTime:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeIdentifyTime(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MediaSkipForward(onSuccess->Cancel(), onFailure->Cancel(), deltaPositionMilliseconds); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)writeAttributeIdentifyTime:(uint16_t)value completionHandler:(ResponseHandler)completionHandler +- (void)mediaSkipSeek:(uint64_t)position completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaSkipSeekResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaSkipSeekResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6629,17 +8444,17 @@ - (void)writeAttributeIdentifyTime:(uint16_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeIdentifyTime(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.MediaSkipSeek(onSuccess->Cancel(), onFailure->Cancel(), position); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)mediaStartOver:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaStartOverResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaStartOverResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6652,34 +8467,17 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.MediaStartOver(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPLevelControl () -@property (readonly) Controller::LevelControlCluster cppCluster; -@end - -@implementation CHIPLevelControl - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)move:(uint8_t)moveMode - rate:(uint8_t)rate - optionMask:(uint8_t)optionMask - optionOverride:(uint8_t)optionOverride - completionHandler:(ResponseHandler)completionHandler +- (void)mediaStop:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPMediaPlaybackClusterMediaStopResponseCallbackBridge * onSuccess + = new CHIPMediaPlaybackClusterMediaStopResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6692,20 +8490,17 @@ - (void)move:(uint8_t)moveMode return; } - CHIP_ERROR err = self.cppCluster.Move(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate, optionMask, optionOverride); + CHIP_ERROR err = self.cppCluster.MediaStop(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveToLevel:(uint8_t)level - transitionTime:(uint16_t)transitionTime - optionMask:(uint8_t)optionMask - optionOverride:(uint8_t)optionOverride - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6718,19 +8513,34 @@ - (void)moveToLevel:(uint8_t)level return; } - CHIP_ERROR err - = self.cppCluster.MoveToLevel(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime, optionMask, optionOverride); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveToLevelWithOnOff:(uint8_t)level - transitionTime:(uint16_t)transitionTime - completionHandler:(ResponseHandler)completionHandler + +@end + +@interface CHIPNetworkCommissioning () +@property (readonly) Controller::NetworkCommissioningCluster cppCluster; +@end + +@implementation CHIPNetworkCommissioning + +- (Controller::ClusterBase *)getCluster { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)addThreadNetwork:(NSData *)operationalDataset + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler +{ + CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6743,16 +8553,22 @@ - (void)moveToLevelWithOnOff:(uint8_t)level return; } - CHIP_ERROR err = self.cppCluster.MoveToLevelWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), level, transitionTime); + CHIP_ERROR err = self.cppCluster.AddThreadNetwork(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) operationalDataset.bytes, operationalDataset.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(ResponseHandler)completionHandler +- (void)addWiFiNetwork:(NSData *)ssid + credentials:(NSData *)credentials + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6765,21 +8581,22 @@ - (void)moveWithOnOff:(uint8_t)moveMode rate:(uint8_t)rate completionHandler:(Re return; } - CHIP_ERROR err = self.cppCluster.MoveWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), moveMode, rate); + CHIP_ERROR err = self.cppCluster.AddWiFiNetwork(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) ssid.bytes, ssid.length), + chip::ByteSpan((const uint8_t *) credentials.bytes, credentials.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)step:(uint8_t)stepMode - stepSize:(uint8_t)stepSize - transitionTime:(uint16_t)transitionTime - optionMask:(uint8_t)optionMask - optionOverride:(uint8_t)optionOverride - completionHandler:(ResponseHandler)completionHandler +- (void)disableNetwork:(NSData *)networkID + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6792,20 +8609,21 @@ - (void)step:(uint8_t)stepMode return; } - CHIP_ERROR err = self.cppCluster.Step( - onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime, optionMask, optionOverride); + CHIP_ERROR err = self.cppCluster.DisableNetwork(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) networkID.bytes, networkID.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stepWithOnOff:(uint8_t)stepMode - stepSize:(uint8_t)stepSize - transitionTime:(uint16_t)transitionTime +- (void)enableNetwork:(NSData *)networkID + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6818,14 +8636,15 @@ - (void)stepWithOnOff:(uint8_t)stepMode return; } - CHIP_ERROR err = self.cppCluster.StepWithOnOff(onSuccess->Cancel(), onFailure->Cancel(), stepMode, stepSize, transitionTime); + CHIP_ERROR err = self.cppCluster.EnableNetwork(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) networkID.bytes, networkID.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completionHandler:(ResponseHandler)completionHandler +- (void)getLastNetworkCommissioningResult:(uint32_t)timeoutMs completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -6840,16 +8659,20 @@ - (void)stop:(uint8_t)optionMask optionOverride:(uint8_t)optionOverride completi return; } - CHIP_ERROR err = self.cppCluster.Stop(onSuccess->Cancel(), onFailure->Cancel(), optionMask, optionOverride); + CHIP_ERROR err = self.cppCluster.GetLastNetworkCommissioningResult(onSuccess->Cancel(), onFailure->Cancel(), timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)stopWithOnOff:(ResponseHandler)completionHandler +- (void)removeNetwork:(NSData *)networkID + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6862,17 +8685,21 @@ - (void)stopWithOnOff:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.StopWithOnOff(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.RemoveNetwork(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) networkID.bytes, networkID.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeCurrentLevel:(ResponseHandler)completionHandler +- (void)scanNetworks:(NSData *)ssid + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6885,20 +8712,21 @@ - (void)readAttributeCurrentLevel:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentLevel(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ScanNetworks( + onSuccess->Cancel(), onFailure->Cancel(), chip::ByteSpan((const uint8_t *) ssid.bytes, ssid.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)configureAttributeCurrentLevel:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(uint8_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)updateThreadNetwork:(NSData *)operationalDataset + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -6911,27 +8739,41 @@ - (void)configureAttributeCurrentLevel:(uint16_t)minInterval return; } - CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentLevel( - onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.UpdateThreadNetwork(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) operationalDataset.bytes, operationalDataset.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)reportAttributeCurrentLevel:(ResponseHandler)reportHandler +- (void)updateWiFiNetwork:(NSData *)ssid + credentials:(NSData *)credentials + breadcrumb:(uint64_t)breadcrumb + timeoutMs:(uint32_t)timeoutMs + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge * onSuccess + = new CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentLevel(onReport->Cancel()); + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.UpdateWiFiNetwork(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) ssid.bytes, ssid.length), + chip::ByteSpan((const uint8_t *) credentials.bytes, credentials.length), breadcrumb, timeoutMs); if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } @@ -6960,18 +8802,18 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler @end -@interface CHIPLowPower () -@property (readonly) Controller::LowPowerCluster cppCluster; +@interface CHIPOnOff () +@property (readonly) Controller::OnOffCluster cppCluster; @end -@implementation CHIPLowPower +@implementation CHIPOnOff - (Controller::ClusterBase *)getCluster { return &_cppCluster; } -- (void)sleep:(ResponseHandler)completionHandler +- (void)off:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -6986,17 +8828,16 @@ - (void)sleep:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.Sleep(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.Off(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)on:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7009,34 +8850,16 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.On(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPNetworkCommissioning () -@property (readonly) Controller::NetworkCommissioningCluster cppCluster; -@end - -@implementation CHIPNetworkCommissioning - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)addThreadNetwork:(NSData *)operationalDataset - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler +- (void)toggle:(ResponseHandler)completionHandler { - CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterAddThreadNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7049,22 +8872,18 @@ - (void)addThreadNetwork:(NSData *)operationalDataset return; } - CHIP_ERROR err = self.cppCluster.AddThreadNetwork(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) operationalDataset.bytes, operationalDataset.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.Toggle(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)addWiFiNetwork:(NSData *)ssid - credentials:(NSData *)credentials - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeOnOff:(ResponseHandler)completionHandler { - CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterAddWiFiNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPBooleanAttributeCallbackBridge * onSuccess + = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7077,22 +8896,19 @@ - (void)addWiFiNetwork:(NSData *)ssid return; } - CHIP_ERROR err = self.cppCluster.AddWiFiNetwork(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) ssid.bytes, ssid.length), - chip::ByteSpan((const uint8_t *) credentials.bytes, credentials.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.ReadAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)disableNetwork:(NSData *)networkID - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler + +- (void)configureAttributeOnOff:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + completionHandler:(ResponseHandler)completionHandler { - CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterDisableNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7105,44 +8921,33 @@ - (void)disableNetwork:(NSData *)networkID return; } - CHIP_ERROR err = self.cppCluster.DisableNetwork(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) networkID.bytes, networkID.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.ConfigureAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)enableNetwork:(NSData *)networkID - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler -{ - CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterEnableNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); +- (void)reportAttributeOnOff:(ResponseHandler)reportHandler +{ + CHIPBooleanAttributeCallbackBridge * onReport + = new CHIPBooleanAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.EnableNetwork(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) networkID.bytes, networkID.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.ReportAttributeOnOff(onReport->Cancel()); if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getLastNetworkCommissioningResult:(uint32_t)timeoutMs completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7155,20 +8960,31 @@ - (void)getLastNetworkCommissioningResult:(uint32_t)timeoutMs completionHandler: return; } - CHIP_ERROR err = self.cppCluster.GetLastNetworkCommissioningResult(onSuccess->Cancel(), onFailure->Cancel(), timeoutMs); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)removeNetwork:(NSData *)networkID - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler + +@end + +@interface CHIPOperationalCredentials () +@property (readonly) Controller::OperationalCredentialsCluster cppCluster; +@end + +@implementation CHIPOperationalCredentials + +- (Controller::ClusterBase *)getCluster { - CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterRemoveNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)getFabricId:(ResponseHandler)completionHandler +{ + CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge * onSuccess + = new CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7181,21 +8997,19 @@ - (void)removeNetwork:(NSData *)networkID return; } - CHIP_ERROR err = self.cppCluster.RemoveNetwork(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) networkID.bytes, networkID.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.GetFabricId(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)scanNetworks:(NSData *)ssid - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs +- (void)removeFabric:(uint64_t)fabricId + nodeId:(uint64_t)nodeId + vendorId:(uint16_t)vendorId completionHandler:(ResponseHandler)completionHandler { - CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterScanNetworksResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7208,21 +9022,16 @@ - (void)scanNetworks:(NSData *)ssid return; } - CHIP_ERROR err = self.cppCluster.ScanNetworks( - onSuccess->Cancel(), onFailure->Cancel(), chip::ByteSpan((const uint8_t *) ssid.bytes, ssid.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.RemoveFabric(onSuccess->Cancel(), onFailure->Cancel(), fabricId, nodeId, vendorId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)updateThreadNetwork:(NSData *)operationalDataset - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler +- (void)updateFabricLabel:(NSString *)label completionHandler:(ResponseHandler)completionHandler { - CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterUpdateThreadNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7235,22 +9044,20 @@ - (void)updateThreadNetwork:(NSData *)operationalDataset return; } - CHIP_ERROR err = self.cppCluster.UpdateThreadNetwork(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) operationalDataset.bytes, operationalDataset.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.UpdateFabricLabel(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [label dataUsingEncoding:NSUTF8StringEncoding].bytes, + [label lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)updateWiFiNetwork:(NSData *)ssid - credentials:(NSData *)credentials - breadcrumb:(uint64_t)breadcrumb - timeoutMs:(uint32_t)timeoutMs - completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeFabricsList:(ResponseHandler)completionHandler { - CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge * onSuccess - = new CHIPNetworkCommissioningClusterUpdateWiFiNetworkResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPOperationalCredentialsFabricsListAttributeCallbackBridge * onSuccess + = new CHIPOperationalCredentialsFabricsListAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7263,9 +9070,7 @@ - (void)updateWiFiNetwork:(NSData *)ssid return; } - CHIP_ERROR err = self.cppCluster.UpdateWiFiNetwork(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) ssid.bytes, ssid.length), - chip::ByteSpan((const uint8_t *) credentials.bytes, credentials.length), breadcrumb, timeoutMs); + CHIP_ERROR err = self.cppCluster.ReadAttributeFabricsList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7298,20 +9103,20 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler @end -@interface CHIPOnOff () -@property (readonly) Controller::OnOffCluster cppCluster; +@interface CHIPPumpConfigurationAndControl () +@property (readonly) Controller::PumpConfigurationAndControlCluster cppCluster; @end -@implementation CHIPOnOff +@implementation CHIPPumpConfigurationAndControl - (Controller::ClusterBase *)getCluster { return &_cppCluster; } -- (void)off:(ResponseHandler)completionHandler +- (void)readAttributeMaxPressure:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7324,16 +9129,17 @@ - (void)off:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.Off(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeMaxPressure(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)on:(ResponseHandler)completionHandler + +- (void)readAttributeMaxSpeed:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7346,16 +9152,17 @@ - (void)on:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.On(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeMaxSpeed(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)toggle:(ResponseHandler)completionHandler + +- (void)readAttributeMaxFlow:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7368,7 +9175,7 @@ - (void)toggle:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.Toggle(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeMaxFlow(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7376,10 +9183,9 @@ - (void)toggle:(ResponseHandler)completionHandler } } -- (void)readAttributeOnOff:(ResponseHandler)completionHandler +- (void)readAttributeEffectiveOperationMode:(ResponseHandler)completionHandler { - CHIPBooleanAttributeCallbackBridge * onSuccess - = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7392,7 +9198,7 @@ - (void)readAttributeOnOff:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeEffectiveOperationMode(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7400,11 +9206,9 @@ - (void)readAttributeOnOff:(ResponseHandler)completionHandler } } -- (void)configureAttributeOnOff:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeEffectiveControlMode:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7417,7 +9221,7 @@ - (void)configureAttributeOnOff:(uint16_t)minInterval return; } - CHIP_ERROR err = self.cppCluster.ConfigureAttributeOnOff(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval); + CHIP_ERROR err = self.cppCluster.ReadAttributeEffectiveControlMode(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7425,25 +9229,35 @@ - (void)configureAttributeOnOff:(uint16_t)minInterval } } -- (void)reportAttributeOnOff:(ResponseHandler)reportHandler +- (void)readAttributeCapacity:(ResponseHandler)completionHandler { - CHIPBooleanAttributeCallbackBridge * onReport - = new CHIPBooleanAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.ReportAttributeOnOff(onReport->Cancel()); + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeCapacity(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)configureAttributeCapacity:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(int16_t)change + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7456,7 +9270,8 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err + = self.cppCluster.ConfigureAttributeCapacity(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7464,23 +9279,24 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler } } -@end - -@interface CHIPOperationalCredentials () -@property (readonly) Controller::OperationalCredentialsCluster cppCluster; -@end - -@implementation CHIPOperationalCredentials - -- (Controller::ClusterBase *)getCluster +- (void)reportAttributeCapacity:(ResponseHandler)reportHandler { - return &_cppCluster; + CHIPInt16sAttributeCallbackBridge * onReport = new CHIPInt16sAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReportAttributeCapacity(onReport->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + } } -- (void)getFabricId:(ResponseHandler)completionHandler +- (void)readAttributeOperationMode:(ResponseHandler)completionHandler { - CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge * onSuccess - = new CHIPOperationalCredentialsClusterGetFabricIdResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7493,17 +9309,15 @@ - (void)getFabricId:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.GetFabricId(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeOperationMode(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)removeFabric:(uint64_t)fabricId - nodeId:(uint64_t)nodeId - vendorId:(uint16_t)vendorId - completionHandler:(ResponseHandler)completionHandler + +- (void)writeAttributeOperationMode:(uint8_t)value completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -7518,16 +9332,17 @@ - (void)removeFabric:(uint64_t)fabricId return; } - CHIP_ERROR err = self.cppCluster.RemoveFabric(onSuccess->Cancel(), onFailure->Cancel(), fabricId, nodeId, vendorId); + CHIP_ERROR err = self.cppCluster.WriteAttributeOperationMode(onSuccess->Cancel(), onFailure->Cancel(), value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)updateFabricLabel:(NSString *)label completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7540,9 +9355,7 @@ - (void)updateFabricLabel:(NSString *)label completionHandler:(ResponseHandler)c return; } - CHIP_ERROR err = self.cppCluster.UpdateFabricLabel(onSuccess->Cancel(), onFailure->Cancel(), - chip::ByteSpan((const uint8_t *) [label dataUsingEncoding:NSUTF8StringEncoding].bytes, - [label lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7550,10 +9363,30 @@ - (void)updateFabricLabel:(NSString *)label completionHandler:(ResponseHandler)c } } -- (void)readAttributeFabricsList:(ResponseHandler)completionHandler +@end + +@interface CHIPScenes () +@property (readonly) Controller::ScenesCluster cppCluster; +@end + +@implementation CHIPScenes + +- (Controller::ClusterBase *)getCluster { - CHIPOperationalCredentialsFabricsListAttributeCallbackBridge * onSuccess - = new CHIPOperationalCredentialsFabricsListAttributeCallbackBridge(completionHandler, [self callbackQueue]); + return &_cppCluster; +} + +- (void)addScene:(uint16_t)groupId + sceneId:(uint8_t)sceneId + transitionTime:(uint16_t)transitionTime + sceneName:(NSString *)sceneName + clusterId:(uint16_t)clusterId + length:(uint8_t)length + value:(uint8_t)value + completionHandler:(ResponseHandler)completionHandler +{ + CHIPScenesClusterAddSceneResponseCallbackBridge * onSuccess + = new CHIPScenesClusterAddSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7566,17 +9399,20 @@ - (void)readAttributeFabricsList:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeFabricsList(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.AddScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId, transitionTime, + chip::ByteSpan((const uint8_t *) [sceneName dataUsingEncoding:NSUTF8StringEncoding].bytes, + [sceneName lengthOfBytesUsingEncoding:NSUTF8StringEncoding]), + clusterId, length, value); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +- (void)getSceneMembership:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPScenesClusterGetSceneMembershipResponseCallbackBridge * onSuccess + = new CHIPScenesClusterGetSceneMembershipResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7589,30 +9425,19 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.GetSceneMembership(onSuccess->Cancel(), onFailure->Cancel(), groupId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -@end - -@interface CHIPPumpConfigurationAndControl () -@property (readonly) Controller::PumpConfigurationAndControlCluster cppCluster; -@end - -@implementation CHIPPumpConfigurationAndControl - -- (Controller::ClusterBase *)getCluster -{ - return &_cppCluster; -} - -- (void)readAttributeMaxPressure:(ResponseHandler)completionHandler +- (void)recallScene:(uint16_t)groupId + sceneId:(uint8_t)sceneId + transitionTime:(uint16_t)transitionTime + completionHandler:(ResponseHandler)completionHandler { - CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7625,17 +9450,17 @@ - (void)readAttributeMaxPressure:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeMaxPressure(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.RecallScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId, transitionTime); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeMaxSpeed:(ResponseHandler)completionHandler +- (void)removeAllScenes:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPScenesClusterRemoveAllScenesResponseCallbackBridge * onSuccess + = new CHIPScenesClusterRemoveAllScenesResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7648,17 +9473,17 @@ - (void)readAttributeMaxSpeed:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeMaxSpeed(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.RemoveAllScenes(onSuccess->Cancel(), onFailure->Cancel(), groupId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeMaxFlow:(ResponseHandler)completionHandler +- (void)removeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPScenesClusterRemoveSceneResponseCallbackBridge * onSuccess + = new CHIPScenesClusterRemoveSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7671,17 +9496,17 @@ - (void)readAttributeMaxFlow:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeMaxFlow(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.RemoveScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeEffectiveOperationMode:(ResponseHandler)completionHandler +- (void)storeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPScenesClusterStoreSceneResponseCallbackBridge * onSuccess + = new CHIPScenesClusterStoreSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7694,17 +9519,17 @@ - (void)readAttributeEffectiveOperationMode:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeEffectiveOperationMode(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.StoreScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeEffectiveControlMode:(ResponseHandler)completionHandler +- (void)viewScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPScenesClusterViewSceneResponseCallbackBridge * onSuccess + = new CHIPScenesClusterViewSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7717,7 +9542,7 @@ - (void)readAttributeEffectiveControlMode:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeEffectiveControlMode(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ViewScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7725,9 +9550,9 @@ - (void)readAttributeEffectiveControlMode:(ResponseHandler)completionHandler } } -- (void)readAttributeCapacity:(ResponseHandler)completionHandler +- (void)readAttributeSceneCount:(ResponseHandler)completionHandler { - CHIPInt16sAttributeCallbackBridge * onSuccess = new CHIPInt16sAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7740,7 +9565,7 @@ - (void)readAttributeCapacity:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCapacity(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeSceneCount(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7748,12 +9573,9 @@ - (void)readAttributeCapacity:(ResponseHandler)completionHandler } } -- (void)configureAttributeCapacity:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(int16_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeCurrentScene:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7766,8 +9588,7 @@ - (void)configureAttributeCapacity:(uint16_t)minInterval return; } - CHIP_ERROR err - = self.cppCluster.ConfigureAttributeCapacity(onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentScene(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7775,24 +9596,33 @@ - (void)configureAttributeCapacity:(uint16_t)minInterval } } -- (void)reportAttributeCapacity:(ResponseHandler)reportHandler +- (void)readAttributeCurrentGroup:(ResponseHandler)completionHandler { - CHIPInt16sAttributeCallbackBridge * onReport = new CHIPInt16sAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.ReportAttributeCapacity(onReport->Cancel()); + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentGroup(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)readAttributeOperationMode:(ResponseHandler)completionHandler +- (void)readAttributeSceneValid:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPBooleanAttributeCallbackBridge * onSuccess + = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7805,7 +9635,7 @@ - (void)readAttributeOperationMode:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeOperationMode(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeSceneValid(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7813,9 +9643,9 @@ - (void)readAttributeOperationMode:(ResponseHandler)completionHandler } } -- (void)writeAttributeOperationMode:(uint8_t)value completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeNameSupport:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7828,7 +9658,7 @@ - (void)writeAttributeOperationMode:(uint8_t)value completionHandler:(ResponseHa return; } - CHIP_ERROR err = self.cppCluster.WriteAttributeOperationMode(onSuccess->Cancel(), onFailure->Cancel(), value); + CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -7861,28 +9691,20 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler @end -@interface CHIPScenes () -@property (readonly) Controller::ScenesCluster cppCluster; +@interface CHIPSwitch () +@property (readonly) Controller::SwitchCluster cppCluster; @end -@implementation CHIPScenes +@implementation CHIPSwitch - (Controller::ClusterBase *)getCluster { return &_cppCluster; } -- (void)addScene:(uint16_t)groupId - sceneId:(uint8_t)sceneId - transitionTime:(uint16_t)transitionTime - sceneName:(NSString *)sceneName - clusterId:(uint16_t)clusterId - length:(uint8_t)length - value:(uint8_t)value - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeNumberOfPositions:(ResponseHandler)completionHandler { - CHIPScenesClusterAddSceneResponseCallbackBridge * onSuccess - = new CHIPScenesClusterAddSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7895,20 +9717,17 @@ - (void)addScene:(uint16_t)groupId return; } - CHIP_ERROR err = self.cppCluster.AddScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId, transitionTime, - chip::ByteSpan((const uint8_t *) [sceneName dataUsingEncoding:NSUTF8StringEncoding].bytes, - [sceneName lengthOfBytesUsingEncoding:NSUTF8StringEncoding]), - clusterId, length, value); + CHIP_ERROR err = self.cppCluster.ReadAttributeNumberOfPositions(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)getSceneMembership:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeCurrentPosition:(ResponseHandler)completionHandler { - CHIPScenesClusterGetSceneMembershipResponseCallbackBridge * onSuccess - = new CHIPScenesClusterGetSceneMembershipResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7921,17 +9740,18 @@ - (void)getSceneMembership:(uint16_t)groupId completionHandler:(ResponseHandler) return; } - CHIP_ERROR err = self.cppCluster.GetSceneMembership(onSuccess->Cancel(), onFailure->Cancel(), groupId); + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentPosition(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)recallScene:(uint16_t)groupId - sceneId:(uint8_t)sceneId - transitionTime:(uint16_t)transitionTime - completionHandler:(ResponseHandler)completionHandler + +- (void)configureAttributeCurrentPosition:(uint16_t)minInterval + maxInterval:(uint16_t)maxInterval + change:(uint8_t)change + completionHandler:(ResponseHandler)completionHandler { CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { @@ -7946,40 +9766,33 @@ - (void)recallScene:(uint16_t)groupId return; } - CHIP_ERROR err = self.cppCluster.RecallScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId, transitionTime); + CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentPosition( + onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)removeAllScenes:(uint16_t)groupId completionHandler:(ResponseHandler)completionHandler -{ - CHIPScenesClusterRemoveAllScenesResponseCallbackBridge * onSuccess - = new CHIPScenesClusterRemoveAllScenesResponseCallbackBridge(completionHandler, [self callbackQueue]); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); +- (void)reportAttributeCurrentPosition:(ResponseHandler)reportHandler +{ + CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); + if (!onReport) { + reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; } - CHIP_ERROR err = self.cppCluster.RemoveAllScenes(onSuccess->Cancel(), onFailure->Cancel(), groupId); + CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentPosition(onReport->Cancel()); if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + delete onReport; + reportHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)removeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { - CHIPScenesClusterRemoveSceneResponseCallbackBridge * onSuccess - = new CHIPScenesClusterRemoveSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -7992,40 +9805,31 @@ - (void)removeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler return; } - CHIP_ERROR err = self.cppCluster.RemoveScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId); + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } -- (void)storeScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler -{ - CHIPScenesClusterStoreSceneResponseCallbackBridge * onSuccess - = new CHIPScenesClusterStoreSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } +@end - CHIP_ERROR err = self.cppCluster.StoreScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId); - if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); - } +@interface CHIPTvChannel () +@property (readonly) Controller::TvChannelCluster cppCluster; +@end + +@implementation CHIPTvChannel + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; } -- (void)viewScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:(ResponseHandler)completionHandler + +- (void)changeChannel:(NSString *)match completionHandler:(ResponseHandler)completionHandler { - CHIPScenesClusterViewSceneResponseCallbackBridge * onSuccess - = new CHIPScenesClusterViewSceneResponseCallbackBridge(completionHandler, [self callbackQueue]); + CHIPTvChannelClusterChangeChannelResponseCallbackBridge * onSuccess + = new CHIPTvChannelClusterChangeChannelResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8038,17 +9842,20 @@ - (void)viewScene:(uint16_t)groupId sceneId:(uint8_t)sceneId completionHandler:( return; } - CHIP_ERROR err = self.cppCluster.ViewScene(onSuccess->Cancel(), onFailure->Cancel(), groupId, sceneId); + CHIP_ERROR err = self.cppCluster.ChangeChannel(onSuccess->Cancel(), onFailure->Cancel(), + chip::ByteSpan((const uint8_t *) [match dataUsingEncoding:NSUTF8StringEncoding].bytes, + [match lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeSceneCount:(ResponseHandler)completionHandler +- (void)changeChannelByNumber:(uint16_t)majorNumber + minorNumber:(uint16_t)minorNumber + completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8061,17 +9868,16 @@ - (void)readAttributeSceneCount:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeSceneCount(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ChangeChannelByNumber(onSuccess->Cancel(), onFailure->Cancel(), majorNumber, minorNumber); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; completionHandler([CHIPError errorForCHIPErrorCode:err], nil); } } - -- (void)readAttributeCurrentScene:(ResponseHandler)completionHandler +- (void)skipChannel:(uint16_t)count completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8084,7 +9890,7 @@ - (void)readAttributeCurrentScene:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentScene(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.SkipChannel(onSuccess->Cancel(), onFailure->Cancel(), count); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -8092,9 +9898,10 @@ - (void)readAttributeCurrentScene:(ResponseHandler)completionHandler } } -- (void)readAttributeCurrentGroup:(ResponseHandler)completionHandler +- (void)readAttributeTvChannelList:(ResponseHandler)completionHandler { - CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8107,7 +9914,7 @@ - (void)readAttributeCurrentGroup:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentGroup(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeTvChannelList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -8115,10 +9922,10 @@ - (void)readAttributeCurrentGroup:(ResponseHandler)completionHandler } } -- (void)readAttributeSceneValid:(ResponseHandler)completionHandler +- (void)readAttributeTvChannelLineup:(ResponseHandler)completionHandler { - CHIPBooleanAttributeCallbackBridge * onSuccess - = new CHIPBooleanAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8131,7 +9938,7 @@ - (void)readAttributeSceneValid:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeSceneValid(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeTvChannelLineup(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -8139,9 +9946,10 @@ - (void)readAttributeSceneValid:(ResponseHandler)completionHandler } } -- (void)readAttributeNameSupport:(ResponseHandler)completionHandler +- (void)readAttributeCurrentTvChannel:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8154,7 +9962,7 @@ - (void)readAttributeNameSupport:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeNameSupport(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentTvChannel(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -8187,43 +9995,21 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler @end -@interface CHIPSwitch () -@property (readonly) Controller::SwitchCluster cppCluster; +@interface CHIPTargetNavigator () +@property (readonly) Controller::TargetNavigatorCluster cppCluster; @end -@implementation CHIPSwitch +@implementation CHIPTargetNavigator - (Controller::ClusterBase *)getCluster { return &_cppCluster; } -- (void)readAttributeNumberOfPositions:(ResponseHandler)completionHandler -{ - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); - if (!onSuccess) { - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); - if (!onFailure) { - delete onSuccess; - completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIP_ERROR err = self.cppCluster.ReadAttributeNumberOfPositions(onSuccess->Cancel(), onFailure->Cancel()); - if (err != CHIP_NO_ERROR) { - delete onSuccess; - delete onFailure; - completionHandler([CHIPError errorForCHIPErrorCode:err], nil); - } -} - -- (void)readAttributeCurrentPosition:(ResponseHandler)completionHandler +- (void)navigateTarget:(uint8_t)target data:(NSString *)data completionHandler:(ResponseHandler)completionHandler { - CHIPInt8uAttributeCallbackBridge * onSuccess = new CHIPInt8uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + CHIPTargetNavigatorClusterNavigateTargetResponseCallbackBridge * onSuccess + = new CHIPTargetNavigatorClusterNavigateTargetResponseCallbackBridge(completionHandler, [self callbackQueue]); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8236,7 +10022,9 @@ - (void)readAttributeCurrentPosition:(ResponseHandler)completionHandler return; } - CHIP_ERROR err = self.cppCluster.ReadAttributeCurrentPosition(onSuccess->Cancel(), onFailure->Cancel()); + CHIP_ERROR err = self.cppCluster.NavigateTarget(onSuccess->Cancel(), onFailure->Cancel(), target, + chip::ByteSpan((const uint8_t *) [data dataUsingEncoding:NSUTF8StringEncoding].bytes, + [data lengthOfBytesUsingEncoding:NSUTF8StringEncoding])); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -8244,12 +10032,10 @@ - (void)readAttributeCurrentPosition:(ResponseHandler)completionHandler } } -- (void)configureAttributeCurrentPosition:(uint16_t)minInterval - maxInterval:(uint16_t)maxInterval - change:(uint8_t)change - completionHandler:(ResponseHandler)completionHandler +- (void)readAttributeTargetNavigatorList:(ResponseHandler)completionHandler { - CHIPDefaultSuccessCallbackBridge * onSuccess = new CHIPDefaultSuccessCallbackBridge(completionHandler, [self callbackQueue]); + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], true); if (!onSuccess) { completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); return; @@ -8262,8 +10048,7 @@ - (void)configureAttributeCurrentPosition:(uint16_t)minInterval return; } - CHIP_ERROR err = self.cppCluster.ConfigureAttributeCurrentPosition( - onSuccess->Cancel(), onFailure->Cancel(), minInterval, maxInterval, change); + CHIP_ERROR err = self.cppCluster.ReadAttributeTargetNavigatorList(onSuccess->Cancel(), onFailure->Cancel()); if (err != CHIP_NO_ERROR) { delete onSuccess; delete onFailure; @@ -8271,21 +10056,6 @@ - (void)configureAttributeCurrentPosition:(uint16_t)minInterval } } -- (void)reportAttributeCurrentPosition:(ResponseHandler)reportHandler -{ - CHIPInt8uAttributeCallbackBridge * onReport = new CHIPInt8uAttributeCallbackBridge(reportHandler, [self callbackQueue], true); - if (!onReport) { - reportHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); - return; - } - - CHIP_ERROR err = self.cppCluster.ReportAttributeCurrentPosition(onReport->Cancel()); - if (err != CHIP_NO_ERROR) { - delete onReport; - reportHandler([CHIPError errorForCHIPErrorCode:err], nil); - } -} - - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler { CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); @@ -8861,6 +10631,66 @@ - (void)readAttributeClusterRevision:(ResponseHandler)completionHandler @end +@interface CHIPWakeOnLan () +@property (readonly) Controller::WakeOnLanCluster cppCluster; +@end + +@implementation CHIPWakeOnLan + +- (Controller::ClusterBase *)getCluster +{ + return &_cppCluster; +} + +- (void)readAttributeWakeOnLanMacAddress:(ResponseHandler)completionHandler +{ + CHIPStringAttributeCallbackBridge * onSuccess + = new CHIPStringAttributeCallbackBridge(completionHandler, [self callbackQueue], false); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeWakeOnLanMacAddress(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +- (void)readAttributeClusterRevision:(ResponseHandler)completionHandler +{ + CHIPInt16uAttributeCallbackBridge * onSuccess = new CHIPInt16uAttributeCallbackBridge(completionHandler, [self callbackQueue]); + if (!onSuccess) { + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIPDefaultFailureCallbackBridge * onFailure = new CHIPDefaultFailureCallbackBridge(completionHandler, [self callbackQueue]); + if (!onFailure) { + delete onSuccess; + completionHandler([CHIPError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE], nil); + return; + } + + CHIP_ERROR err = self.cppCluster.ReadAttributeClusterRevision(onSuccess->Cancel(), onFailure->Cancel()); + if (err != CHIP_NO_ERROR) { + delete onSuccess; + delete onFailure; + completionHandler([CHIPError errorForCHIPErrorCode:err], nil); + } +} + +@end + @interface CHIPWindowCovering () @property (readonly) Controller::WindowCoveringCluster cppCluster; @end diff --git a/src/controller/python/gen/IMClusterCommandHandler.cpp b/src/controller/python/gen/IMClusterCommandHandler.cpp index 934fb34f6b2abf..67a1ba05e47c91 100644 --- a/src/controller/python/gen/IMClusterCommandHandler.cpp +++ b/src/controller/python/gen/IMClusterCommandHandler.cpp @@ -39,21 +39,21 @@ namespace app { namespace clusters { -namespace DoorLock { +namespace AccountLogin { void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) { { switch (aCommandId) { - case ZCL_CLEAR_ALL_PINS_RESPONSE_COMMAND_ID: { + case ZCL_GET_SETUP_PIN_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; + const uint8_t * setupPIN; + bool setupPINExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -61,16 +61,17 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (setupPINExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(setupPIN); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + setupPINExists = true; validArgumentCount++; } break; @@ -101,7 +102,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearAllPinsResponseCallback(apCommandObj, status); + emberAfAccountLoginClusterGetSetupPINResponseCallback(apCommandObj, const_cast(setupPIN)); } else { @@ -113,14 +114,36 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_CLEAR_ALL_RFIDS_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_ACCOUNT_LOGIN_CLUSTER_ID); + break; + } + } + } +} + +} // namespace AccountLogin + +namespace ApplicationLauncher { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_LAUNCH_APP_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; uint8_t status; - bool statusExists = false; + bool statusExists = false; + const uint8_t * data; + bool dataExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -141,6 +164,21 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; + case 1: + if (dataExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(data); + if (CHIP_NO_ERROR == TLVUnpackError) + { + dataExists = true; + validArgumentCount++; + } + break; default: // Unsupported tag, ignore it. ChipLogProgress(Zcl, "Unknown TLV tag during processing."); @@ -165,10 +203,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearAllRfidsResponseCallback(apCommandObj, status); + emberAfApplicationLauncherClusterLaunchAppResponseCallback(apCommandObj, status, const_cast(data)); } else { @@ -176,35 +214,72 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_CLEAR_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_APPLICATION_LAUNCHER_CLUSTER_ID); + break; + } + } + } +} + +} // namespace ApplicationLauncher + +namespace ContentLaunch { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_LAUNCH_CONTENT_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint32_t validArgumentCount = 0; + const uint8_t * data; + bool dataExists = false; + uint8_t contentLaunchStatus; + bool contentLaunchStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (dataExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(data); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + dataExists = true; + validArgumentCount++; + } + break; + case 1: + if (contentLaunchStatusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(contentLaunchStatus); + if (CHIP_NO_ERROR == TLVUnpackError) + { + contentLaunchStatusExists = true; validArgumentCount++; } break; @@ -232,10 +307,11 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearHolidayScheduleResponseCallback(apCommandObj, status); + emberAfContentLaunchClusterLaunchContentResponseCallback(apCommandObj, const_cast(data), + contentLaunchStatus); } else { @@ -243,35 +319,52 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_CLEAR_PIN_RESPONSE_COMMAND_ID: { + case ZCL_LAUNCH_URL_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint32_t validArgumentCount = 0; + const uint8_t * data; + bool dataExists = false; + uint8_t contentLaunchStatus; + bool contentLaunchStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (dataExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(data); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + dataExists = true; + validArgumentCount++; + } + break; + case 1: + if (contentLaunchStatusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(contentLaunchStatus); + if (CHIP_NO_ERROR == TLVUnpackError) + { + contentLaunchStatusExists = true; validArgumentCount++; } break; @@ -299,10 +392,11 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearPinResponseCallback(apCommandObj, status); + emberAfContentLaunchClusterLaunchURLResponseCallback(apCommandObj, const_cast(data), + contentLaunchStatus); } else { @@ -310,11 +404,31 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_CLEAR_RFID_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_CONTENT_LAUNCH_CLUSTER_ID); + break; + } + } + } +} + +} // namespace ContentLaunch + +namespace DoorLock { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_CLEAR_ALL_PINS_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. @@ -369,7 +483,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearRfidResponseCallback(apCommandObj, status); + emberAfDoorLockClusterClearAllPinsResponseCallback(apCommandObj, status); } else { @@ -381,7 +495,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_CLEAR_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + case ZCL_CLEAR_ALL_RFIDS_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. @@ -436,7 +550,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearWeekdayScheduleResponseCallback(apCommandObj, status); + emberAfDoorLockClusterClearAllRfidsResponseCallback(apCommandObj, status); } else { @@ -448,7 +562,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_CLEAR_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + case ZCL_CLEAR_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. @@ -503,7 +617,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterClearYeardayScheduleResponseCallback(apCommandObj, status); + emberAfDoorLockClusterClearHolidayScheduleResponseCallback(apCommandObj, status); } else { @@ -515,43 +629,21 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_GET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + case ZCL_CLEAR_PIN_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t scheduleId; - bool scheduleIdExists = false; uint8_t status; - bool statusExists = false; - uint32_t localStartTime; - bool localStartTimeExists = false; - uint32_t localEndTime; - bool localEndTimeExists = false; - uint8_t operatingModeDuringHoliday; - bool operatingModeDuringHolidayExists = false; - uint32_t validArgumentCount = 0; + bool statusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (scheduleIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(scheduleId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - scheduleIdExists = true; - validArgumentCount++; - } - break; - case 1: if (statusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); @@ -565,48 +657,6 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; - case 2: - if (localStartTimeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(localStartTime); - if (CHIP_NO_ERROR == TLVUnpackError) - { - localStartTimeExists = true; - validArgumentCount++; - } - break; - case 3: - if (localEndTimeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(localEndTime); - if (CHIP_NO_ERROR == TLVUnpackError) - { - localEndTimeExists = true; - validArgumentCount++; - } - break; - case 4: - if (operatingModeDuringHolidayExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(operatingModeDuringHoliday); - if (CHIP_NO_ERROR == TLVUnpackError) - { - operatingModeDuringHolidayExists = true; - validArgumentCount++; - } - break; default: // Unsupported tag, ignore it. ChipLogProgress(Zcl, "Unknown TLV tag during processing."); @@ -631,11 +681,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 5 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterGetHolidayScheduleResponseCallback(apCommandObj, scheduleId, status, localStartTime, - localEndTime, operatingModeDuringHoliday); + emberAfDoorLockClusterClearPinResponseCallback(apCommandObj, status); } else { @@ -643,30 +692,18 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 5, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_GET_LOG_RECORD_RESPONSE_COMMAND_ID: { + case ZCL_CLEAR_RFID_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t logEntryId; - bool logEntryIdExists = false; - uint32_t timestamp; - bool timestampExists = false; - uint8_t eventType; - bool eventTypeExists = false; - uint8_t source; - bool sourceExists = false; - uint8_t eventIdOrAlarmCode; - bool eventIdOrAlarmCodeExists = false; - uint16_t userId; - bool userIdExists = false; - const uint8_t * pin; - bool pinExists = false; + uint8_t status; + bool statusExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -674,101 +711,150 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (logEntryIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(logEntryId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - logEntryIdExists = true; - validArgumentCount++; - } - break; - case 1: - if (timestampExists) + if (statusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(timestamp); + TLVUnpackError = aDataTlv.Get(status); if (CHIP_NO_ERROR == TLVUnpackError) { - timestampExists = true; + statusExists = true; validArgumentCount++; } break; - case 2: - if (eventTypeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(eventType); - if (CHIP_NO_ERROR == TLVUnpackError) - { - eventTypeExists = true; - validArgumentCount++; - } + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); break; - case 3: - if (sourceExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(source); - if (CHIP_NO_ERROR == TLVUnpackError) - { - sourceExists = true; - validArgumentCount++; - } + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); break; - case 4: - if (eventIdOrAlarmCodeExists) + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterClearRfidResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_CLEAR_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(eventIdOrAlarmCode); + TLVUnpackError = aDataTlv.Get(status); if (CHIP_NO_ERROR == TLVUnpackError) { - eventIdOrAlarmCodeExists = true; + statusExists = true; validArgumentCount++; } break; - case 5: - if (userIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(userId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - userIdExists = true; - validArgumentCount++; - } + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); break; - case 6: - if (pinExists) + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterClearWeekdayScheduleResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_CLEAR_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(pin); + TLVUnpackError = aDataTlv.Get(status); if (CHIP_NO_ERROR == TLVUnpackError) { - pinExists = true; + statusExists = true; validArgumentCount++; } break; @@ -796,11 +882,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 7 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterGetLogRecordResponseCallback(apCommandObj, logEntryId, timestamp, eventType, source, - eventIdOrAlarmCode, userId, const_cast(pin)); + emberAfDoorLockClusterClearYeardayScheduleResponseCallback(apCommandObj, status); } else { @@ -808,84 +893,99 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 7, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_GET_PIN_RESPONSE_COMMAND_ID: { + case ZCL_GET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t userId; - bool userIdExists = false; - uint8_t userStatus; - bool userStatusExists = false; - uint8_t userType; - bool userTypeExists = false; - const uint8_t * pin; - bool pinExists = false; - uint32_t validArgumentCount = 0; + uint8_t scheduleId; + bool scheduleIdExists = false; + uint8_t status; + bool statusExists = false; + uint32_t localStartTime; + bool localStartTimeExists = false; + uint32_t localEndTime; + bool localEndTimeExists = false; + uint8_t operatingModeDuringHoliday; + bool operatingModeDuringHolidayExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (userIdExists) + if (scheduleIdExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(userId); + TLVUnpackError = aDataTlv.Get(scheduleId); if (CHIP_NO_ERROR == TLVUnpackError) { - userIdExists = true; + scheduleIdExists = true; validArgumentCount++; } break; case 1: - if (userStatusExists) + if (statusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(userStatus); + TLVUnpackError = aDataTlv.Get(status); if (CHIP_NO_ERROR == TLVUnpackError) { - userStatusExists = true; + statusExists = true; validArgumentCount++; } break; case 2: - if (userTypeExists) + if (localStartTimeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(userType); + TLVUnpackError = aDataTlv.Get(localStartTime); if (CHIP_NO_ERROR == TLVUnpackError) { - userTypeExists = true; + localStartTimeExists = true; validArgumentCount++; } break; case 3: - if (pinExists) + if (localEndTimeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(pin); + TLVUnpackError = aDataTlv.Get(localEndTime); if (CHIP_NO_ERROR == TLVUnpackError) { - pinExists = true; + localEndTimeExists = true; + validArgumentCount++; + } + break; + case 4: + if (operatingModeDuringHolidayExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(operatingModeDuringHoliday); + if (CHIP_NO_ERROR == TLVUnpackError) + { + operatingModeDuringHolidayExists = true; validArgumentCount++; } break; @@ -913,11 +1013,11 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 5 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterGetPinResponseCallback(apCommandObj, userId, userStatus, userType, - const_cast(pin)); + emberAfDoorLockClusterGetHolidayScheduleResponseCallback(apCommandObj, scheduleId, status, localStartTime, + localEndTime, operatingModeDuringHoliday); } else { @@ -925,24 +1025,30 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 4, validArgumentCount, TLVError, TLVUnpackError); + 5, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_GET_RFID_RESPONSE_COMMAND_ID: { + case ZCL_GET_LOG_RECORD_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint16_t logEntryId; + bool logEntryIdExists = false; + uint32_t timestamp; + bool timestampExists = false; + uint8_t eventType; + bool eventTypeExists = false; + uint8_t source; + bool sourceExists = false; + uint8_t eventIdOrAlarmCode; + bool eventIdOrAlarmCodeExists = false; uint16_t userId; bool userIdExists = false; - uint8_t userStatus; - bool userStatusExists = false; - uint8_t userType; - bool userTypeExists = false; - const uint8_t * rfid; - bool rfidExists = false; + const uint8_t * pin; + bool pinExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -950,7 +1056,166 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (userIdExists) + if (logEntryIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(logEntryId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + logEntryIdExists = true; + validArgumentCount++; + } + break; + case 1: + if (timestampExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(timestamp); + if (CHIP_NO_ERROR == TLVUnpackError) + { + timestampExists = true; + validArgumentCount++; + } + break; + case 2: + if (eventTypeExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(eventType); + if (CHIP_NO_ERROR == TLVUnpackError) + { + eventTypeExists = true; + validArgumentCount++; + } + break; + case 3: + if (sourceExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(source); + if (CHIP_NO_ERROR == TLVUnpackError) + { + sourceExists = true; + validArgumentCount++; + } + break; + case 4: + if (eventIdOrAlarmCodeExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(eventIdOrAlarmCode); + if (CHIP_NO_ERROR == TLVUnpackError) + { + eventIdOrAlarmCodeExists = true; + validArgumentCount++; + } + break; + case 5: + if (userIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userIdExists = true; + validArgumentCount++; + } + break; + case 6: + if (pinExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(pin); + if (CHIP_NO_ERROR == TLVUnpackError) + { + pinExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 7 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterGetLogRecordResponseCallback(apCommandObj, logEntryId, timestamp, eventType, source, + eventIdOrAlarmCode, userId, const_cast(pin)); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 7, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_GET_PIN_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint16_t userId; + bool userIdExists = false; + uint8_t userStatus; + bool userStatusExists = false; + uint8_t userType; + bool userTypeExists = false; + const uint8_t * pin; + bool pinExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (userIdExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; @@ -992,17 +1257,1133 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; case 3: - if (rfidExists) + if (pinExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(rfid); + TLVUnpackError = aDataTlv.GetDataPtr(pin); if (CHIP_NO_ERROR == TLVUnpackError) { - rfidExists = true; + pinExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterGetPinResponseCallback(apCommandObj, userId, userStatus, userType, + const_cast(pin)); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 4, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_GET_RFID_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint16_t userId; + bool userIdExists = false; + uint8_t userStatus; + bool userStatusExists = false; + uint8_t userType; + bool userTypeExists = false; + const uint8_t * rfid; + bool rfidExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (userIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userIdExists = true; + validArgumentCount++; + } + break; + case 1: + if (userStatusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userStatus); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userStatusExists = true; + validArgumentCount++; + } + break; + case 2: + if (userTypeExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userType); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userTypeExists = true; + validArgumentCount++; + } + break; + case 3: + if (rfidExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(rfid); + if (CHIP_NO_ERROR == TLVUnpackError) + { + rfidExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterGetRfidResponseCallback(apCommandObj, userId, userStatus, userType, + const_cast(rfid)); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 4, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_GET_USER_TYPE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint16_t userId; + bool userIdExists = false; + uint8_t userType; + bool userTypeExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (userIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userIdExists = true; + validArgumentCount++; + } + break; + case 1: + if (userTypeExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userType); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userTypeExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterGetUserTypeResponseCallback(apCommandObj, userId, userType); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 2, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_GET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t scheduleId; + bool scheduleIdExists = false; + uint16_t userId; + bool userIdExists = false; + uint8_t status; + bool statusExists = false; + uint8_t daysMask; + bool daysMaskExists = false; + uint8_t startHour; + bool startHourExists = false; + uint8_t startMinute; + bool startMinuteExists = false; + uint8_t endHour; + bool endHourExists = false; + uint8_t endMinute; + bool endMinuteExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (scheduleIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(scheduleId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + scheduleIdExists = true; + validArgumentCount++; + } + break; + case 1: + if (userIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userIdExists = true; + validArgumentCount++; + } + break; + case 2: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + case 3: + if (daysMaskExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(daysMask); + if (CHIP_NO_ERROR == TLVUnpackError) + { + daysMaskExists = true; + validArgumentCount++; + } + break; + case 4: + if (startHourExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(startHour); + if (CHIP_NO_ERROR == TLVUnpackError) + { + startHourExists = true; + validArgumentCount++; + } + break; + case 5: + if (startMinuteExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(startMinute); + if (CHIP_NO_ERROR == TLVUnpackError) + { + startMinuteExists = true; + validArgumentCount++; + } + break; + case 6: + if (endHourExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(endHour); + if (CHIP_NO_ERROR == TLVUnpackError) + { + endHourExists = true; + validArgumentCount++; + } + break; + case 7: + if (endMinuteExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(endMinute); + if (CHIP_NO_ERROR == TLVUnpackError) + { + endMinuteExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 8 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterGetWeekdayScheduleResponseCallback(apCommandObj, scheduleId, userId, status, daysMask, + startHour, startMinute, endHour, endMinute); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 8, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_GET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t scheduleId; + bool scheduleIdExists = false; + uint16_t userId; + bool userIdExists = false; + uint8_t status; + bool statusExists = false; + uint32_t localStartTime; + bool localStartTimeExists = false; + uint32_t localEndTime; + bool localEndTimeExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (scheduleIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(scheduleId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + scheduleIdExists = true; + validArgumentCount++; + } + break; + case 1: + if (userIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(userId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + userIdExists = true; + validArgumentCount++; + } + break; + case 2: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + case 3: + if (localStartTimeExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(localStartTime); + if (CHIP_NO_ERROR == TLVUnpackError) + { + localStartTimeExists = true; + validArgumentCount++; + } + break; + case 4: + if (localEndTimeExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(localEndTime); + if (CHIP_NO_ERROR == TLVUnpackError) + { + localEndTimeExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 5 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterGetYeardayScheduleResponseCallback(apCommandObj, scheduleId, userId, status, localStartTime, + localEndTime); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 5, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_LOCK_DOOR_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterLockDoorResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_SET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterSetHolidayScheduleResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_SET_PIN_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterSetPinResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_SET_RFID_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterSetRfidResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_SET_USER_TYPE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterSetUserTypeResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_SET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterSetWeekdayScheduleResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_SET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterSetYeardayScheduleResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_UNLOCK_DOOR_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfDoorLockClusterUnlockDoorResponseCallback(apCommandObj, status); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 1, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + case ZCL_UNLOCK_WITH_TIMEOUT_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; validArgumentCount++; } break; @@ -1030,11 +2411,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 4 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterGetRfidResponseCallback(apCommandObj, userId, userStatus, userType, - const_cast(rfid)); + emberAfDoorLockClusterUnlockWithTimeoutResponseCallback(apCommandObj, status); } else { @@ -1042,20 +2422,40 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 4, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_GET_USER_TYPE_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_DOOR_LOCK_CLUSTER_ID); + break; + } + } + } +} + +} // namespace DoorLock + +namespace GeneralCommissioning { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_ARM_FAIL_SAFE_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t userId; - bool userIdExists = false; - uint8_t userType; - bool userTypeExists = false; + uint8_t errorCode; + bool errorCodeExists = false; + const uint8_t * debugText; + bool debugTextExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1063,30 +2463,31 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (userIdExists) + if (errorCodeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(userId); + TLVUnpackError = aDataTlv.Get(errorCode); if (CHIP_NO_ERROR == TLVUnpackError) { - userIdExists = true; + errorCodeExists = true; validArgumentCount++; } break; case 1: - if (userTypeExists) + if (debugTextExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(userType); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(debugText); if (CHIP_NO_ERROR == TLVUnpackError) { - userTypeExists = true; + debugTextExists = true; validArgumentCount++; } break; @@ -1117,7 +2518,8 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterGetUserTypeResponseCallback(apCommandObj, userId, userType); + emberAfGeneralCommissioningClusterArmFailSafeResponseCallback(apCommandObj, errorCode, + const_cast(debugText)); } else { @@ -1129,28 +2531,16 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_GET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + case ZCL_COMMISSIONING_COMPLETE_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t scheduleId; - bool scheduleIdExists = false; - uint16_t userId; - bool userIdExists = false; - uint8_t status; - bool statusExists = false; - uint8_t daysMask; - bool daysMaskExists = false; - uint8_t startHour; - bool startHourExists = false; - uint8_t startMinute; - bool startMinuteExists = false; - uint8_t endHour; - bool endHourExists = false; - uint8_t endMinute; - bool endMinuteExists = false; + uint8_t errorCode; + bool errorCodeExists = false; + const uint8_t * debugText; + bool debugTextExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1158,114 +2548,31 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (scheduleIdExists) + if (errorCodeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(scheduleId); + TLVUnpackError = aDataTlv.Get(errorCode); if (CHIP_NO_ERROR == TLVUnpackError) { - scheduleIdExists = true; + errorCodeExists = true; validArgumentCount++; } break; case 1: - if (userIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(userId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - userIdExists = true; - validArgumentCount++; - } - break; - case 2: - if (statusExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(status); - if (CHIP_NO_ERROR == TLVUnpackError) - { - statusExists = true; - validArgumentCount++; - } - break; - case 3: - if (daysMaskExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(daysMask); - if (CHIP_NO_ERROR == TLVUnpackError) - { - daysMaskExists = true; - validArgumentCount++; - } - break; - case 4: - if (startHourExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(startHour); - if (CHIP_NO_ERROR == TLVUnpackError) - { - startHourExists = true; - validArgumentCount++; - } - break; - case 5: - if (startMinuteExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(startMinute); - if (CHIP_NO_ERROR == TLVUnpackError) - { - startMinuteExists = true; - validArgumentCount++; - } - break; - case 6: - if (endHourExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(endHour); - if (CHIP_NO_ERROR == TLVUnpackError) - { - endHourExists = true; - validArgumentCount++; - } - break; - case 7: - if (endMinuteExists) + if (debugTextExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(endMinute); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(debugText); if (CHIP_NO_ERROR == TLVUnpackError) { - endMinuteExists = true; + debugTextExists = true; validArgumentCount++; } break; @@ -1293,11 +2600,11 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 8 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterGetWeekdayScheduleResponseCallback(apCommandObj, scheduleId, userId, status, daysMask, - startHour, startMinute, endHour, endMinute); + emberAfGeneralCommissioningClusterCommissioningCompleteResponseCallback(apCommandObj, errorCode, + const_cast(debugText)); } else { @@ -1305,26 +2612,20 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 8, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_GET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + case ZCL_SET_REGULATORY_CONFIG_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t scheduleId; - bool scheduleIdExists = false; - uint16_t userId; - bool userIdExists = false; - uint8_t status; - bool statusExists = false; - uint32_t localStartTime; - bool localStartTimeExists = false; - uint32_t localEndTime; - bool localEndTimeExists = false; + uint8_t errorCode; + bool errorCodeExists = false; + const uint8_t * debugText; + bool debugTextExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1332,72 +2633,31 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (scheduleIdExists) + if (errorCodeExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(scheduleId); + TLVUnpackError = aDataTlv.Get(errorCode); if (CHIP_NO_ERROR == TLVUnpackError) { - scheduleIdExists = true; + errorCodeExists = true; validArgumentCount++; } break; case 1: - if (userIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(userId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - userIdExists = true; - validArgumentCount++; - } - break; - case 2: - if (statusExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(status); - if (CHIP_NO_ERROR == TLVUnpackError) - { - statusExists = true; - validArgumentCount++; - } - break; - case 3: - if (localStartTimeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(localStartTime); - if (CHIP_NO_ERROR == TLVUnpackError) - { - localStartTimeExists = true; - validArgumentCount++; - } - break; - case 4: - if (localEndTimeExists) + if (debugTextExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(localEndTime); + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(debugText); if (CHIP_NO_ERROR == TLVUnpackError) { - localEndTimeExists = true; + debugTextExists = true; validArgumentCount++; } break; @@ -1425,11 +2685,11 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 5 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { - // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterGetYeardayScheduleResponseCallback(apCommandObj, scheduleId, userId, status, localStartTime, - localEndTime); + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfGeneralCommissioningClusterSetRegulatoryConfigResponseCallback(apCommandObj, errorCode, + const_cast(debugText)); } else { @@ -1437,18 +2697,40 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 5, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_LOCK_DOOR_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_GENERAL_COMMISSIONING_CLUSTER_ID); + break; + } + } + } +} + +} // namespace GeneralCommissioning + +namespace Groups { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_ADD_GROUP_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; uint8_t status; - bool statusExists = false; + bool statusExists = false; + uint16_t groupId; + bool groupIdExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1469,6 +2751,20 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; + case 1: + if (groupIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(groupId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + groupIdExists = true; + validArgumentCount++; + } + break; default: // Unsupported tag, ignore it. ChipLogProgress(Zcl, "Unknown TLV tag during processing."); @@ -1493,10 +2789,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterLockDoorResponseCallback(apCommandObj, status); + emberAfGroupsClusterAddGroupResponseCallback(apCommandObj, status, groupId); } else { @@ -1504,18 +2800,22 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_SET_HOLIDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + case ZCL_GET_GROUP_MEMBERSHIP_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; + uint8_t capacity; + bool capacityExists = false; + uint8_t groupCount; + bool groupCountExists = false; + /* TYPE WARNING: array array defaults to */ uint8_t * groupList; + bool groupListExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1523,16 +2823,45 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (capacityExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + TLVUnpackError = aDataTlv.Get(capacity); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + capacityExists = true; + validArgumentCount++; + } + break; + case 1: + if (groupCountExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(groupCount); + if (CHIP_NO_ERROR == TLVUnpackError) + { + groupCountExists = true; + validArgumentCount++; + } + break; + case 2: + if (groupListExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // Just for compatibility, we will add array type support in IM later. + TLVUnpackError = aDataTlv.GetDataPtr(const_cast(groupList)); + if (CHIP_NO_ERROR == TLVUnpackError) + { + groupListExists = true; validArgumentCount++; } break; @@ -1560,10 +2889,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 3 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterSetHolidayScheduleResponseCallback(apCommandObj, status); + emberAfGroupsClusterGetGroupMembershipResponseCallback(apCommandObj, capacity, groupCount, groupList); } else { @@ -1571,18 +2900,20 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); + 3, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_SET_PIN_RESPONSE_COMMAND_ID: { + case ZCL_REMOVE_GROUP_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; uint8_t status; - bool statusExists = false; + bool statusExists = false; + uint16_t groupId; + bool groupIdExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1603,6 +2934,20 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; + case 1: + if (groupIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(groupId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + groupIdExists = true; + validArgumentCount++; + } + break; default: // Unsupported tag, ignore it. ChipLogProgress(Zcl, "Unknown TLV tag during processing."); @@ -1627,10 +2972,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterSetPinResponseCallback(apCommandObj, status); + emberAfGroupsClusterRemoveGroupResponseCallback(apCommandObj, status, groupId); } else { @@ -1638,18 +2983,22 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); + 2, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_SET_RFID_RESPONSE_COMMAND_ID: { + case ZCL_VIEW_GROUP_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; uint8_t status; - bool statusExists = false; + bool statusExists = false; + uint16_t groupId; + bool groupIdExists = false; + const uint8_t * groupName; + bool groupNameExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1670,6 +3019,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En validArgumentCount++; } break; + case 1: + if (groupIdExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(groupId); + if (CHIP_NO_ERROR == TLVUnpackError) + { + groupIdExists = true; + validArgumentCount++; + } + break; + case 2: + if (groupNameExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(groupName); + if (CHIP_NO_ERROR == TLVUnpackError) + { + groupNameExists = true; + validArgumentCount++; + } + break; default: // Unsupported tag, ignore it. ChipLogProgress(Zcl, "Unknown TLV tag during processing."); @@ -1694,10 +3072,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 3 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterSetRfidResponseCallback(apCommandObj, status); + emberAfGroupsClusterViewGroupResponseCallback(apCommandObj, status, groupId, const_cast(groupName)); } else { @@ -1705,18 +3083,38 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 1, validArgumentCount, TLVError, TLVUnpackError); + 3, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_SET_USER_TYPE_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_GROUPS_CLUSTER_ID); + break; + } + } + } +} + +} // namespace Groups + +namespace Identify { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_IDENTIFY_QUERY_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; + uint16_t timeout; + bool timeoutExists = false; uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) @@ -1724,16 +3122,16 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (timeoutExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + TLVUnpackError = aDataTlv.Get(timeout); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + timeoutExists = true; validArgumentCount++; } break; @@ -1764,7 +3162,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterSetUserTypeResponseCallback(apCommandObj, status); + emberAfIdentifyClusterIdentifyQueryResponseCallback(apCommandObj, timeout); } else { @@ -1776,7 +3174,27 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_SET_WEEKDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_IDENTIFY_CLUSTER_ID); + break; + } + } + } +} + +} // namespace Identify + +namespace KeypadInput { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_SEND_KEY_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. @@ -1831,7 +3249,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterSetWeekdayScheduleResponseCallback(apCommandObj, status); + emberAfKeypadInputClusterSendKeyResponseCallback(apCommandObj, status); } else { @@ -1843,31 +3261,51 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_SET_YEARDAY_SCHEDULE_RESPONSE_COMMAND_ID: { + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_KEYPAD_INPUT_CLUSTER_ID); + break; + } + } + } +} + +} // namespace KeypadInput + +namespace MediaPlayback { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_MEDIA_FAST_FORWARD_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -1898,7 +3336,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterSetYeardayScheduleResponseCallback(apCommandObj, status); + emberAfMediaPlaybackClusterMediaFastForwardResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -1910,31 +3348,31 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_UNLOCK_DOOR_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_NEXT_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -1965,7 +3403,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterUnlockDoorResponseCallback(apCommandObj, status); + emberAfMediaPlaybackClusterMediaNextResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -1977,31 +3415,31 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - case ZCL_UNLOCK_WITH_TIMEOUT_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_PAUSE_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(status); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - statusExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2032,7 +3470,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfDoorLockClusterUnlockWithTimeoutResponseCallback(apCommandObj, status); + emberAfMediaPlaybackClusterMediaPauseResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2044,68 +3482,31 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } break; } - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_DOOR_LOCK_CLUSTER_ID); - break; - } - } - } -} - -} // namespace DoorLock - -namespace GeneralCommissioning { - -void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - case ZCL_ARM_FAIL_SAFE_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_PLAY_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t errorCode; - bool errorCodeExists = false; - const uint8_t * debugText; - bool debugTextExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (errorCodeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(errorCode); - if (CHIP_NO_ERROR == TLVUnpackError) - { - errorCodeExists = true; - validArgumentCount++; - } - break; - case 1: - if (debugTextExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(debugText); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - debugTextExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2133,11 +3534,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGeneralCommissioningClusterArmFailSafeResponseCallback(apCommandObj, errorCode, - const_cast(debugText)); + emberAfMediaPlaybackClusterMediaPlayResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2145,52 +3545,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_COMMISSIONING_COMPLETE_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_PREVIOUS_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t errorCode; - bool errorCodeExists = false; - const uint8_t * debugText; - bool debugTextExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (errorCodeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(errorCode); - if (CHIP_NO_ERROR == TLVUnpackError) - { - errorCodeExists = true; - validArgumentCount++; - } - break; - case 1: - if (debugTextExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(debugText); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - debugTextExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2218,11 +3601,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGeneralCommissioningClusterCommissioningCompleteResponseCallback(apCommandObj, errorCode, - const_cast(debugText)); + emberAfMediaPlaybackClusterMediaPreviousResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2230,52 +3612,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_SET_REGULATORY_CONFIG_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_REWIND_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t errorCode; - bool errorCodeExists = false; - const uint8_t * debugText; - bool debugTextExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (errorCodeExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(errorCode); - if (CHIP_NO_ERROR == TLVUnpackError) - { - errorCodeExists = true; - validArgumentCount++; - } - break; - case 1: - if (debugTextExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(debugText); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - debugTextExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2303,11 +3668,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGeneralCommissioningClusterSetRegulatoryConfigResponseCallback(apCommandObj, errorCode, - const_cast(debugText)); + emberAfMediaPlaybackClusterMediaRewindResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2315,71 +3679,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_GENERAL_COMMISSIONING_CLUSTER_ID); - break; - } - } - } -} - -} // namespace GeneralCommissioning - -namespace Groups { - -void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - case ZCL_ADD_GROUP_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_SKIP_BACKWARD_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint16_t groupId; - bool groupIdExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(status); - if (CHIP_NO_ERROR == TLVUnpackError) - { - statusExists = true; - validArgumentCount++; - } - break; - case 1: - if (groupIdExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(groupId); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - groupIdExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2407,10 +3735,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGroupsClusterAddGroupResponseCallback(apCommandObj, status, groupId); + emberAfMediaPlaybackClusterMediaSkipBackwardResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2418,68 +3746,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_GET_GROUP_MEMBERSHIP_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t capacity; - bool capacityExists = false; - uint8_t groupCount; - bool groupCountExists = false; - /* TYPE WARNING: array array defaults to */ uint8_t * groupList; - bool groupListExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (capacityExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(capacity); - if (CHIP_NO_ERROR == TLVUnpackError) - { - capacityExists = true; - validArgumentCount++; - } - break; - case 1: - if (groupCountExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(groupCount); - if (CHIP_NO_ERROR == TLVUnpackError) - { - groupCountExists = true; - validArgumentCount++; - } - break; - case 2: - if (groupListExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - // Just for compatibility, we will add array type support in IM later. - TLVUnpackError = aDataTlv.GetDataPtr(const_cast(groupList)); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - groupListExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2507,10 +3802,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 3 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGroupsClusterGetGroupMembershipResponseCallback(apCommandObj, capacity, groupCount, groupList); + emberAfMediaPlaybackClusterMediaSkipForwardResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2518,51 +3813,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 3, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - case ZCL_REMOVE_GROUP_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_SKIP_SEEK_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint16_t groupId; - bool groupIdExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(status); - if (CHIP_NO_ERROR == TLVUnpackError) - { - statusExists = true; - validArgumentCount++; - } - break; - case 1: - if (groupIdExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(groupId); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - groupIdExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2590,10 +3869,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGroupsClusterRemoveGroupResponseCallback(apCommandObj, status, groupId); + emberAfMediaPlaybackClusterMediaSkipSeekResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2601,68 +3880,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 2, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; - } - case ZCL_VIEW_GROUP_RESPONSE_COMMAND_ID: { - // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV - // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. - // Any error value TLVUnpackError means we have received an illegal value. - CHIP_ERROR TLVError = CHIP_NO_ERROR; - CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint8_t status; - bool statusExists = false; - uint16_t groupId; - bool groupIdExists = false; - const uint8_t * groupName; - bool groupNameExists = false; - uint32_t validArgumentCount = 0; + } + case ZCL_MEDIA_START_OVER_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (statusExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(status); - if (CHIP_NO_ERROR == TLVUnpackError) - { - statusExists = true; - validArgumentCount++; - } - break; - case 1: - if (groupIdExists) - { - ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); - TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; - break; - } - TLVUnpackError = aDataTlv.Get(groupId); - if (CHIP_NO_ERROR == TLVUnpackError) - { - groupIdExists = true; - validArgumentCount++; - } - break; - case 2: - if (groupNameExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. - TLVUnpackError = aDataTlv.GetDataPtr(groupName); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - groupNameExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2690,10 +3936,10 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // TODO(#5590) We should encode a response of status code for invalid TLV. - if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 3 == validArgumentCount) + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfGroupsClusterViewGroupResponseCallback(apCommandObj, status, groupId, const_cast(groupName)); + emberAfMediaPlaybackClusterMediaStartOverResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2701,55 +3947,35 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); ChipLogProgress( Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, - 3, validArgumentCount, TLVError, TLVUnpackError); + 1, validArgumentCount, TLVError, TLVUnpackError); } break; } - default: { - // Unrecognized command ID, error status will apply. - apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, - Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_GROUPS_CLUSTER_ID); - break; - } - } - } -} - -} // namespace Groups - -namespace Identify { - -void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) -{ - { - switch (aCommandId) - { - case ZCL_IDENTIFY_QUERY_RESPONSE_COMMAND_ID: { + case ZCL_MEDIA_STOP_RESPONSE_COMMAND_ID: { // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. // Any error value TLVUnpackError means we have received an illegal value. CHIP_ERROR TLVError = CHIP_NO_ERROR; CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; - uint16_t timeout; - bool timeoutExists = false; - uint32_t validArgumentCount = 0; + uint8_t mediaPlaybackStatus; + bool mediaPlaybackStatusExists = false; + uint32_t validArgumentCount = 0; while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) { switch (TLV::TagNumFromTag(aDataTlv.GetTag())) { case 0: - if (timeoutExists) + if (mediaPlaybackStatusExists) { ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; break; } - TLVUnpackError = aDataTlv.Get(timeout); + TLVUnpackError = aDataTlv.Get(mediaPlaybackStatus); if (CHIP_NO_ERROR == TLVUnpackError) { - timeoutExists = true; + mediaPlaybackStatusExists = true; validArgumentCount++; } break; @@ -2780,7 +4006,7 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 1 == validArgumentCount) { // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. - emberAfIdentifyClusterIdentifyQueryResponseCallback(apCommandObj, timeout); + emberAfMediaPlaybackClusterMediaStopResponseCallback(apCommandObj, mediaPlaybackStatus); } else { @@ -2796,14 +4022,14 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En // Unrecognized command ID, error status will apply. apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); - ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_IDENTIFY_CLUSTER_ID); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_MEDIA_PLAYBACK_CLUSTER_ID); break; } } } } -} // namespace Identify +} // namespace MediaPlayback namespace NetworkCommissioning { @@ -4310,6 +5536,214 @@ void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, En } // namespace Scenes +namespace TvChannel { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_CHANGE_CHANNEL_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + /* TYPE WARNING: array array defaults to */ uint8_t * ChannelMatch; + bool ChannelMatchExists = false; + uint8_t ErrorType; + bool ErrorTypeExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (ChannelMatchExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // Just for compatibility, we will add array type support in IM later. + TLVUnpackError = aDataTlv.GetDataPtr(const_cast(ChannelMatch)); + if (CHIP_NO_ERROR == TLVUnpackError) + { + ChannelMatchExists = true; + validArgumentCount++; + } + break; + case 1: + if (ErrorTypeExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(ErrorType); + if (CHIP_NO_ERROR == TLVUnpackError) + { + ErrorTypeExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfTvChannelClusterChangeChannelResponseCallback(apCommandObj, ChannelMatch, ErrorType); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 2, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_TV_CHANNEL_CLUSTER_ID); + break; + } + } + } +} + +} // namespace TvChannel + +namespace TargetNavigator { + +void DispatchClientCommand(app::Command * apCommandObj, CommandId aCommandId, EndpointId aEndpointId, TLV::TLVReader & aDataTlv) +{ + { + switch (aCommandId) + { + case ZCL_NAVIGATE_TARGET_RESPONSE_COMMAND_ID: { + // We are using TLVUnpackError and TLVError here since both of them can be CHIP_END_OF_TLV + // When TLVError is CHIP_END_OF_TLV, it means we have iterated all of the items, which is not a real error. + // Any error value TLVUnpackError means we have received an illegal value. + CHIP_ERROR TLVError = CHIP_NO_ERROR; + CHIP_ERROR TLVUnpackError = CHIP_NO_ERROR; + uint8_t status; + bool statusExists = false; + const uint8_t * data; + bool dataExists = false; + uint32_t validArgumentCount = 0; + + while ((TLVError = aDataTlv.Next()) == CHIP_NO_ERROR) + { + switch (TLV::TagNumFromTag(aDataTlv.GetTag())) + { + case 0: + if (statusExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + TLVUnpackError = aDataTlv.Get(status); + if (CHIP_NO_ERROR == TLVUnpackError) + { + statusExists = true; + validArgumentCount++; + } + break; + case 1: + if (dataExists) + { + ChipLogProgress(Zcl, "Duplicate TLV tag %" PRIx32, TLV::TagNumFromTag(aDataTlv.GetTag())); + TLVUnpackError = CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_ELEMENT; + break; + } + // TODO(#5542): The cluster handlers should accept a ByteSpan for all string types. + TLVUnpackError = aDataTlv.GetDataPtr(data); + if (CHIP_NO_ERROR == TLVUnpackError) + { + dataExists = true; + validArgumentCount++; + } + break; + default: + // Unsupported tag, ignore it. + ChipLogProgress(Zcl, "Unknown TLV tag during processing."); + break; + } + if (TLVUnpackError != CHIP_NO_ERROR) + { + ChipLogProgress(Zcl, "Failed to decode TLV data with tag %" PRIx32 ": %" PRId32, + TLV::TagNumFromTag(aDataTlv.GetTag()), TLVUnpackError); + break; + } + } + + if (CHIP_END_OF_TLV == TLVError) + { + // CHIP_END_OF_TLV means we have iterated all items in the structure, which is not a real error. + TLVError = CHIP_NO_ERROR; + } + else + { + ChipLogProgress(Zcl, "Failed to decode TLV data: %" PRId32, TLVError); + } + + // TODO(#5590) We should encode a response of status code for invalid TLV. + if (CHIP_NO_ERROR == TLVError && CHIP_NO_ERROR == TLVUnpackError && 2 == validArgumentCount) + { + // TODO(#5098) We should pass the Command Object and EndpointId to the cluster callbacks. + emberAfTargetNavigatorClusterNavigateTargetResponseCallback(apCommandObj, status, const_cast(data)); + } + else + { + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kBadRequest, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogProgress( + Zcl, "Failed to dispatch command, %d/%" PRIu32 " arguments parsed, TLVError=%" PRIu32 ", UnpackError=%" PRIu32, + 2, validArgumentCount, TLVError, TLVUnpackError); + } + break; + } + default: { + // Unrecognized command ID, error status will apply. + apCommandObj->AddStatusCode(nullptr, Protocols::SecureChannel::GeneralStatusCode::kNotFound, + Protocols::SecureChannel::Id, Protocols::SecureChannel::kProtocolCodeGeneralFailure); + ChipLogError(Zcl, "Unknown command %" PRIx16 " for cluster %" PRIx16, aCommandId, ZCL_TARGET_NAVIGATOR_CLUSTER_ID); + break; + } + } + } +} + +} // namespace TargetNavigator + } // namespace clusters void DispatchSingleClusterCommand(chip::ClusterId aClusterId, chip::CommandId aCommandId, chip::EndpointId aEndPointId, diff --git a/src/controller/python/gen/af-structs.h b/src/controller/python/gen/af-structs.h index b19ca54657a27a..16a5ef656d51ef 100644 --- a/src/controller/python/gen/af-structs.h +++ b/src/controller/python/gen/af-structs.h @@ -34,9 +34,9 @@ typedef struct _ApplicationLauncherApp // Struct for AudioOutputInfo typedef struct _AudioOutputInfo { - uint8_t Index; - uint8_t OutputType; - uint8_t * Name; + uint8_t index; + uint8_t outputType; + uint8_t * name; } EmberAfAudioOutputInfo; // Struct for BasicCommissioningInfoType @@ -100,17 +100,44 @@ typedef struct _ConfigureReportingStatusRecord // Struct for ContentLaunchAdditionalInfo typedef struct _ContentLaunchAdditionalInfo { - uint8_t * Name; - uint8_t * Value; + uint8_t * name; + uint8_t * value; } EmberAfContentLaunchAdditionalInfo; -// Struct for ContentLaunchSearch -typedef struct _ContentLaunchSearch +// Struct for ContentLaunchBrandingInformation +typedef struct _ContentLaunchBrandingInformation +{ + uint8_t * providerName; + uint8_t background; + uint8_t logo; + uint8_t progressBar; + uint8_t splash; + uint8_t waterMark; +} EmberAfContentLaunchBrandingInformation; + +// Struct for ContentLaunchDimension +typedef struct _ContentLaunchDimension +{ + uint8_t * width; + uint8_t * height; + uint8_t metric; +} EmberAfContentLaunchDimension; + +// Struct for ContentLaunchParamater +typedef struct _ContentLaunchParamater { - uint8_t EntitiesList; - uint8_t * searchWindowStart; - uint8_t * searchWindowEnd; -} EmberAfContentLaunchSearch; + uint8_t Type; + uint8_t * Value; + /* TYPE WARNING: array array defaults to */ uint8_t * ExternalIDList; +} EmberAfContentLaunchParamater; + +// Struct for ContentLaunchStyleInformation +typedef struct _ContentLaunchStyleInformation +{ + uint8_t * imageUrl; + uint8_t * color; + uint8_t size; +} EmberAfContentLaunchStyleInformation; // Struct for DebtPayload typedef struct _DebtPayload @@ -253,12 +280,19 @@ typedef uint8_t EmberAfIdentity; // Struct for MediaInputInfo typedef struct _MediaInputInfo { - uint8_t Index; - uint8_t InputType; - uint8_t * Name; - uint8_t * Description; + uint8_t index; + uint8_t inputType; + uint8_t * name; + uint8_t * description; } EmberAfMediaInputInfo; +// Struct for MediaPlaybackPosition +typedef struct _MediaPlaybackPosition +{ + uint64_t updatedAt; + uint64_t position; +} EmberAfMediaPlaybackPosition; + // Struct for NavigateTargetTargetInfo typedef struct _NavigateTargetTargetInfo { @@ -485,20 +519,20 @@ typedef struct _TransferredPhase // Struct for TvChannelInfo typedef struct _TvChannelInfo { - uint16_t MajorNumber; - uint16_t MinorNumber; - uint8_t * Name; - uint8_t * CallSign; - uint8_t * AffiliateCallSign; + uint16_t majorNumber; + uint16_t minorNumber; + uint8_t * name; + uint8_t * callSign; + uint8_t * affiliateCallSign; } EmberAfTvChannelInfo; // Struct for TvChannelLineupInfo typedef struct _TvChannelLineupInfo { - uint8_t * OperatorName; - uint8_t * LineupName; - uint8_t * PostalCode; - uint8_t LineupInfoType; + uint8_t * operatorName; + uint8_t * lineupName; + uint8_t * postalCode; + uint8_t lineupInfoType; } EmberAfTvChannelLineupInfo; // Struct for WiFiInterfaceScanResult diff --git a/src/controller/python/gen/attribute-id.h b/src/controller/python/gen/attribute-id.h index 6c224f5faf016e..8e7aa393464caf 100644 --- a/src/controller/python/gen/attribute-id.h +++ b/src/controller/python/gen/attribute-id.h @@ -1167,7 +1167,14 @@ // Client attributes // Server attributes -#define ZCL_CURRENT_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_START_TIME_ATTRIBUTE_ID (0x0001) +#define ZCL_MEDIA_PLAYBACK_DURATION_ATTRIBUTE_ID (0x0002) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_UPDATED_AT_ATTRIBUTE_ID (0x0003) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_ATTRIBUTE_ID (0x0004) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SPEED_ATTRIBUTE_ID (0x0005) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_END_ATTRIBUTE_ID (0x0006) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_START_ATTRIBUTE_ID (0x0007) // Attribute ids for cluster: Media Input @@ -1194,6 +1201,8 @@ // Client attributes // Server attributes +#define ZCL_CONTENT_LAUNCHER_ACCEPTS_HEADER_ATTRIBUTE_ID (0x0000) +#define ZCL_CONTENT_LAUNCHER_SUPPORTED_STREAMING_TYPES_ATTRIBUTE_ID (0x0001) // Attribute ids for cluster: Audio Output @@ -1209,7 +1218,8 @@ // Server attributes #define ZCL_APPLICATION_LAUNCHER_LIST_ATTRIBUTE_ID (0x0000) -#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_CATALOG_VENDOR_ID_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_APPLICATION_ID_ATTRIBUTE_ID (0x0002) // Attribute ids for cluster: Application Basic diff --git a/src/controller/python/gen/call-command-handler.cpp b/src/controller/python/gen/call-command-handler.cpp index 25af5b817391f8..73e9df19068857 100644 --- a/src/controller/python/gen/call-command-handler.cpp +++ b/src/controller/python/gen/call-command-handler.cpp @@ -28,27 +28,37 @@ using namespace chip; +EmberAfStatus emberAfAccountLoginClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfApplicationBasicClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfApplicationLauncherClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfAudioOutputClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfBarrierControlClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfBasicClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfBindingClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfColorControlClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfContentLaunchClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfDescriptorClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfDoorLockClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfGeneralCommissioningClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfGroupKeyManagementClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfGroupsClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfIdentifyClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfKeypadInputClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfLevelControlClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfLowPowerClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfMediaInputClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfMediaPlaybackClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfNetworkCommissioningClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfOnOffClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfOperationalCredentialsClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfPumpConfigurationAndControlClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfScenesClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfSwitchClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfTvChannelClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfTargetNavigatorClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfTemperatureMeasurementClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfThermostatClusterClientCommandParse(EmberAfClusterCommand * cmd); +EmberAfStatus emberAfWakeOnLanClusterClientCommandParse(EmberAfClusterCommand * cmd); EmberAfStatus emberAfWindowCoveringClusterClientCommandParse(EmberAfClusterCommand * cmd); static EmberAfStatus status(bool wasHandled, bool clusterExists, bool mfgSpecific) @@ -80,10 +90,20 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) { switch (cmd->apsFrame->clusterId) { + case ZCL_ACCOUNT_LOGIN_CLUSTER_ID: + result = emberAfAccountLoginClusterClientCommandParse(cmd); + break; case ZCL_APPLICATION_BASIC_CLUSTER_ID: // No commands are enabled for cluster Application Basic result = status(false, true, cmd->mfgSpecific); break; + case ZCL_APPLICATION_LAUNCHER_CLUSTER_ID: + result = emberAfApplicationLauncherClusterClientCommandParse(cmd); + break; + case ZCL_AUDIO_OUTPUT_CLUSTER_ID: + // No commands are enabled for cluster Audio Output + result = status(false, true, cmd->mfgSpecific); + break; case ZCL_BARRIER_CONTROL_CLUSTER_ID: // No commands are enabled for cluster Barrier Control result = status(false, true, cmd->mfgSpecific); @@ -100,6 +120,9 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) // No commands are enabled for cluster Color Control result = status(false, true, cmd->mfgSpecific); break; + case ZCL_CONTENT_LAUNCH_CLUSTER_ID: + result = emberAfContentLaunchClusterClientCommandParse(cmd); + break; case ZCL_DESCRIPTOR_CLUSTER_ID: // No commands are enabled for cluster Descriptor result = status(false, true, cmd->mfgSpecific); @@ -120,6 +143,9 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) case ZCL_IDENTIFY_CLUSTER_ID: result = emberAfIdentifyClusterClientCommandParse(cmd); break; + case ZCL_KEYPAD_INPUT_CLUSTER_ID: + result = emberAfKeypadInputClusterClientCommandParse(cmd); + break; case ZCL_LEVEL_CONTROL_CLUSTER_ID: // No commands are enabled for cluster Level Control result = status(false, true, cmd->mfgSpecific); @@ -128,6 +154,13 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) // No commands are enabled for cluster Low Power result = status(false, true, cmd->mfgSpecific); break; + case ZCL_MEDIA_INPUT_CLUSTER_ID: + // No commands are enabled for cluster Media Input + result = status(false, true, cmd->mfgSpecific); + break; + case ZCL_MEDIA_PLAYBACK_CLUSTER_ID: + result = emberAfMediaPlaybackClusterClientCommandParse(cmd); + break; case ZCL_NETWORK_COMMISSIONING_CLUSTER_ID: result = emberAfNetworkCommissioningClusterClientCommandParse(cmd); break; @@ -149,6 +182,12 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) // No commands are enabled for cluster Switch result = status(false, true, cmd->mfgSpecific); break; + case ZCL_TV_CHANNEL_CLUSTER_ID: + result = emberAfTvChannelClusterClientCommandParse(cmd); + break; + case ZCL_TARGET_NAVIGATOR_CLUSTER_ID: + result = emberAfTargetNavigatorClusterClientCommandParse(cmd); + break; case ZCL_TEMP_MEASUREMENT_CLUSTER_ID: // No commands are enabled for cluster Temperature Measurement result = status(false, true, cmd->mfgSpecific); @@ -157,6 +196,10 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) // No commands are enabled for cluster Thermostat result = status(false, true, cmd->mfgSpecific); break; + case ZCL_WAKE_ON_LAN_CLUSTER_ID: + // No commands are enabled for cluster Wake on LAN + result = status(false, true, cmd->mfgSpecific); + break; case ZCL_WINDOW_COVERING_CLUSTER_ID: // No commands are enabled for cluster Window Covering result = status(false, true, cmd->mfgSpecific); @@ -181,6 +224,127 @@ EmberAfStatus emberAfClusterSpecificCommandParse(EmberAfClusterCommand * cmd) // Cluster specific command parsing +EmberAfStatus emberAfAccountLoginClusterClientCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_GET_SETUP_PIN_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t * setupPIN; + + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + setupPIN = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfAccountLoginClusterGetSetupPINResponseCallback(nullptr, setupPIN); + break; + } + default: { + // Unrecognized command ID, error status will apply. + break; + } + } + } + return status(wasHandled, true, cmd->mfgSpecific); +} +EmberAfStatus emberAfApplicationLauncherClusterClientCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_LAUNCH_APP_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t status; + uint8_t * data; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + 1); + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + data = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfApplicationLauncherClusterLaunchAppResponseCallback(nullptr, status, data); + break; + } + default: { + // Unrecognized command ID, error status will apply. + break; + } + } + } + return status(wasHandled, true, cmd->mfgSpecific); +} +EmberAfStatus emberAfContentLaunchClusterClientCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_LAUNCH_CONTENT_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t * data; + uint8_t contentLaunchStatus; + + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + data = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + emberAfStringLength(data) + 1u); + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + contentLaunchStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfContentLaunchClusterLaunchContentResponseCallback(nullptr, data, contentLaunchStatus); + break; + } + case ZCL_LAUNCH_URL_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t * data; + uint8_t contentLaunchStatus; + + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + data = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + emberAfStringLength(data) + 1u); + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + contentLaunchStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfContentLaunchClusterLaunchURLResponseCallback(nullptr, data, contentLaunchStatus); + break; + } + default: { + // Unrecognized command ID, error status will apply. + break; + } + } + } + return status(wasHandled, true, cmd->mfgSpecific); +} EmberAfStatus emberAfDoorLockClusterClientCommandParse(EmberAfClusterCommand * cmd) { bool wasHandled = false; @@ -907,6 +1071,194 @@ EmberAfStatus emberAfIdentifyClusterClientCommandParse(EmberAfClusterCommand * c } return status(wasHandled, true, cmd->mfgSpecific); } +EmberAfStatus emberAfKeypadInputClusterClientCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_SEND_KEY_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t status; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfKeypadInputClusterSendKeyResponseCallback(nullptr, status); + break; + } + default: { + // Unrecognized command ID, error status will apply. + break; + } + } + } + return status(wasHandled, true, cmd->mfgSpecific); +} +EmberAfStatus emberAfMediaPlaybackClusterClientCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_MEDIA_FAST_FORWARD_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaFastForwardResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_NEXT_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaNextResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_PAUSE_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaPauseResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_PLAY_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaPlayResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_PREVIOUS_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaPreviousResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_REWIND_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaRewindResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_SKIP_BACKWARD_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaSkipBackwardResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaSkipForwardResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_SKIP_SEEK_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaSkipSeekResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_START_OVER_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaStartOverResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + case ZCL_MEDIA_STOP_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t mediaPlaybackStatus; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + mediaPlaybackStatus = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfMediaPlaybackClusterMediaStopResponseCallback(nullptr, mediaPlaybackStatus); + break; + } + default: { + // Unrecognized command ID, error status will apply. + break; + } + } + } + return status(wasHandled, true, cmd->mfgSpecific); +} EmberAfStatus emberAfNetworkCommissioningClusterClientCommandParse(EmberAfClusterCommand * cmd) { bool wasHandled = false; @@ -1353,3 +1705,70 @@ EmberAfStatus emberAfScenesClusterClientCommandParse(EmberAfClusterCommand * cmd } return status(wasHandled, true, cmd->mfgSpecific); } +EmberAfStatus emberAfTvChannelClusterClientCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_CHANGE_CHANNEL_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + /* TYPE WARNING: array array defaults to */ uint8_t * ChannelMatch; + uint8_t ErrorType; + + ChannelMatch = cmd->buffer + payloadOffset; + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + ErrorType = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfTvChannelClusterChangeChannelResponseCallback(nullptr, ChannelMatch, ErrorType); + break; + } + default: { + // Unrecognized command ID, error status will apply. + break; + } + } + } + return status(wasHandled, true, cmd->mfgSpecific); +} +EmberAfStatus emberAfTargetNavigatorClusterClientCommandParse(EmberAfClusterCommand * cmd) +{ + bool wasHandled = false; + + if (!cmd->mfgSpecific) + { + switch (cmd->commandId) + { + case ZCL_NAVIGATE_TARGET_RESPONSE_COMMAND_ID: { + uint16_t payloadOffset = cmd->payloadStartIndex; + uint8_t status; + uint8_t * data; + + if (cmd->bufLen < payloadOffset + 1) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + status = emberAfGetInt8u(cmd->buffer, payloadOffset, cmd->bufLen); + payloadOffset = static_cast(payloadOffset + 1); + if (cmd->bufLen < payloadOffset + 1u) + { + return EMBER_ZCL_STATUS_MALFORMED_COMMAND; + } + data = emberAfGetString(cmd->buffer, payloadOffset, cmd->bufLen); + + wasHandled = emberAfTargetNavigatorClusterNavigateTargetResponseCallback(nullptr, status, data); + break; + } + default: { + // Unrecognized command ID, error status will apply. + break; + } + } + } + return status(wasHandled, true, cmd->mfgSpecific); +} diff --git a/src/controller/python/gen/callback-stub.cpp b/src/controller/python/gen/callback-stub.cpp index c2400d9f122741..4fb4f5f9ee42ae 100644 --- a/src/controller/python/gen/callback-stub.cpp +++ b/src/controller/python/gen/callback-stub.cpp @@ -29,9 +29,18 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId) { switch (clusterId) { + case ZCL_ACCOUNT_LOGIN_CLUSTER_ID: + emberAfAccountLoginClusterInitCallback(endpoint); + break; case ZCL_APPLICATION_BASIC_CLUSTER_ID: emberAfApplicationBasicClusterInitCallback(endpoint); break; + case ZCL_APPLICATION_LAUNCHER_CLUSTER_ID: + emberAfApplicationLauncherClusterInitCallback(endpoint); + break; + case ZCL_AUDIO_OUTPUT_CLUSTER_ID: + emberAfAudioOutputClusterInitCallback(endpoint); + break; case ZCL_BARRIER_CONTROL_CLUSTER_ID: emberAfBarrierControlClusterInitCallback(endpoint); break; @@ -44,6 +53,9 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId) case ZCL_COLOR_CONTROL_CLUSTER_ID: emberAfColorControlClusterInitCallback(endpoint); break; + case ZCL_CONTENT_LAUNCH_CLUSTER_ID: + emberAfContentLaunchClusterInitCallback(endpoint); + break; case ZCL_DESCRIPTOR_CLUSTER_ID: emberAfDescriptorClusterInitCallback(endpoint); break; @@ -62,12 +74,21 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId) case ZCL_IDENTIFY_CLUSTER_ID: emberAfIdentifyClusterInitCallback(endpoint); break; + case ZCL_KEYPAD_INPUT_CLUSTER_ID: + emberAfKeypadInputClusterInitCallback(endpoint); + break; case ZCL_LEVEL_CONTROL_CLUSTER_ID: emberAfLevelControlClusterInitCallback(endpoint); break; case ZCL_LOW_POWER_CLUSTER_ID: emberAfLowPowerClusterInitCallback(endpoint); break; + case ZCL_MEDIA_INPUT_CLUSTER_ID: + emberAfMediaInputClusterInitCallback(endpoint); + break; + case ZCL_MEDIA_PLAYBACK_CLUSTER_ID: + emberAfMediaPlaybackClusterInitCallback(endpoint); + break; case ZCL_NETWORK_COMMISSIONING_CLUSTER_ID: emberAfNetworkCommissioningClusterInitCallback(endpoint); break; @@ -86,12 +107,21 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId) case ZCL_SWITCH_CLUSTER_ID: emberAfSwitchClusterInitCallback(endpoint); break; + case ZCL_TV_CHANNEL_CLUSTER_ID: + emberAfTvChannelClusterInitCallback(endpoint); + break; + case ZCL_TARGET_NAVIGATOR_CLUSTER_ID: + emberAfTargetNavigatorClusterInitCallback(endpoint); + break; case ZCL_TEMP_MEASUREMENT_CLUSTER_ID: emberAfTemperatureMeasurementClusterInitCallback(endpoint); break; case ZCL_THERMOSTAT_CLUSTER_ID: emberAfThermostatClusterInitCallback(endpoint); break; + case ZCL_WAKE_ON_LAN_CLUSTER_ID: + emberAfWakeOnLanClusterInitCallback(endpoint); + break; case ZCL_WINDOW_COVERING_CLUSTER_ID: emberAfWindowCoveringClusterInitCallback(endpoint); break; @@ -101,11 +131,26 @@ void emberAfClusterInitCallback(EndpointId endpoint, ClusterId clusterId) } } +void __attribute__((weak)) emberAfAccountLoginClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfApplicationBasicClusterInitCallback(EndpointId endpoint) { // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfApplicationLauncherClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} +void __attribute__((weak)) emberAfAudioOutputClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfBarrierControlClusterInitCallback(EndpointId endpoint) { // To prevent warning @@ -126,6 +171,11 @@ void __attribute__((weak)) emberAfColorControlClusterInitCallback(EndpointId end // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfContentLaunchClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfDescriptorClusterInitCallback(EndpointId endpoint) { // To prevent warning @@ -156,6 +206,11 @@ void __attribute__((weak)) emberAfIdentifyClusterInitCallback(EndpointId endpoin // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfKeypadInputClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfLevelControlClusterInitCallback(EndpointId endpoint) { // To prevent warning @@ -166,6 +221,16 @@ void __attribute__((weak)) emberAfLowPowerClusterInitCallback(EndpointId endpoin // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfMediaInputClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} +void __attribute__((weak)) emberAfMediaPlaybackClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfNetworkCommissioningClusterInitCallback(EndpointId endpoint) { // To prevent warning @@ -196,6 +261,16 @@ void __attribute__((weak)) emberAfSwitchClusterInitCallback(EndpointId endpoint) // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfTvChannelClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} +void __attribute__((weak)) emberAfTargetNavigatorClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfTemperatureMeasurementClusterInitCallback(EndpointId endpoint) { // To prevent warning @@ -206,6 +281,11 @@ void __attribute__((weak)) emberAfThermostatClusterInitCallback(EndpointId endpo // To prevent warning (void) endpoint; } +void __attribute__((weak)) emberAfWakeOnLanClusterInitCallback(EndpointId endpoint) +{ + // To prevent warning + (void) endpoint; +} void __attribute__((weak)) emberAfWindowCoveringClusterInitCallback(EndpointId endpoint) { // To prevent warning diff --git a/src/controller/python/gen/callback.h b/src/controller/python/gen/callback.h index 45d784f60a774a..30c7632b5e639e 100644 --- a/src/controller/python/gen/callback.h +++ b/src/controller/python/gen/callback.h @@ -40,6 +40,14 @@ void emberAfClusterInitCallback(chip::EndpointId endpoint, chip::ClusterId clust // Cluster Init Functions +/** @brief Account Login Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfAccountLoginClusterInitCallback(chip::EndpointId endpoint); + /** @brief Application Basic Cluster Init * * Cluster Init @@ -48,6 +56,22 @@ void emberAfClusterInitCallback(chip::EndpointId endpoint, chip::ClusterId clust */ void emberAfApplicationBasicClusterInitCallback(chip::EndpointId endpoint); +/** @brief Application Launcher Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfApplicationLauncherClusterInitCallback(chip::EndpointId endpoint); + +/** @brief Audio Output Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfAudioOutputClusterInitCallback(chip::EndpointId endpoint); + /** @brief Barrier Control Cluster Init * * Cluster Init @@ -80,6 +104,14 @@ void emberAfBindingClusterInitCallback(chip::EndpointId endpoint); */ void emberAfColorControlClusterInitCallback(chip::EndpointId endpoint); +/** @brief Content Launch Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfContentLaunchClusterInitCallback(chip::EndpointId endpoint); + /** @brief Descriptor Cluster Init * * Cluster Init @@ -128,6 +160,14 @@ void emberAfGroupsClusterInitCallback(chip::EndpointId endpoint); */ void emberAfIdentifyClusterInitCallback(chip::EndpointId endpoint); +/** @brief Keypad Input Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfKeypadInputClusterInitCallback(chip::EndpointId endpoint); + /** @brief Level Control Cluster Init * * Cluster Init @@ -144,6 +184,22 @@ void emberAfLevelControlClusterInitCallback(chip::EndpointId endpoint); */ void emberAfLowPowerClusterInitCallback(chip::EndpointId endpoint); +/** @brief Media Input Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfMediaInputClusterInitCallback(chip::EndpointId endpoint); + +/** @brief Media Playback Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfMediaPlaybackClusterInitCallback(chip::EndpointId endpoint); + /** @brief Network Commissioning Cluster Init * * Cluster Init @@ -192,6 +248,22 @@ void emberAfScenesClusterInitCallback(chip::EndpointId endpoint); */ void emberAfSwitchClusterInitCallback(chip::EndpointId endpoint); +/** @brief TV Channel Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfTvChannelClusterInitCallback(chip::EndpointId endpoint); + +/** @brief Target Navigator Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfTargetNavigatorClusterInitCallback(chip::EndpointId endpoint); + /** @brief Temperature Measurement Cluster Init * * Cluster Init @@ -208,6 +280,14 @@ void emberAfTemperatureMeasurementClusterInitCallback(chip::EndpointId endpoint) */ void emberAfThermostatClusterInitCallback(chip::EndpointId endpoint); +/** @brief Wake on LAN Cluster Init + * + * Cluster Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfWakeOnLanClusterInitCallback(chip::EndpointId endpoint); + /** @brief Window Covering Cluster Init * * Cluster Init @@ -218,6 +298,76 @@ void emberAfWindowCoveringClusterInitCallback(chip::EndpointId endpoint); // Cluster Server/Client Init Functions +// +// Account Login Cluster client +// + +/** @brief Account Login Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfAccountLoginClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Account Login Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfAccountLoginClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Account Login Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfAccountLoginClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Account Login Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfAccountLoginClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Account Login Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfAccountLoginClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Account Login Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfAccountLoginClusterClientTickCallback(chip::EndpointId endpoint); + // // Application Basic Cluster client // @@ -289,6 +439,147 @@ EmberAfStatus emberAfApplicationBasicClusterClientPreAttributeChangedCallback(ch */ void emberAfApplicationBasicClusterClientTickCallback(chip::EndpointId endpoint); +// +// Application Launcher Cluster client +// + +/** @brief Application Launcher Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfApplicationLauncherClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Application Launcher Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfApplicationLauncherClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Application Launcher Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfApplicationLauncherClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Application Launcher Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfApplicationLauncherClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Application Launcher Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfApplicationLauncherClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Application Launcher Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfApplicationLauncherClusterClientTickCallback(chip::EndpointId endpoint); + +// +// Audio Output Cluster client +// + +/** @brief Audio Output Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfAudioOutputClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Audio Output Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfAudioOutputClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Audio Output Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfAudioOutputClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Audio Output Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfAudioOutputClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Audio Output Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfAudioOutputClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Audio Output Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfAudioOutputClusterClientTickCallback(chip::EndpointId endpoint); + // // Barrier Control Cluster client // @@ -568,6 +859,76 @@ EmberAfStatus emberAfColorControlClusterClientPreAttributeChangedCallback(chip:: */ void emberAfColorControlClusterClientTickCallback(chip::EndpointId endpoint); +// +// Content Launch Cluster client +// + +/** @brief Content Launch Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfContentLaunchClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Content Launch Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfContentLaunchClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Content Launch Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfContentLaunchClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Content Launch Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfContentLaunchClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Content Launch Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfContentLaunchClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Content Launch Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfContentLaunchClusterClientTickCallback(chip::EndpointId endpoint); + // // Descriptor Cluster client // @@ -990,6 +1351,76 @@ EmberAfStatus emberAfIdentifyClusterClientPreAttributeChangedCallback(chip::Endp */ void emberAfIdentifyClusterClientTickCallback(chip::EndpointId endpoint); +// +// Keypad Input Cluster client +// + +/** @brief Keypad Input Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfKeypadInputClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Keypad Input Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfKeypadInputClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Keypad Input Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfKeypadInputClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Keypad Input Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfKeypadInputClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Keypad Input Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfKeypadInputClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Keypad Input Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfKeypadInputClusterClientTickCallback(chip::EndpointId endpoint); + // // Level Control Cluster client // @@ -1038,7 +1469,147 @@ void emberAfLevelControlClusterClientMessageSentCallback(EmberOutgoingMessageTyp EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, EmberStatus status); -/** @brief Level Control Cluster Client Pre Attribute Changed +/** @brief Level Control Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfLevelControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Level Control Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfLevelControlClusterClientTickCallback(chip::EndpointId endpoint); + +// +// Low Power Cluster client +// + +/** @brief Low Power Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfLowPowerClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Low Power Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfLowPowerClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Low Power Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfLowPowerClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Low Power Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfLowPowerClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Low Power Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfLowPowerClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Low Power Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfLowPowerClusterClientTickCallback(chip::EndpointId endpoint); + +// +// Media Input Cluster client +// + +/** @brief Media Input Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfMediaInputClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Media Input Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfMediaInputClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Media Input Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfMediaInputClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Media Input Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfMediaInputClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Media Input Cluster Client Pre Attribute Changed * * client Pre Attribute Changed * @@ -1048,40 +1619,40 @@ void emberAfLevelControlClusterClientMessageSentCallback(EmberOutgoingMessageTyp * @param size Attribute size * @param value Attribute value */ -EmberAfStatus emberAfLevelControlClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, - EmberAfAttributeType attributeType, uint8_t size, - uint8_t * value); +EmberAfStatus emberAfMediaInputClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); -/** @brief Level Control Cluster Client Tick +/** @brief Media Input Cluster Client Tick * * client Tick * * @param endpoint Endpoint that is being served */ -void emberAfLevelControlClusterClientTickCallback(chip::EndpointId endpoint); +void emberAfMediaInputClusterClientTickCallback(chip::EndpointId endpoint); // -// Low Power Cluster client +// Media Playback Cluster client // -/** @brief Low Power Cluster Client Init +/** @brief Media Playback Cluster Client Init * * Client Init * * @param endpoint Endpoint that is being initialized */ -void emberAfLowPowerClusterClientInitCallback(chip::EndpointId endpoint); +void emberAfMediaPlaybackClusterClientInitCallback(chip::EndpointId endpoint); -/** @brief Low Power Cluster Client Attribute Changed +/** @brief Media Playback Cluster Client Attribute Changed * * Client Attribute Changed * * @param endpoint Endpoint that is being initialized * @param attributeId Attribute that changed */ -void emberAfLowPowerClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); +void emberAfMediaPlaybackClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); -/** @brief Low Power Cluster Client Manufacturer Specific Attribute Changed +/** @brief Media Playback Cluster Client Manufacturer Specific Attribute Changed * * Client Manufacturer Specific Attribute Changed * @@ -1089,11 +1660,11 @@ void emberAfLowPowerClusterClientAttributeChangedCallback(chip::EndpointId endpo * @param attributeId Attribute that changed * @param manufacturerCode Manufacturer Code of the attribute that changed */ -void emberAfLowPowerClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, - chip::AttributeId attributeId, - uint16_t manufacturerCode); +void emberAfMediaPlaybackClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); -/** @brief Low Power Cluster Client Message Sent +/** @brief Media Playback Cluster Client Message Sent * * Client Message Sent * @@ -1104,11 +1675,11 @@ void emberAfLowPowerClusterClientManufacturerSpecificAttributeChangedCallback(ch * @param message The message that was sent * @param status The status of the sent message */ -void emberAfLowPowerClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, - EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, - EmberStatus status); +void emberAfMediaPlaybackClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); -/** @brief Low Power Cluster Client Pre Attribute Changed +/** @brief Media Playback Cluster Client Pre Attribute Changed * * client Pre Attribute Changed * @@ -1118,17 +1689,17 @@ void emberAfLowPowerClusterClientMessageSentCallback(EmberOutgoingMessageType ty * @param size Attribute size * @param value Attribute value */ -EmberAfStatus emberAfLowPowerClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, - EmberAfAttributeType attributeType, uint8_t size, - uint8_t * value); +EmberAfStatus emberAfMediaPlaybackClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); -/** @brief Low Power Cluster Client Tick +/** @brief Media Playback Cluster Client Tick * * client Tick * * @param endpoint Endpoint that is being served */ -void emberAfLowPowerClusterClientTickCallback(chip::EndpointId endpoint); +void emberAfMediaPlaybackClusterClientTickCallback(chip::EndpointId endpoint); // // Network Commissioning Cluster client @@ -1552,6 +2123,147 @@ EmberAfStatus emberAfSwitchClusterClientPreAttributeChangedCallback(chip::Endpoi */ void emberAfSwitchClusterClientTickCallback(chip::EndpointId endpoint); +// +// TV Channel Cluster client +// + +/** @brief TV Channel Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfTvChannelClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief TV Channel Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfTvChannelClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief TV Channel Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfTvChannelClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief TV Channel Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfTvChannelClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief TV Channel Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfTvChannelClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief TV Channel Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfTvChannelClusterClientTickCallback(chip::EndpointId endpoint); + +// +// Target Navigator Cluster client +// + +/** @brief Target Navigator Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfTargetNavigatorClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Target Navigator Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfTargetNavigatorClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Target Navigator Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfTargetNavigatorClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Target Navigator Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfTargetNavigatorClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Target Navigator Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfTargetNavigatorClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Target Navigator Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfTargetNavigatorClusterClientTickCallback(chip::EndpointId endpoint); + // // Temperature Measurement Cluster client // @@ -1693,6 +2405,76 @@ EmberAfStatus emberAfThermostatClusterClientPreAttributeChangedCallback(chip::En */ void emberAfThermostatClusterClientTickCallback(chip::EndpointId endpoint); +// +// Wake on LAN Cluster client +// + +/** @brief Wake on LAN Cluster Client Init + * + * Client Init + * + * @param endpoint Endpoint that is being initialized + */ +void emberAfWakeOnLanClusterClientInitCallback(chip::EndpointId endpoint); + +/** @brief Wake on LAN Cluster Client Attribute Changed + * + * Client Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + */ +void emberAfWakeOnLanClusterClientAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId); + +/** @brief Wake on LAN Cluster Client Manufacturer Specific Attribute Changed + * + * Client Manufacturer Specific Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute that changed + * @param manufacturerCode Manufacturer Code of the attribute that changed + */ +void emberAfWakeOnLanClusterClientManufacturerSpecificAttributeChangedCallback(chip::EndpointId endpoint, + chip::AttributeId attributeId, + uint16_t manufacturerCode); + +/** @brief Wake on LAN Cluster Client Message Sent + * + * Client Message Sent + * + * @param type The type of message sent + * @param indexOrDestination The destination or address to which the message was sent + * @param apsFrame The APS frame for the message + * @param msgLen The length of the message + * @param message The message that was sent + * @param status The status of the sent message + */ +void emberAfWakeOnLanClusterClientMessageSentCallback(EmberOutgoingMessageType type, uint64_t indexOrDestination, + EmberApsFrame * apsFrame, uint16_t msgLen, uint8_t * message, + EmberStatus status); + +/** @brief Wake on LAN Cluster Client Pre Attribute Changed + * + * client Pre Attribute Changed + * + * @param endpoint Endpoint that is being initialized + * @param attributeId Attribute to be changed + * @param attributeType Attribute type + * @param size Attribute size + * @param value Attribute value + */ +EmberAfStatus emberAfWakeOnLanClusterClientPreAttributeChangedCallback(chip::EndpointId endpoint, chip::AttributeId attributeId, + EmberAfAttributeType attributeType, uint8_t size, + uint8_t * value); + +/** @brief Wake on LAN Cluster Client Tick + * + * client Tick + * + * @param endpoint Endpoint that is being served + */ +void emberAfWakeOnLanClusterClientTickCallback(chip::EndpointId endpoint); + // // Window Covering Cluster client // @@ -1766,6 +2548,39 @@ void emberAfWindowCoveringClusterClientTickCallback(chip::EndpointId endpoint); // Cluster Commands Callback +/** + * @brief Account Login Cluster GetSetupPINResponse Command callback + * @param setupPIN + */ + +bool emberAfAccountLoginClusterGetSetupPINResponseCallback(chip::app::Command * commandObj, uint8_t * setupPIN); + +/** + * @brief Application Launcher Cluster LaunchAppResponse Command callback + * @param status + * @param data + */ + +bool emberAfApplicationLauncherClusterLaunchAppResponseCallback(chip::app::Command * commandObj, uint8_t status, uint8_t * data); + +/** + * @brief Content Launch Cluster LaunchContentResponse Command callback + * @param data + * @param contentLaunchStatus + */ + +bool emberAfContentLaunchClusterLaunchContentResponseCallback(chip::app::Command * commandObj, uint8_t * data, + uint8_t contentLaunchStatus); + +/** + * @brief Content Launch Cluster LaunchURLResponse Command callback + * @param data + * @param contentLaunchStatus + */ + +bool emberAfContentLaunchClusterLaunchURLResponseCallback(chip::app::Command * commandObj, uint8_t * data, + uint8_t contentLaunchStatus); + /** * @brief Door Lock Cluster ClearAllPinsResponse Command callback * @param status @@ -2034,6 +2849,90 @@ bool emberAfGroupsClusterViewGroupResponseCallback(chip::app::Command * commandO bool emberAfIdentifyClusterIdentifyQueryResponseCallback(chip::app::Command * commandObj, uint16_t timeout); +/** + * @brief Keypad Input Cluster SendKeyResponse Command callback + * @param status + */ + +bool emberAfKeypadInputClusterSendKeyResponseCallback(chip::app::Command * commandObj, uint8_t status); + +/** + * @brief Media Playback Cluster MediaFastForwardResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaFastForwardResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaNextResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaNextResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaPauseResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaPauseResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaPlayResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaPlayResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaPreviousResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaPreviousResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaRewindResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaRewindResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaSkipBackwardResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaSkipBackwardResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaSkipForwardResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaSkipForwardResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaSkipSeekResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaSkipSeekResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaStartOverResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaStartOverResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + +/** + * @brief Media Playback Cluster MediaStopResponse Command callback + * @param mediaPlaybackStatus + */ + +bool emberAfMediaPlaybackClusterMediaStopResponseCallback(chip::app::Command * commandObj, uint8_t mediaPlaybackStatus); + /** * @brief Network Commissioning Cluster AddThreadNetworkResponse Command callback * @param errorCode @@ -2182,6 +3081,24 @@ bool emberAfScenesClusterViewSceneResponseCallback(chip::app::Command * commandO uint8_t sceneId, uint16_t transitionTime, uint8_t * sceneName, /* TYPE WARNING: array array defaults to */ uint8_t * extensionFieldSets); +/** + * @brief TV Channel Cluster ChangeChannelResponse Command callback + * @param channelMatch + * @param errorType + */ + +bool emberAfTvChannelClusterChangeChannelResponseCallback(chip::app::Command * commandObj, + /* TYPE WARNING: array array defaults to */ uint8_t * ChannelMatch, + uint8_t ErrorType); + +/** + * @brief Target Navigator Cluster NavigateTargetResponse Command callback + * @param status + * @param data + */ + +bool emberAfTargetNavigatorClusterNavigateTargetResponseCallback(chip::app::Command * commandObj, uint8_t status, uint8_t * data); + // // Non-Cluster Related Callbacks // diff --git a/src/controller/python/gen/client-command-macro.h b/src/controller/python/gen/client-command-macro.h index c976129992f7e6..1cfc06d80ce7c2 100644 --- a/src/controller/python/gen/client-command-macro.h +++ b/src/controller/python/gen/client-command-macro.h @@ -3361,95 +3361,126 @@ \ ZCL_NAVIGATE_TARGET_COMMAND_ID, "uuuu", target, status, data, data); -/** @brief Command description for PlayRequest +/** @brief Command description for MediaPlay * - * Command: PlayRequest + * Command: MediaPlay + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPlayRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPlay(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_PLAY_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PLAY_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PauseRequest +/** @brief Command description for MediaPause * - * Command: PauseRequest + * Command: MediaPause + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPauseRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPause(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PAUSE_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PAUSE_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StopRequest +/** @brief Command description for MediaStop * - * Command: StopRequest + * Command: MediaStop + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStopRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStop(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_STOP_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_STOP_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StartOverRequest +/** @brief Command description for MediaStartOver * - * Command: StartOverRequest + * Command: MediaStartOver + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStartOverRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStartOver(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_START_OVER_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_START_OVER_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PreviousRequest +/** @brief Command description for MediaPrevious * - * Command: PreviousRequest + * Command: MediaPrevious + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPreviousRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPrevious(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PREVIOUS_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PREVIOUS_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for NextRequest +/** @brief Command description for MediaNext * - * Command: NextRequest + * Command: MediaNext + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterNextRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaNext(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_NEXT_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_NEXT_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for RewindRequest +/** @brief Command description for MediaRewind * - * Command: RewindRequest + * Command: MediaRewind + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterRewindRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaRewind(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_REWIND_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_REWIND_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for FastForwardRequest +/** @brief Command description for MediaFastForward * - * Command: FastForwardRequest + * Command: MediaFastForward + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterFastForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaFastForward(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_FAST_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_FAST_FORWARD_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for SkipForwardRequest +/** @brief Command description for MediaSkipForward * - * Command: SkipForwardRequest + * Command: MediaSkipForward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipForward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); -/** @brief Command description for SkipBackwardRequest +/** @brief Command description for MediaSkipBackward * - * Command: SkipBackwardRequest + * Command: MediaSkipBackward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipBackwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipBackward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); + +/** @brief Command description for MediaSkipSeek + * + * Command: MediaSkipSeek + * @param position INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus + */ +#define emberAfFillCommandMedia \ + PlaybackClusterMediaSkipSeek(position, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ + \ + ZCL_MEDIA_SKIP_SEEK_COMMAND_ID, "uu", position, mediaPlaybackStatus); /** @brief Command description for SelectInput * @@ -3502,7 +3533,7 @@ /** @brief Command description for SendKey * * Command: SendKey - * @param keyCode INT8U + * @param keyCode KeypadInputCecKeyCode * @param status KeypadInputStatus */ #define emberAfFillCommandKeypad \ @@ -3513,23 +3544,30 @@ /** @brief Command description for LaunchContent * * Command: LaunchContent + * @param autoPlay BOOLEAN + * @param data CHAR_STRING + * @param data CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchContent(contentLaunchStatus) \ + LaunchClusterLaunchContent(autoPlay, data, data, contentLaunchStatus) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_CONTENT_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_CONTENT_COMMAND_ID, "uuuu", autoPlay, data, data, contentLaunchStatus); /** @brief Command description for LaunchURL * * Command: LaunchURL + * @param contentURL CHAR_STRING + * @param data CHAR_STRING + * @param displayString CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchURL(contentLaunchStatus) emberAfFillExternalBuffer(mask, \ + LaunchClusterLaunchURL(contentURL, data, displayString, contentLaunchStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_URL_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_URL_COMMAND_ID, "uuuu", contentURL, data, displayString, contentLaunchStatus); /** @brief Command description for SelectOutput * @@ -3555,17 +3593,17 @@ /** @brief Command description for LaunchApp * * Command: LaunchApp + * @param data CHAR_STRING + * @param status ApplicationLauncherStatus * @param application ApplicationLauncherApp [] * @param applicationLen int - * @param status ApplicationLauncherStatus - * @param data CHAR_STRING * @param data CHAR_STRING */ #define emberAfFillCommandApplication \ - LauncherClusterLaunchApp(application, applicationLen, status, data, data) \ + LauncherClusterLaunchApp(data, status, application, applicationLen, data) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_APP_COMMAND_ID, "buuu", application, applicationLen, status, data, data); + ZCL_LAUNCH_APP_COMMAND_ID, "uubu", data, status, application, applicationLen, data); /** @brief Command description for GetSetupPIN * diff --git a/src/controller/python/gen/command-id.h b/src/controller/python/gen/command-id.h index e3c8f93cadb923..25ee08826f030c 100644 --- a/src/controller/python/gen/command-id.h +++ b/src/controller/python/gen/command-id.h @@ -415,17 +415,28 @@ #define ZCL_NAVIGATE_TARGET_RESPONSE_COMMAND_ID (0x00) // Commands for cluster: Media Playback -#define ZCL_PLAY_REQUEST_COMMAND_ID (0x00) -#define ZCL_PLAYBACK_COMMAND_ID (0x00) -#define ZCL_PAUSE_REQUEST_COMMAND_ID (0x01) -#define ZCL_STOP_REQUEST_COMMAND_ID (0x02) -#define ZCL_START_OVER_REQUEST_COMMAND_ID (0x03) -#define ZCL_PREVIOUS_REQUEST_COMMAND_ID (0x04) -#define ZCL_NEXT_REQUEST_COMMAND_ID (0x05) -#define ZCL_REWIND_REQUEST_COMMAND_ID (0x06) -#define ZCL_FAST_FORWARD_REQUEST_COMMAND_ID (0x07) -#define ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID (0x08) -#define ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID (0x09) +#define ZCL_MEDIA_PLAY_COMMAND_ID (0x00) +#define ZCL_MEDIA_PLAY_RESPONSE_COMMAND_ID (0x00) +#define ZCL_MEDIA_PAUSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_PAUSE_RESPONSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_STOP_COMMAND_ID (0x02) +#define ZCL_MEDIA_STOP_RESPONSE_COMMAND_ID (0x02) +#define ZCL_MEDIA_START_OVER_COMMAND_ID (0x03) +#define ZCL_MEDIA_START_OVER_RESPONSE_COMMAND_ID (0x03) +#define ZCL_MEDIA_PREVIOUS_COMMAND_ID (0x04) +#define ZCL_MEDIA_PREVIOUS_RESPONSE_COMMAND_ID (0x04) +#define ZCL_MEDIA_NEXT_COMMAND_ID (0x05) +#define ZCL_MEDIA_NEXT_RESPONSE_COMMAND_ID (0x05) +#define ZCL_MEDIA_REWIND_COMMAND_ID (0x06) +#define ZCL_MEDIA_REWIND_RESPONSE_COMMAND_ID (0x06) +#define ZCL_MEDIA_FAST_FORWARD_COMMAND_ID (0x07) +#define ZCL_MEDIA_FAST_FORWARD_RESPONSE_COMMAND_ID (0x07) +#define ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_BACKWARD_RESPONSE_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_SEEK_COMMAND_ID (0x0A) +#define ZCL_MEDIA_SKIP_SEEK_RESPONSE_COMMAND_ID (0x0A) // Commands for cluster: Media Input #define ZCL_SELECT_INPUT_COMMAND_ID (0x00) diff --git a/src/controller/python/gen/endpoint_config.h b/src/controller/python/gen/endpoint_config.h index 8de5298046d3f1..57dd0d20ae339f 100644 --- a/src/controller/python/gen/endpoint_config.h +++ b/src/controller/python/gen/endpoint_config.h @@ -63,7 +63,7 @@ #define ZAP_ATTRIBUTE_MASK(mask) ATTRIBUTE_MASK_##mask // This is an array of EmberAfAttributeMetadata structures. -#define GENERATED_ATTRIBUTE_COUNT 22 +#define GENERATED_ATTRIBUTE_COUNT 32 #define GENERATED_ATTRIBUTES \ { \ \ @@ -122,10 +122,40 @@ /* Endpoint: 1, Cluster: Temperature Measurement (client) */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(3) }, /* cluster revision */ \ \ + /* Endpoint: 1, Cluster: Wake on LAN (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: TV Channel (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Target Navigator (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Media Playback (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Media Input (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ /* Endpoint: 1, Cluster: Low Power (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Keypad Input (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Content Launch (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Audio Output (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Application Launcher (client) */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ /* Endpoint: 1, Cluster: Application Basic (client) */ \ + { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ + \ + /* Endpoint: 1, Cluster: Account Login (client) */ \ { 0xFFFD, ZAP_TYPE(INT16U), 2, ZAP_ATTRIBUTE_MASK(CLIENT), ZAP_SIMPLE_DEFAULT(0x0001) }, /* cluster revision */ \ \ /* Endpoint: 1, Cluster: Binding (client) */ \ @@ -142,7 +172,7 @@ #define GENERATED_FUNCTION_ARRAYS #define ZAP_CLUSTER_MASK(mask) CLUSTER_MASK_##mask -#define GENERATED_CLUSTER_COUNT 22 +#define GENERATED_CLUSTER_COUNT 32 #define GENERATED_CLUSTERS \ { \ { 0x0003, ZAP_ATTRIBUTE_INDEX(0), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL }, /* Endpoint: 1, Cluster: Identify (client) */ \ @@ -188,16 +218,46 @@ 0x0402, ZAP_ATTRIBUTE_INDEX(17), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ }, /* Endpoint: 1, Cluster: Temperature Measurement (client) */ \ { \ - 0x0508, ZAP_ATTRIBUTE_INDEX(18), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + 0x0503, ZAP_ATTRIBUTE_INDEX(18), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Wake on LAN (client) */ \ + { \ + 0x0504, ZAP_ATTRIBUTE_INDEX(19), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: TV Channel (client) */ \ + { \ + 0x0505, ZAP_ATTRIBUTE_INDEX(20), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Target Navigator (client) */ \ + { \ + 0x0506, ZAP_ATTRIBUTE_INDEX(21), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Media Playback (client) */ \ + { \ + 0x0507, ZAP_ATTRIBUTE_INDEX(22), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Media Input (client) */ \ + { \ + 0x0508, ZAP_ATTRIBUTE_INDEX(23), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ }, /* Endpoint: 1, Cluster: Low Power (client) */ \ { \ - 0x050D, ZAP_ATTRIBUTE_INDEX(19), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + 0x0509, ZAP_ATTRIBUTE_INDEX(24), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Keypad Input (client) */ \ + { \ + 0x050A, ZAP_ATTRIBUTE_INDEX(25), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Content Launch (client) */ \ + { \ + 0x050B, ZAP_ATTRIBUTE_INDEX(26), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Audio Output (client) */ \ + { \ + 0x050C, ZAP_ATTRIBUTE_INDEX(27), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Application Launcher (client) */ \ + { \ + 0x050D, ZAP_ATTRIBUTE_INDEX(28), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ }, /* Endpoint: 1, Cluster: Application Basic (client) */ \ { \ - 0xF000, ZAP_ATTRIBUTE_INDEX(20), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + 0x050E, ZAP_ATTRIBUTE_INDEX(29), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + }, /* Endpoint: 1, Cluster: Account Login (client) */ \ + { \ + 0xF000, ZAP_ATTRIBUTE_INDEX(30), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ }, /* Endpoint: 1, Cluster: Binding (client) */ \ { \ - 0xF004, ZAP_ATTRIBUTE_INDEX(21), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ + 0xF004, ZAP_ATTRIBUTE_INDEX(31), 1, 2, ZAP_CLUSTER_MASK(CLIENT), NULL \ }, /* Endpoint: 1, Cluster: Group Key Management (client) */ \ } @@ -206,7 +266,7 @@ // This is an array of EmberAfEndpointType structures. #define GENERATED_ENDPOINT_TYPES \ { \ - { ZAP_CLUSTER_INDEX(0), 22, 44 }, \ + { ZAP_CLUSTER_INDEX(0), 32, 64 }, \ } // Largest attribute size is needed for various buffers @@ -216,7 +276,7 @@ #define ATTRIBUTE_SINGLETONS_SIZE (2) // Total size of attribute storage -#define ATTRIBUTE_MAX_SIZE (44) +#define ATTRIBUTE_MAX_SIZE (64) // Number of fixed endpoints #define FIXED_ENDPOINT_COUNT (1) @@ -260,7 +320,7 @@ // Array of EmberAfCommandMetadata structs. #define ZAP_COMMAND_MASK(mask) COMMAND_MASK_##mask -#define EMBER_AF_GENERATED_COMMAND_COUNT (149) +#define EMBER_AF_GENERATED_COMMAND_COUNT (194) #define GENERATED_COMMANDS \ { \ \ @@ -449,9 +509,72 @@ { 0x0300, 0x4B, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* MoveColorTemperature */ \ { 0x0300, 0x4C, ZAP_COMMAND_MASK(INCOMING_CLIENT) | ZAP_COMMAND_MASK(OUTGOING_CLIENT) }, /* StepColorTemperature */ \ \ + /* Endpoint: 1, Cluster: TV Channel (client) */ \ + { 0x0504, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ChangeChannel */ \ + { 0x0504, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* ChangeChannelResponse */ \ + { 0x0504, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ChangeChannelByNumber */ \ + { 0x0504, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* SkipChannel */ \ + \ + /* Endpoint: 1, Cluster: Target Navigator (client) */ \ + { 0x0505, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* NavigateTarget */ \ + { 0x0505, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* NavigateTargetResponse */ \ + \ + /* Endpoint: 1, Cluster: Media Playback (client) */ \ + { 0x0506, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaPlay */ \ + { 0x0506, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaPlayResponse */ \ + { 0x0506, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaPause */ \ + { 0x0506, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaPauseResponse */ \ + { 0x0506, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaStop */ \ + { 0x0506, 0x02, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaStopResponse */ \ + { 0x0506, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaStartOver */ \ + { 0x0506, 0x03, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaStartOverResponse */ \ + { 0x0506, 0x04, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaPrevious */ \ + { 0x0506, 0x04, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaPreviousResponse */ \ + { 0x0506, 0x05, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaNext */ \ + { 0x0506, 0x05, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaNextResponse */ \ + { 0x0506, 0x06, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaRewind */ \ + { 0x0506, 0x06, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaRewindResponse */ \ + { 0x0506, 0x07, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaFastForward */ \ + { 0x0506, 0x07, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaFastForwardResponse */ \ + { 0x0506, 0x08, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaSkipForward */ \ + { 0x0506, 0x08, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaSkipForwardResponse */ \ + { 0x0506, 0x09, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaSkipBackward */ \ + { 0x0506, 0x09, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaSkipBackwardResponse */ \ + { 0x0506, 0x0A, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* MediaSkipSeek */ \ + { 0x0506, 0x0A, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* MediaSkipSeekResponse */ \ + \ + /* Endpoint: 1, Cluster: Media Input (client) */ \ + { 0x0507, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* SelectInput */ \ + { 0x0507, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* ShowInputStatus */ \ + { 0x0507, 0x02, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* HideInputStatus */ \ + { 0x0507, 0x03, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* RenameInput */ \ + \ /* Endpoint: 1, Cluster: Low Power (client) */ \ { 0x0508, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Sleep */ \ \ + /* Endpoint: 1, Cluster: Keypad Input (client) */ \ + { 0x0509, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* SendKey */ \ + { 0x0509, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* SendKeyResponse */ \ + \ + /* Endpoint: 1, Cluster: Content Launch (client) */ \ + { 0x050A, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* LaunchContent */ \ + { 0x050A, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* LaunchContentResponse */ \ + { 0x050A, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* LaunchURL */ \ + { 0x050A, 0x01, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* LaunchURLResponse */ \ + \ + /* Endpoint: 1, Cluster: Audio Output (client) */ \ + { 0x050B, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* SelectOutput */ \ + { 0x050B, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* RenameOutput */ \ + \ + /* Endpoint: 1, Cluster: Application Launcher (client) */ \ + { 0x050C, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* LaunchApp */ \ + { 0x050C, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* LaunchAppResponse */ \ + \ + /* Endpoint: 1, Cluster: Account Login (client) */ \ + { 0x050E, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* GetSetupPIN */ \ + { 0x050E, 0x00, ZAP_COMMAND_MASK(INCOMING_CLIENT) }, /* GetSetupPINResponse */ \ + { 0x050E, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Login */ \ + \ /* Endpoint: 1, Cluster: Binding (client) */ \ { 0xF000, 0x00, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Bind */ \ { 0xF000, 0x01, ZAP_COMMAND_MASK(INCOMING_SERVER) }, /* Unbind */ \ diff --git a/src/controller/python/gen/enums.h b/src/controller/python/gen/enums.h index f006d55171bec8..c14422f16eb01d 100644 --- a/src/controller/python/gen/enums.h +++ b/src/controller/python/gen/enums.h @@ -462,6 +462,29 @@ typedef enum EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT3 = 15, } EmberAfCommodityType; +// Enum for ContentLaunchMetricType +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PIXELS = 0, + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PERCENTAGE = 1, +} EmberAfContentLaunchMetricType; + +// Enum for ContentLaunchParameterEnum +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_ACTOR = 0, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHANNEL = 1, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHARACTER = 2, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_EVENT = 3, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_FRANCHISE = 4, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_GENRE = 5, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_LEAGUE = 6, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_POPULARITY = 7, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORT = 8, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORTS_TEAM = 9, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_VIDEO = 10, +} EmberAfContentLaunchParameterEnum; + // Enum for ContentLaunchStatus typedef enum { @@ -470,21 +493,12 @@ typedef enum EMBER_ZCL_CONTENT_LAUNCH_STATUS_AUTH_FAILED = 2, } EmberAfContentLaunchStatus; -// Enum for ContentLaunchType +// Enum for ContentLaunchStreamingType typedef enum { - EMBER_ZCL_CONTENT_LAUNCH_TYPE_ACTOR = 0, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHANNEL = 1, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHARACTER = 2, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_EVENT = 3, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_FRANCHISE = 4, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_GENRE = 5, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_LEAGUE = 6, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_POPULARITY = 7, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORT = 8, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORTS_TEAM = 9, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_VIDEO = 10, -} EmberAfContentLaunchType; + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_DASH = 0, + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_HLS = 1, +} EmberAfContentLaunchStreamingType; // Enum for CppEventResponseCppAuth typedef enum @@ -1617,6 +1631,97 @@ typedef enum EMBER_ZCL_KEY_INDEX_CERTIFICATION = 15, } EmberAfKeyIndex; +// Enum for KeypadInputCecKeyCode +typedef enum +{ + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT = 0, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_UP = 1, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOWN = 2, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT = 3, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT = 4, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_UP = 5, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_DOWN = 6, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_UP = 7, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_DOWN = 8, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ROOT_MENU = 9, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SETUP_MENU = 10, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CONTENTS_MENU = 11, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAVORITE_MENU = 12, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EXIT = 13, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_TOP_MENU = 16, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_CONTEXT_SENSITIVE_MENU = 17, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER_ENTRY_MODE = 29, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER11 = 30, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER12 = 31, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER0_OR_NUMBER10 = 32, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS1 = 33, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS2 = 34, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS3 = 35, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS4 = 36, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS5 = 37, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS6 = 38, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS7 = 39, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS8 = 40, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS9 = 41, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOT = 42, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ENTER = 43, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CLEAR = 44, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NEXT_FAVORITE = 47, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_UP = 48, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_DOWN = 49, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PREVIOUS_CHANNEL = 50, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SOUND_SELECT = 51, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INPUT_SELECT = 52, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DISPLAY_INFORMATION = 53, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_HELP = 54, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_UP = 55, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_DOWN = 56, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER = 64, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_UP = 65, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_DOWN = 66, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE = 67, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY = 68, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP = 69, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE = 70, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD = 71, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_REWIND = 72, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAST_FORWARD = 73, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EJECT = 74, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FORWARD = 75, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_BACKWARD = 76, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_RECORD = 77, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD = 78, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESERVED = 79, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ANGLE = 80, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SUB_PICTURE = 81, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VIDEO_ON_DEMAND = 82, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ELECTRONIC_PROGRAM_GUIDE = 83, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TIMER_PROGRAMMING = 84, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INITIAL_CONFIGURATION = 85, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_BROADCAST_TYPE = 86, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_SOUND_PRESENTATION = 87, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY_FUNCTION = 96, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_PLAY_FUNCTION = 97, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD_FUNCTION = 98, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD_FUNCTION = 99, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_FUNCTION = 100, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE_FUNCTION = 101, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESTORE_VOLUME_FUNCTION = 102, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TUNE_FUNCTION = 103, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_MEDIA_FUNCTION = 104, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AV_INPUT_FUNCTION = 105, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AUDIO_INPUT_FUNCTION = 106, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_TOGGLE_FUNCTION = 107, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_OFF_FUNCTION = 108, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_ON_FUNCTION = 109, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F1_BLUE = 113, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F2_RED = 114, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F3_GREEN = 115, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F4_YELLOW = 116, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F5 = 117, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DATA = 118, +} EmberAfKeypadInputCecKeyCode; + // Enum for KeypadInputStatus typedef enum { @@ -1698,6 +1803,26 @@ typedef enum EMBER_ZCL_MEDIA_INPUT_TYPE_OTHER = 11, } EmberAfMediaInputType; +// Enum for MediaPlaybackState +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PLAYING = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PAUSED = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_NOT_PLAYING = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_BUFFERING = 3, +} EmberAfMediaPlaybackState; + +// Enum for MediaPlaybackStatus +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SUCCESS = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_INVALID_STATE_FOR_COMMAND = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ALLOWED = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ACTIVE = 3, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SPEED_OUT_OF_RANGE = 4, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SEEK_OUT_OF_RANGE = 5, +} EmberAfMediaPlaybackStatus; + // Enum for MessagingControlConfirmation typedef enum { diff --git a/src/controller/python/gen/gen_config.h b/src/controller/python/gen/gen_config.h index af1df0a644ab1d..ffc44e1bcc0f80 100644 --- a/src/controller/python/gen/gen_config.h +++ b/src/controller/python/gen/gen_config.h @@ -29,35 +29,57 @@ #define EMBER_APS_UNICAST_MESSAGE_COUNT 10 /**** Cluster endpoint counts ****/ +#define EMBER_AF_ACCOUNT_LOGIN_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_APPLICATION_BASIC_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_APPLICATION_LAUNCHER_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_AUDIO_OUTPUT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_BARRIER_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_BASIC_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_BINDING_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_COLOR_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_CONTENT_LAUNCH_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_DESCRIPTOR_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_DOOR_LOCK_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_GENERAL_COMMISSIONING_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_GROUP_KEY_MANAGEMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_GROUPS_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_IDENTIFY_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_KEYPAD_INPUT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_LEVEL_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_LOW_POWER_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_MEDIA_INPUT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_MEDIA_PLAYBACK_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_NETWORK_COMMISSIONING_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_ON_OFF_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_OPERATIONAL_CREDENTIALS_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_PUMP_CONFIG_CONTROL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_SCENES_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_SWITCH_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_TV_CHANNEL_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_TARGET_NAVIGATOR_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_TEMP_MEASUREMENT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_THERMOSTAT_CLUSTER_CLIENT_ENDPOINT_COUNT (1) +#define EMBER_AF_WAKE_ON_LAN_CLUSTER_CLIENT_ENDPOINT_COUNT (1) #define EMBER_AF_WINDOW_COVERING_CLUSTER_CLIENT_ENDPOINT_COUNT (1) /**** Cluster Plugins ****/ +// Use this macro to check if the client side of the Account Login cluster is included +#define ZCL_USING_ACCOUNT_LOGIN_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_ACCOUNT_LOGIN_CLIENT + // Use this macro to check if the client side of the Application Basic cluster is included #define ZCL_USING_APPLICATION_BASIC_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_APPLICATION_BASIC_CLIENT +// Use this macro to check if the client side of the Application Launcher cluster is included +#define ZCL_USING_APPLICATION_LAUNCHER_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_APPLICATION_LAUNCHER_CLIENT + +// Use this macro to check if the client side of the Audio Output cluster is included +#define ZCL_USING_AUDIO_OUTPUT_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_AUDIO_OUTPUT_CLIENT + // Use this macro to check if the client side of the Barrier Control cluster is included #define ZCL_USING_BARRIER_CONTROL_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_BARRIER_CONTROL_CLIENT @@ -74,6 +96,10 @@ #define ZCL_USING_COLOR_CONTROL_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_COLOR_CONTROL_CLIENT +// Use this macro to check if the client side of the Content Launch cluster is included +#define ZCL_USING_CONTENT_LAUNCH_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_CONTENT_LAUNCH_CLIENT + // Use this macro to check if the client side of the Descriptor cluster is included #define ZCL_USING_DESCRIPTOR_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_DESCRIPTOR_CLIENT @@ -98,6 +124,10 @@ #define ZCL_USING_IDENTIFY_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_IDENTIFY_CLIENT +// Use this macro to check if the client side of the Keypad Input cluster is included +#define ZCL_USING_KEYPAD_INPUT_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_KEYPAD_INPUT_CLIENT + // Use this macro to check if the client side of the Level Control cluster is included #define ZCL_USING_LEVEL_CONTROL_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_LEVEL_CONTROL_CLIENT @@ -106,6 +136,14 @@ #define ZCL_USING_LOW_POWER_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_LOW_POWER_CLIENT +// Use this macro to check if the client side of the Media Input cluster is included +#define ZCL_USING_MEDIA_INPUT_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_MEDIA_INPUT_CLIENT + +// Use this macro to check if the client side of the Media Playback cluster is included +#define ZCL_USING_MEDIA_PLAYBACK_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_MEDIA_PLAYBACK_CLIENT + // Use this macro to check if the client side of the Network Commissioning cluster is included #define ZCL_USING_NETWORK_COMMISSIONING_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_NETWORK_COMMISSIONING_CLIENT @@ -130,6 +168,14 @@ #define ZCL_USING_SWITCH_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_SWITCH_CLIENT +// Use this macro to check if the client side of the TV Channel cluster is included +#define ZCL_USING_TV_CHANNEL_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_TV_CHANNEL_CLIENT + +// Use this macro to check if the client side of the Target Navigator cluster is included +#define ZCL_USING_TARGET_NAVIGATOR_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_TARGET_NAVIGATOR_CLIENT + // Use this macro to check if the client side of the Temperature Measurement cluster is included #define ZCL_USING_TEMP_MEASUREMENT_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_TEMPERATURE_MEASUREMENT_CLIENT @@ -138,6 +184,10 @@ #define ZCL_USING_THERMOSTAT_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_THERMOSTAT_CLIENT +// Use this macro to check if the client side of the Wake on LAN cluster is included +#define ZCL_USING_WAKE_ON_LAN_CLUSTER_CLIENT +#define EMBER_AF_PLUGIN_WAKE_ON_LAN_CLIENT + // Use this macro to check if the client side of the Window Covering cluster is included #define ZCL_USING_WINDOW_COVERING_CLUSTER_CLIENT #define EMBER_AF_PLUGIN_WINDOW_COVERING_CLIENT diff --git a/src/controller/python/local-clusters.zap b/src/controller/python/local-clusters.zap index c87f4d5e1a6f5d..0b5717d0c4a3e5 100644 --- a/src/controller/python/local-clusters.zap +++ b/src/controller/python/local-clusters.zap @@ -4506,20 +4506,888 @@ } ] }, + { + "name": "Wake on LAN", + "code": 1283, + "mfgCode": null, + "define": "WAKE_ON_LAN_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Wake on LAN", + "code": 1283, + "mfgCode": null, + "define": "WAKE_ON_LAN_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [], + "attributes": [ + { + "name": "wake on lan mac address", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "TV Channel", + "code": 1284, + "mfgCode": null, + "define": "TV_CHANNEL_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "ChangeChannel", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ChangeChannelByNumber", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "SkipChannel", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "TV Channel", + "code": 1284, + "mfgCode": null, + "define": "TV_CHANNEL_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "ChangeChannelResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "tv channel list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "tv channel lineup", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "current tv channel", + "code": 2, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Target Navigator", + "code": 1285, + "mfgCode": null, + "define": "TARGET_NAVIGATOR_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "NavigateTarget", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Target Navigator", + "code": 1285, + "mfgCode": null, + "define": "TARGET_NAVIGATOR_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "NavigateTargetResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "target navigator list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Playback", + "code": 1286, + "mfgCode": null, + "define": "MEDIA_PLAYBACK_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "MediaPlay", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaPause", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaStop", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaStartOver", + "code": 3, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaPrevious", + "code": 4, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaNext", + "code": 5, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaRewind", + "code": 6, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaFastForward", + "code": 7, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaSkipForward", + "code": 8, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaSkipBackward", + "code": 9, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "MediaSkipSeek", + "code": 10, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Playback", + "code": 1286, + "mfgCode": null, + "define": "MEDIA_PLAYBACK_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "MediaPlayResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaPauseResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaStopResponse", + "code": 2, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaStartOverResponse", + "code": 3, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaPreviousResponse", + "code": 4, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaNextResponse", + "code": 5, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaRewindResponse", + "code": 6, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaFastForwardResponse", + "code": 7, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaSkipForwardResponse", + "code": 8, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaSkipBackwardResponse", + "code": 9, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "MediaSkipSeekResponse", + "code": 10, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Input", + "code": 1287, + "mfgCode": null, + "define": "MEDIA_INPUT_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "SelectInput", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "ShowInputStatus", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "HideInputStatus", + "code": 2, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "RenameInput", + "code": 3, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Media Input", + "code": 1287, + "mfgCode": null, + "define": "MEDIA_INPUT_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [], + "attributes": [ + { + "name": "media input list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Low Power", + "code": 1288, + "mfgCode": null, + "define": "LOW_POWER_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "Sleep", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 1, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, { "name": "Low Power", "code": 1288, "mfgCode": null, - "define": "LOW_POWER_CLUSTER", + "define": "LOW_POWER_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Keypad Input", + "code": 1289, + "mfgCode": null, + "define": "KEYPAD_INPUT_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "SendKey", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Keypad Input", + "code": 1289, + "mfgCode": null, + "define": "KEYPAD_INPUT_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "SendKeyResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Content Launch", + "code": 1290, + "mfgCode": null, + "define": "CONTENT_LAUNCH_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "LaunchContent", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "LaunchURL", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Content Launch", + "code": 1290, + "mfgCode": null, + "define": "CONTENT_LAUNCH_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "LaunchContentResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + }, + { + "name": "LaunchURLResponse", + "code": 1, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "accepts header list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "supported streaming types", + "code": 1, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Audio Output", + "code": 1291, + "mfgCode": null, + "define": "AUDIO_OUTPUT_CLUSTER", "side": "client", "enabled": 1, "commands": [ { - "name": "Sleep", + "name": "SelectOutput", "code": 0, "mfgCode": null, "source": "client", - "incoming": 1, + "incoming": 0, + "outgoing": 1 + }, + { + "name": "RenameOutput", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, "outgoing": 1 } ], @@ -4542,14 +5410,114 @@ ] }, { - "name": "Low Power", - "code": 1288, + "name": "Audio Output", + "code": 1291, "mfgCode": null, - "define": "LOW_POWER_CLUSTER", + "define": "AUDIO_OUTPUT_CLUSTER", "side": "server", "enabled": 0, "commands": [], "attributes": [ + { + "name": "audio output list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Application Launcher", + "code": 1292, + "mfgCode": null, + "define": "APPLICATION_LAUNCHER_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "LaunchApp", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Application Launcher", + "code": 1292, + "mfgCode": null, + "define": "APPLICATION_LAUNCHER_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "LaunchAppResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "application launcher list", + "code": 0, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + }, { "name": "cluster revision", "code": 65533, @@ -4724,6 +5692,84 @@ } ] }, + { + "name": "Account Login", + "code": 1294, + "mfgCode": null, + "define": "ACCOUNT_LOGIN_CLUSTER", + "side": "client", + "enabled": 1, + "commands": [ + { + "name": "GetSetupPIN", + "code": 0, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + }, + { + "name": "Login", + "code": 1, + "mfgCode": null, + "source": "client", + "incoming": 0, + "outgoing": 1 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "client", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, + { + "name": "Account Login", + "code": 1294, + "mfgCode": null, + "define": "ACCOUNT_LOGIN_CLUSTER", + "side": "server", + "enabled": 0, + "commands": [ + { + "name": "GetSetupPINResponse", + "code": 0, + "mfgCode": null, + "source": "server", + "incoming": 1, + "outgoing": 0 + } + ], + "attributes": [ + { + "name": "cluster revision", + "code": 65533, + "mfgCode": null, + "side": "server", + "included": 1, + "storageOption": "RAM", + "singleton": 0, + "bounded": 0, + "defaultValue": "0x0001", + "reportable": 0, + "minInterval": 0, + "maxInterval": 65344, + "reportableChange": 0 + } + ] + }, { "name": "Binding", "code": 61440, diff --git a/src/darwin/Framework/CHIP.xcodeproj/project.pbxproj b/src/darwin/Framework/CHIP.xcodeproj/project.pbxproj index d20097cfd16c4a..7d043ff96b796a 100644 --- a/src/darwin/Framework/CHIP.xcodeproj/project.pbxproj +++ b/src/darwin/Framework/CHIP.xcodeproj/project.pbxproj @@ -31,7 +31,6 @@ 1EC4CE6025CC26E900D7304F /* CHIPClientCallbacks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE5C25CC26E900D7304F /* CHIPClientCallbacks.cpp */; }; 1EC4CE6225CC271B00D7304F /* af-event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1EC4CE6125CC271B00D7304F /* af-event.cpp */; }; 1EC4CE6425CC276600D7304F /* CHIPClustersObjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EC4CE6325CC276600D7304F /* CHIPClustersObjc.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1ED0B8CC260125E100D19DB5 /* media-playback-client.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ED0B8CB260125E100D19DB5 /* media-playback-client.cpp */; }; 2C222AD0255C620600E446B9 /* CHIPDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C222ACE255C620600E446B9 /* CHIPDevice.h */; settings = {ATTRIBUTES = (Public, ); }; }; 2C222AD1255C620600E446B9 /* CHIPDevice.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2C222ACF255C620600E446B9 /* CHIPDevice.mm */; }; 2C222ADF255C811800E446B9 /* CHIPDevice_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C222ADE255C811800E446B9 /* CHIPDevice_Internal.h */; }; @@ -94,7 +93,6 @@ 1EC4CE5C25CC26E900D7304F /* CHIPClientCallbacks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CHIPClientCallbacks.cpp; path = gen/CHIPClientCallbacks.cpp; sourceTree = ""; }; 1EC4CE6125CC271B00D7304F /* af-event.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "af-event.cpp"; path = "../../../app/util/af-event.cpp"; sourceTree = ""; }; 1EC4CE6325CC276600D7304F /* CHIPClustersObjc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CHIPClustersObjc.h; path = gen/CHIPClustersObjc.h; sourceTree = ""; }; - 1ED0B8CB260125E100D19DB5 /* media-playback-client.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "media-playback-client.cpp"; path = "../../../app/clusters/media-playback-client/media-playback-client.cpp"; sourceTree = ""; }; 2C222ACE255C620600E446B9 /* CHIPDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHIPDevice.h; sourceTree = ""; }; 2C222ACF255C620600E446B9 /* CHIPDevice.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CHIPDevice.mm; sourceTree = ""; }; 2C222ADE255C811800E446B9 /* CHIPDevice_Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHIPDevice_Internal.h; sourceTree = ""; }; @@ -150,7 +148,6 @@ 1EC4CE3525CC259700D7304F /* CHIPApp */ = { isa = PBXGroup; children = ( - 1ED0B8CB260125E100D19DB5 /* media-playback-client.cpp */, 1EC4CE6125CC271B00D7304F /* af-event.cpp */, 1EC4CE4925CC267700D7304F /* af-main-common.cpp */, 1EC4CE4125CC267600D7304F /* attribute-size.cpp */, @@ -418,7 +415,6 @@ 1EC4CE6225CC271B00D7304F /* af-event.cpp in Sources */, 1EC4CE4E25CC267700D7304F /* attribute-size.cpp in Sources */, 1EC4CE4D25CC267700D7304F /* process-global-message.cpp in Sources */, - 1ED0B8CC260125E100D19DB5 /* media-playback-client.cpp in Sources */, 1EC4CE5125CC267700D7304F /* message.cpp in Sources */, 1EC4CE5D25CC26E900D7304F /* CHIPClustersObjc.mm in Sources */, 1E9BD1C72621AFF100FC3246 /* attribute-size.cpp in Sources */, diff --git a/src/darwin/Framework/CHIP/gen/af-structs.h b/src/darwin/Framework/CHIP/gen/af-structs.h index b19ca54657a27a..16a5ef656d51ef 100644 --- a/src/darwin/Framework/CHIP/gen/af-structs.h +++ b/src/darwin/Framework/CHIP/gen/af-structs.h @@ -34,9 +34,9 @@ typedef struct _ApplicationLauncherApp // Struct for AudioOutputInfo typedef struct _AudioOutputInfo { - uint8_t Index; - uint8_t OutputType; - uint8_t * Name; + uint8_t index; + uint8_t outputType; + uint8_t * name; } EmberAfAudioOutputInfo; // Struct for BasicCommissioningInfoType @@ -100,17 +100,44 @@ typedef struct _ConfigureReportingStatusRecord // Struct for ContentLaunchAdditionalInfo typedef struct _ContentLaunchAdditionalInfo { - uint8_t * Name; - uint8_t * Value; + uint8_t * name; + uint8_t * value; } EmberAfContentLaunchAdditionalInfo; -// Struct for ContentLaunchSearch -typedef struct _ContentLaunchSearch +// Struct for ContentLaunchBrandingInformation +typedef struct _ContentLaunchBrandingInformation +{ + uint8_t * providerName; + uint8_t background; + uint8_t logo; + uint8_t progressBar; + uint8_t splash; + uint8_t waterMark; +} EmberAfContentLaunchBrandingInformation; + +// Struct for ContentLaunchDimension +typedef struct _ContentLaunchDimension +{ + uint8_t * width; + uint8_t * height; + uint8_t metric; +} EmberAfContentLaunchDimension; + +// Struct for ContentLaunchParamater +typedef struct _ContentLaunchParamater { - uint8_t EntitiesList; - uint8_t * searchWindowStart; - uint8_t * searchWindowEnd; -} EmberAfContentLaunchSearch; + uint8_t Type; + uint8_t * Value; + /* TYPE WARNING: array array defaults to */ uint8_t * ExternalIDList; +} EmberAfContentLaunchParamater; + +// Struct for ContentLaunchStyleInformation +typedef struct _ContentLaunchStyleInformation +{ + uint8_t * imageUrl; + uint8_t * color; + uint8_t size; +} EmberAfContentLaunchStyleInformation; // Struct for DebtPayload typedef struct _DebtPayload @@ -253,12 +280,19 @@ typedef uint8_t EmberAfIdentity; // Struct for MediaInputInfo typedef struct _MediaInputInfo { - uint8_t Index; - uint8_t InputType; - uint8_t * Name; - uint8_t * Description; + uint8_t index; + uint8_t inputType; + uint8_t * name; + uint8_t * description; } EmberAfMediaInputInfo; +// Struct for MediaPlaybackPosition +typedef struct _MediaPlaybackPosition +{ + uint64_t updatedAt; + uint64_t position; +} EmberAfMediaPlaybackPosition; + // Struct for NavigateTargetTargetInfo typedef struct _NavigateTargetTargetInfo { @@ -485,20 +519,20 @@ typedef struct _TransferredPhase // Struct for TvChannelInfo typedef struct _TvChannelInfo { - uint16_t MajorNumber; - uint16_t MinorNumber; - uint8_t * Name; - uint8_t * CallSign; - uint8_t * AffiliateCallSign; + uint16_t majorNumber; + uint16_t minorNumber; + uint8_t * name; + uint8_t * callSign; + uint8_t * affiliateCallSign; } EmberAfTvChannelInfo; // Struct for TvChannelLineupInfo typedef struct _TvChannelLineupInfo { - uint8_t * OperatorName; - uint8_t * LineupName; - uint8_t * PostalCode; - uint8_t LineupInfoType; + uint8_t * operatorName; + uint8_t * lineupName; + uint8_t * postalCode; + uint8_t lineupInfoType; } EmberAfTvChannelLineupInfo; // Struct for WiFiInterfaceScanResult diff --git a/src/darwin/Framework/CHIP/gen/attribute-id.h b/src/darwin/Framework/CHIP/gen/attribute-id.h index 6c224f5faf016e..8e7aa393464caf 100644 --- a/src/darwin/Framework/CHIP/gen/attribute-id.h +++ b/src/darwin/Framework/CHIP/gen/attribute-id.h @@ -1167,7 +1167,14 @@ // Client attributes // Server attributes -#define ZCL_CURRENT_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_STATE_ATTRIBUTE_ID (0x0000) +#define ZCL_MEDIA_PLAYBACK_START_TIME_ATTRIBUTE_ID (0x0001) +#define ZCL_MEDIA_PLAYBACK_DURATION_ATTRIBUTE_ID (0x0002) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_UPDATED_AT_ATTRIBUTE_ID (0x0003) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_POSITION_ATTRIBUTE_ID (0x0004) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SPEED_ATTRIBUTE_ID (0x0005) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_END_ATTRIBUTE_ID (0x0006) +#define ZCL_MEDIA_PLAYBACK_PLAYBACK_SEEK_RANGE_START_ATTRIBUTE_ID (0x0007) // Attribute ids for cluster: Media Input @@ -1194,6 +1201,8 @@ // Client attributes // Server attributes +#define ZCL_CONTENT_LAUNCHER_ACCEPTS_HEADER_ATTRIBUTE_ID (0x0000) +#define ZCL_CONTENT_LAUNCHER_SUPPORTED_STREAMING_TYPES_ATTRIBUTE_ID (0x0001) // Attribute ids for cluster: Audio Output @@ -1209,7 +1218,8 @@ // Server attributes #define ZCL_APPLICATION_LAUNCHER_LIST_ATTRIBUTE_ID (0x0000) -#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_CATALOG_VENDOR_ID_ATTRIBUTE_ID (0x0001) +#define ZCL_APPLICATION_LAUNCHER_CURRENT_APP_APPLICATION_ID_ATTRIBUTE_ID (0x0002) // Attribute ids for cluster: Application Basic diff --git a/src/darwin/Framework/CHIP/gen/client-command-macro.h b/src/darwin/Framework/CHIP/gen/client-command-macro.h index c976129992f7e6..1cfc06d80ce7c2 100644 --- a/src/darwin/Framework/CHIP/gen/client-command-macro.h +++ b/src/darwin/Framework/CHIP/gen/client-command-macro.h @@ -3361,95 +3361,126 @@ \ ZCL_NAVIGATE_TARGET_COMMAND_ID, "uuuu", target, status, data, data); -/** @brief Command description for PlayRequest +/** @brief Command description for MediaPlay * - * Command: PlayRequest + * Command: MediaPlay + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPlayRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPlay(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_PLAY_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PLAY_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PauseRequest +/** @brief Command description for MediaPause * - * Command: PauseRequest + * Command: MediaPause + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPauseRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPause(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PAUSE_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PAUSE_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StopRequest +/** @brief Command description for MediaStop * - * Command: StopRequest + * Command: MediaStop + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStopRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStop(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_STOP_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_STOP_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for StartOverRequest +/** @brief Command description for MediaStartOver * - * Command: StartOverRequest + * Command: MediaStartOver + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterStartOverRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaStartOver(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_START_OVER_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_START_OVER_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for PreviousRequest +/** @brief Command description for MediaPrevious * - * Command: PreviousRequest + * Command: MediaPrevious + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterPreviousRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaPrevious(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_PREVIOUS_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_PREVIOUS_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for NextRequest +/** @brief Command description for MediaNext * - * Command: NextRequest + * Command: MediaNext + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterNextRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaNext(mediaPlaybackStatus) emberAfFillExternalBuffer(mask, \ \ - ZCL_NEXT_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_NEXT_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for RewindRequest +/** @brief Command description for MediaRewind * - * Command: RewindRequest + * Command: MediaRewind + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterRewindRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaRewind(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_REWIND_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_REWIND_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for FastForwardRequest +/** @brief Command description for MediaFastForward * - * Command: FastForwardRequest + * Command: MediaFastForward + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterFastForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaFastForward(mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_FAST_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_FAST_FORWARD_COMMAND_ID, "u", mediaPlaybackStatus); -/** @brief Command description for SkipForwardRequest +/** @brief Command description for MediaSkipForward * - * Command: SkipForwardRequest + * Command: MediaSkipForward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipForwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipForward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); -/** @brief Command description for SkipBackwardRequest +/** @brief Command description for MediaSkipBackward * - * Command: SkipBackwardRequest + * Command: MediaSkipBackward + * @param deltaPositionMilliseconds INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus */ #define emberAfFillCommandMedia \ - PlaybackClusterSkipBackwardRequest() emberAfFillExternalBuffer(mask, \ + PlaybackClusterMediaSkipBackward(deltaPositionMilliseconds, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID, "", ); + ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID, "uu", deltaPositionMilliseconds, mediaPlaybackStatus); + +/** @brief Command description for MediaSkipSeek + * + * Command: MediaSkipSeek + * @param position INT64U + * @param mediaPlaybackStatus MediaPlaybackStatus + */ +#define emberAfFillCommandMedia \ + PlaybackClusterMediaSkipSeek(position, mediaPlaybackStatus) \ + emberAfFillExternalBuffer(mask, \ + \ + ZCL_MEDIA_SKIP_SEEK_COMMAND_ID, "uu", position, mediaPlaybackStatus); /** @brief Command description for SelectInput * @@ -3502,7 +3533,7 @@ /** @brief Command description for SendKey * * Command: SendKey - * @param keyCode INT8U + * @param keyCode KeypadInputCecKeyCode * @param status KeypadInputStatus */ #define emberAfFillCommandKeypad \ @@ -3513,23 +3544,30 @@ /** @brief Command description for LaunchContent * * Command: LaunchContent + * @param autoPlay BOOLEAN + * @param data CHAR_STRING + * @param data CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchContent(contentLaunchStatus) \ + LaunchClusterLaunchContent(autoPlay, data, data, contentLaunchStatus) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_CONTENT_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_CONTENT_COMMAND_ID, "uuuu", autoPlay, data, data, contentLaunchStatus); /** @brief Command description for LaunchURL * * Command: LaunchURL + * @param contentURL CHAR_STRING + * @param data CHAR_STRING + * @param displayString CHAR_STRING * @param contentLaunchStatus ContentLaunchStatus */ #define emberAfFillCommandContent \ - LaunchClusterLaunchURL(contentLaunchStatus) emberAfFillExternalBuffer(mask, \ + LaunchClusterLaunchURL(contentURL, data, displayString, contentLaunchStatus) \ + emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_URL_COMMAND_ID, "u", contentLaunchStatus); + ZCL_LAUNCH_URL_COMMAND_ID, "uuuu", contentURL, data, displayString, contentLaunchStatus); /** @brief Command description for SelectOutput * @@ -3555,17 +3593,17 @@ /** @brief Command description for LaunchApp * * Command: LaunchApp + * @param data CHAR_STRING + * @param status ApplicationLauncherStatus * @param application ApplicationLauncherApp [] * @param applicationLen int - * @param status ApplicationLauncherStatus - * @param data CHAR_STRING * @param data CHAR_STRING */ #define emberAfFillCommandApplication \ - LauncherClusterLaunchApp(application, applicationLen, status, data, data) \ + LauncherClusterLaunchApp(data, status, application, applicationLen, data) \ emberAfFillExternalBuffer(mask, \ \ - ZCL_LAUNCH_APP_COMMAND_ID, "buuu", application, applicationLen, status, data, data); + ZCL_LAUNCH_APP_COMMAND_ID, "uubu", data, status, application, applicationLen, data); /** @brief Command description for GetSetupPIN * diff --git a/src/darwin/Framework/CHIP/gen/command-id.h b/src/darwin/Framework/CHIP/gen/command-id.h index e3c8f93cadb923..25ee08826f030c 100644 --- a/src/darwin/Framework/CHIP/gen/command-id.h +++ b/src/darwin/Framework/CHIP/gen/command-id.h @@ -415,17 +415,28 @@ #define ZCL_NAVIGATE_TARGET_RESPONSE_COMMAND_ID (0x00) // Commands for cluster: Media Playback -#define ZCL_PLAY_REQUEST_COMMAND_ID (0x00) -#define ZCL_PLAYBACK_COMMAND_ID (0x00) -#define ZCL_PAUSE_REQUEST_COMMAND_ID (0x01) -#define ZCL_STOP_REQUEST_COMMAND_ID (0x02) -#define ZCL_START_OVER_REQUEST_COMMAND_ID (0x03) -#define ZCL_PREVIOUS_REQUEST_COMMAND_ID (0x04) -#define ZCL_NEXT_REQUEST_COMMAND_ID (0x05) -#define ZCL_REWIND_REQUEST_COMMAND_ID (0x06) -#define ZCL_FAST_FORWARD_REQUEST_COMMAND_ID (0x07) -#define ZCL_SKIP_FORWARD_REQUEST_COMMAND_ID (0x08) -#define ZCL_SKIP_BACKWARD_REQUEST_COMMAND_ID (0x09) +#define ZCL_MEDIA_PLAY_COMMAND_ID (0x00) +#define ZCL_MEDIA_PLAY_RESPONSE_COMMAND_ID (0x00) +#define ZCL_MEDIA_PAUSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_PAUSE_RESPONSE_COMMAND_ID (0x01) +#define ZCL_MEDIA_STOP_COMMAND_ID (0x02) +#define ZCL_MEDIA_STOP_RESPONSE_COMMAND_ID (0x02) +#define ZCL_MEDIA_START_OVER_COMMAND_ID (0x03) +#define ZCL_MEDIA_START_OVER_RESPONSE_COMMAND_ID (0x03) +#define ZCL_MEDIA_PREVIOUS_COMMAND_ID (0x04) +#define ZCL_MEDIA_PREVIOUS_RESPONSE_COMMAND_ID (0x04) +#define ZCL_MEDIA_NEXT_COMMAND_ID (0x05) +#define ZCL_MEDIA_NEXT_RESPONSE_COMMAND_ID (0x05) +#define ZCL_MEDIA_REWIND_COMMAND_ID (0x06) +#define ZCL_MEDIA_REWIND_RESPONSE_COMMAND_ID (0x06) +#define ZCL_MEDIA_FAST_FORWARD_COMMAND_ID (0x07) +#define ZCL_MEDIA_FAST_FORWARD_RESPONSE_COMMAND_ID (0x07) +#define ZCL_MEDIA_SKIP_FORWARD_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_FORWARD_RESPONSE_COMMAND_ID (0x08) +#define ZCL_MEDIA_SKIP_BACKWARD_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_BACKWARD_RESPONSE_COMMAND_ID (0x09) +#define ZCL_MEDIA_SKIP_SEEK_COMMAND_ID (0x0A) +#define ZCL_MEDIA_SKIP_SEEK_RESPONSE_COMMAND_ID (0x0A) // Commands for cluster: Media Input #define ZCL_SELECT_INPUT_COMMAND_ID (0x00) diff --git a/src/darwin/Framework/CHIP/gen/enums.h b/src/darwin/Framework/CHIP/gen/enums.h index f006d55171bec8..c14422f16eb01d 100644 --- a/src/darwin/Framework/CHIP/gen/enums.h +++ b/src/darwin/Framework/CHIP/gen/enums.h @@ -462,6 +462,29 @@ typedef enum EMBER_ZCL_COMMODITY_TYPE_ELECTRIC_METERING_ELEMENT3 = 15, } EmberAfCommodityType; +// Enum for ContentLaunchMetricType +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PIXELS = 0, + EMBER_ZCL_CONTENT_LAUNCH_METRIC_TYPE_PERCENTAGE = 1, +} EmberAfContentLaunchMetricType; + +// Enum for ContentLaunchParameterEnum +typedef enum +{ + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_ACTOR = 0, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHANNEL = 1, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_CHARACTER = 2, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_EVENT = 3, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_FRANCHISE = 4, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_GENRE = 5, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_LEAGUE = 6, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_POPULARITY = 7, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORT = 8, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_SPORTS_TEAM = 9, + EMBER_ZCL_CONTENT_LAUNCH_PARAMETER_ENUM_VIDEO = 10, +} EmberAfContentLaunchParameterEnum; + // Enum for ContentLaunchStatus typedef enum { @@ -470,21 +493,12 @@ typedef enum EMBER_ZCL_CONTENT_LAUNCH_STATUS_AUTH_FAILED = 2, } EmberAfContentLaunchStatus; -// Enum for ContentLaunchType +// Enum for ContentLaunchStreamingType typedef enum { - EMBER_ZCL_CONTENT_LAUNCH_TYPE_ACTOR = 0, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHANNEL = 1, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_CHARACTER = 2, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_EVENT = 3, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_FRANCHISE = 4, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_GENRE = 5, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_LEAGUE = 6, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_POPULARITY = 7, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORT = 8, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_SPORTS_TEAM = 9, - EMBER_ZCL_CONTENT_LAUNCH_TYPE_VIDEO = 10, -} EmberAfContentLaunchType; + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_DASH = 0, + EMBER_ZCL_CONTENT_LAUNCH_STREAMING_TYPE_HLS = 1, +} EmberAfContentLaunchStreamingType; // Enum for CppEventResponseCppAuth typedef enum @@ -1617,6 +1631,97 @@ typedef enum EMBER_ZCL_KEY_INDEX_CERTIFICATION = 15, } EmberAfKeyIndex; +// Enum for KeypadInputCecKeyCode +typedef enum +{ + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT = 0, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_UP = 1, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOWN = 2, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT = 3, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT = 4, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_UP = 5, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RIGHT_DOWN = 6, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_UP = 7, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_LEFT_DOWN = 8, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ROOT_MENU = 9, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SETUP_MENU = 10, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CONTENTS_MENU = 11, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAVORITE_MENU = 12, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EXIT = 13, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_TOP_MENU = 16, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MEDIA_CONTEXT_SENSITIVE_MENU = 17, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER_ENTRY_MODE = 29, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER11 = 30, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER12 = 31, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBER0_OR_NUMBER10 = 32, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS1 = 33, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS2 = 34, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS3 = 35, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS4 = 36, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS5 = 37, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS6 = 38, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS7 = 39, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS8 = 40, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NUMBERS9 = 41, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DOT = 42, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ENTER = 43, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CLEAR = 44, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_NEXT_FAVORITE = 47, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_UP = 48, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_CHANNEL_DOWN = 49, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PREVIOUS_CHANNEL = 50, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SOUND_SELECT = 51, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INPUT_SELECT = 52, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DISPLAY_INFORMATION = 53, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_HELP = 54, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_UP = 55, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAGE_DOWN = 56, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER = 64, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_UP = 65, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VOLUME_DOWN = 66, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE = 67, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY = 68, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP = 69, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE = 70, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD = 71, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_REWIND = 72, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FAST_FORWARD = 73, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_EJECT = 74, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_FORWARD = 75, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_BACKWARD = 76, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_RECORD = 77, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD = 78, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESERVED = 79, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ANGLE = 80, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SUB_PICTURE = 81, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_VIDEO_ON_DEMAND = 82, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_ELECTRONIC_PROGRAM_GUIDE = 83, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TIMER_PROGRAMMING = 84, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_INITIAL_CONFIGURATION = 85, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_BROADCAST_TYPE = 86, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_SOUND_PRESENTATION = 87, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PLAY_FUNCTION = 96, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_PLAY_FUNCTION = 97, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RECORD_FUNCTION = 98, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_PAUSE_RECORD_FUNCTION = 99, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_STOP_FUNCTION = 100, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_MUTE_FUNCTION = 101, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_RESTORE_VOLUME_FUNCTION = 102, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_TUNE_FUNCTION = 103, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_MEDIA_FUNCTION = 104, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AV_INPUT_FUNCTION = 105, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_SELECT_AUDIO_INPUT_FUNCTION = 106, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_TOGGLE_FUNCTION = 107, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_OFF_FUNCTION = 108, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_POWER_ON_FUNCTION = 109, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F1_BLUE = 113, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F2_RED = 114, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F3_GREEN = 115, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F4_YELLOW = 116, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_F5 = 117, + EMBER_ZCL_KEYPAD_INPUT_CEC_KEY_CODE_DATA = 118, +} EmberAfKeypadInputCecKeyCode; + // Enum for KeypadInputStatus typedef enum { @@ -1698,6 +1803,26 @@ typedef enum EMBER_ZCL_MEDIA_INPUT_TYPE_OTHER = 11, } EmberAfMediaInputType; +// Enum for MediaPlaybackState +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PLAYING = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_PAUSED = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_NOT_PLAYING = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATE_BUFFERING = 3, +} EmberAfMediaPlaybackState; + +// Enum for MediaPlaybackStatus +typedef enum +{ + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SUCCESS = 0, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_INVALID_STATE_FOR_COMMAND = 1, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ALLOWED = 2, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_NOT_ACTIVE = 3, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SPEED_OUT_OF_RANGE = 4, + EMBER_ZCL_MEDIA_PLAYBACK_STATUS_SEEK_OUT_OF_RANGE = 5, +} EmberAfMediaPlaybackStatus; + // Enum for MessagingControlConfirmation typedef enum {