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