Operaciones de API para funciones C de bajo nivel - Integraciones gestionadas para AWS IoT Device Management

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Operaciones de API para funciones C de bajo nivel

Integre el código específico de su dispositivo con las integraciones gestionadas mediante la función C de bajo nivel proporcionada. APIs En esta sección, se describen las operaciones de la API disponibles para cada clúster del modelo de AWS datos para que las interacciones entre el dispositivo y la nube sean eficientes. Aprenda a implementar funciones de devolución de llamadas, emitir eventos, notificar cambios de atributos y registrar clústeres para los puntos finales de sus dispositivos.

Los componentes clave de la API incluyen:
  1. Funciones de retrollamada: estructuras de punteros para atributos y comandos

  2. Funciones de emisión de eventos

  3. Funciones de notificación de cambios de atributos

  4. Funciones de registro de clústeres

Al implementarlas APIs, crea un puente entre las operaciones físicas de su dispositivo y las funciones de la nube de integraciones gestionadas, lo que garantiza una comunicación y un control sin problemas.

En la siguiente sección, se muestra la API del OnOffclúster.

OnOff API de clúster

El OnOff.xmlclúster admite estos atributos y 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, proporcionamos el puntero de función mapeado 1:1 que puede usar para conectar su implementación.

Todas las llamadas de los atributos y comandos se definen dentro de una estructura en C que lleva el nombre del clúster.

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); };

Además de la estructura C, se definen funciones de informe de cambios de atributos para todos los 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);

Las funciones de notificación de eventos están definidas para todos los eventos específicos del clúster. Como el OnOff clúster no define ningún evento, a continuación se muestra un ejemplo del clúster. CameraAvStreamManagement

/* 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 clúster también tiene una función de registro.

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

El puntero del usuario que se pase a la función de registro pasará a las funciones de devolución de llamada.