

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á.

# Função C de baixo nível APIs
<a name="managedintegrations-sdk-device-api"></a>

Integre o código específico do seu dispositivo com integrações gerenciadas usando a função C de baixo nível fornecida. APIs 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

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

1. Funções de notificação de alteração de atributo

1. Funções de registro de cluster

Ao implementá-los APIs, você cria uma ponte entre as operações físicas do seu dispositivo e os recursos de nuvem de integrações gerenciadas, garantindo comunicação e controle contínuos.

A seção a seguir ilustra a API do [OnOffcluster](https://github.com/project-chip/connectedhomeip/blob/v1.3.0.0/data_model/clusters/OnOff.xml).

## OnOff API de cluster
<a name="managedintegrations-sdk-device-api-onoff"></a>

O [https://github.com/project-chip/connectedhomeip/blob/5bb5c9e23d532cea40476fc0bd1d3008522792ba/data_model/clusters/OnOff.xml](https://github.com/project-chip/connectedhomeip/blob/5bb5c9e23d532cea40476fc0bd1d3008522792ba/data_model/clusters/OnOff.xml)cluster 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.

### Exemplo de estrutura C
<a name="example-c-struct-id"></a>

```
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.