View a markdown version of this page

C-Function APIs de baixo nível - Integrações gerenciadas para AWS IoT Device Management

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

C-Function APIs de baixo nível

Integre o código específico do seu dispositivo com integrações gerenciadas usando as APIs de baixo nível fornecidas. C-Function Esta seção descreve as operações de API disponíveis para cada cluster no modelo de AWS dados para interações eficientes entre dispositivo e nuvem. Saiba como implementar funções de retorno de chamada, emitir eventos, notificar alterações de atributos e registrar clusters para os endpoints do seu dispositivo.

Os principais componentes da API incluem:
  1. Estruturas de ponteiro de função de retorno de chamada para atributos e comandos

  2. Funções de emissão de eventos

  3. Funções de notificação de alteração de atributos

  4. Funções de registro de cluster

Ao implementar essas APIs, você cria uma ponte entre as operações físicas do seu dispositivo e os recursos de nuvem do Managed Integrations, garantindo comunicação e controle contínuos.

A seção a seguir ilustra a API do OnOffcluster.

OnOff API de cluster

O OnOff.xmlcluster oferece suporte a esses atributos e comandos:.

  • Atributos:

    • OnOff (boolean)

    • GlobalSceneControl (boolean)

    • OnTime (int16u)

    • OffWaitTime (int16u)

    • StartUpOnOff (StartUpOnOffEnum)

  • Comandos:

    • Off : () -> Status

    • On : () -> Status

    • Toggle : () -> Status

    • OffWithEffect : (EffectIdentifier: EffectIdentifierEnum, EffectVariant: enum8) -> Status

    • OnWithRecallGlobalScene : () -> Status

    • OnWithTimedOff : (OnOffControl: OnOffControlBitmap, OnTime: int16u, OffWaitTime: int16u) -> Status

    Para cada comando, fornecemos o ponteiro de função mapeado 1:1 que você pode usar para conectar sua implementação.

Todos os retornos de chamada para atributos e comandos são definidos em uma estrutura C com o nome do cluster.

struct iotmiDev_clusterOnOff { /* - Each attribute has a getter callback if it's readable - Each attribute has a setter callback if it's writable - The type of `value` are derived according to the data type of the attribute. - `user` is the pointer passed during an endpoint setup - The callback should return iotmiDev_DMStatus to report success or not. - For unsupported attributes, just leave them as NULL. */ iotmiDev_DMStatus (*getOnTime)(uint16_t *value, void *user); iotmiDev_DMStatus (*setOnTime)(uint16_t value, void *user); /* - Each command has a command callback - If a command takes parameters, the parameters will be defined in a struct such as `iotmiDev_OnOff_OnWithTimedOffRequest` below. - `user` is the pointer passed during an endpoint setup - The callback should return iotmiDev_DMStatus to report success or not. - For unsupported commands, just leave them as NULL. */ iotmiDev_DMStatus (*cmdOff)(void *user); iotmiDev_DMStatus (*cmdOnWithTimedOff)(const iotmiDev_OnOff_OnWithTimedOffRequest *request, void *user); };

Além da estrutura C, as funções de relatório de alterações de atributos são definidas para todos os atributos.

/* Each attribute has a report function for the customer to report an attribute change. An attribute report function is thread-safe. */ void iotmiDev_OnOff_OnTime_report_attr(struct iotmiDev_Endpoint *endpoint, uint16_t newValue, bool immediate);

As funções de relatório de eventos são definidas para todos os eventos específicos do cluster. Como o OnOff cluster não define nenhum evento, abaixo está um exemplo do CameraAvStreamManagement cluster.

/* Each event has a report function for the customer to report an event. An event report function is thread-safe. The iotmiDev_CameraAvStreamManagement_VideoStreamChangedEvent struct is derived from the event definition in the cluster. */ void iotmiDev_CameraAvStreamManagement_VideoStreamChanged_report_event(struct iotmiDev_Endpoint *endpoint, const iotmiDev_CameraAvStreamManagement_VideoStreamChangedEvent *event, bool immediate);

Cada cluster também tem uma função de registro.

iotmiDev_DMStatus iotmiDev_OnOffRegisterCluster(struct iotmiDev_Endpoint *endpoint, const struct iotmiDev_clusterOnOff *cluster, void *user);

O ponteiro do usuário passado para a função de registro será passado para as funções de retorno de chamada.