Forum: PC-Programmierung Anfängerfrage


von J. S. (jjjsss) Flattr this


Lesenswert?

Ich verstehe nicht ganz die Zuweisung:

endPoint.APS_DataInd=APS_DataInd;

APS_DataInd wird als Parameter des Endpoints definiert. Ist dies dann 
ein Callback-Funktions-Aufruf, der gleichzeitig ein Pointer ist? Ich 
verstehs leider nicht. Ich bin ein Microcontroller-Noob. Kann mir das 
vielleicht jemand erläutern?

static void initEndpoint(void){
    simpleDescriptor.AppDeviceId=1;
    simpleDescriptor.AppProfileId=1;
    simpleDescriptor.endpoint=1;
    simpleDescriptor.AppDeviceVersion=1;
    endPoint.simpleDescriptor=&simpleDescriptor;
    endPoint.APS_DataInd=APS_DataInd;
    APS_RegisterEndpointReq(&endPoint);
}

void APS_DataInd(APS_DataInd_t *indData){
    BSP_OnLed(LED_RED);
    HAL_StartAppTimer(&receiverTimerLed);
    appWriteDataToUart(indData->asdu,indData->asduLength);
    appWriteDataToUart((uint8_t*)"\r\n",2);
}

: Bearbeitet durch User
von Rolf Magnus (Gast)


Lesenswert?

Jan Schimmack schrieb:
> APS_DataInd wird als Parameter des Endpoints definiert. Ist dies dann
> ein Callback-Funktions-Aufruf, der gleichzeitig ein Pointer ist?

Das ist einfach eine Zuweisung der Adresse von APS_DataInd an 
endPoint.APS_DataInd. Bei Funktionen kann man zur Adressbildung das & 
weglassen, genauso wie man bei einenm Funktionszeiger zum Aufuf das * 
weglassen kann.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.