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:
-
Funciones de retrollamada: estructuras de punteros para atributos y comandos
-
Funciones de emisión de eventos
-
Funciones de notificación de cambios de atributos
-
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.xml
-
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.