Datenaustausch - DALI Low Level Driver - API
Der Low Level Treiber schickt seine Nachrichten über die Funktion dalill_toDaliLib zur API, wie im folgenden Beispiel:
/*************************************************************/
/* forward low level frames to dalilib
**************************************************************/
void dalill_toDalilib(void * p_context, dalill_frame_t* p_frame)
{
dalilib_receive(p_context, (dalilib_frame_t*)p_frame);
}
Die API schickt ihre Daten über den dali_send_callback an den Low Level Treiber. Dieser wird über die Funktion dall_ll_SendQueue mit den Daten beschickt. Wichtig ist, dass im dritten Parameter die richtige Instanz der APIs eingetragen wird, damit der Loop-Layer richtig arbeitet. Zum Beispiel:
/**************************************************************/
/* will be called by the DALI library if it wants to send a DALI message
* to the driver
* result: 0: success
**************************************************************/
static uint8_t dali_send_callback(void * p_context, dalilib_frame_t* p_frame)
{
uint8_t result = 0;
if(bDaliStackReady)
{
result = dalill_pushSendQueue(p_context,(dalill_frame_t* ) p_frame,
pDaliStackInstance);
}
return result;
}
Der letzte wichtige Callback ist der Timinghelper. Dieser ermöglicht es der API-Zeiten zu kontrollieren und einzuhalten.
Zum Beispiel:
/**************************************************************/
/* called every 10 ms
**************************************************************/
void dalill_timingHelper(void *pInstance,uint32_t dali_time_ticker)
{
dalilib_timingHelper(pInstance, dali_time_ticker);
}