Pasando miembros de estructura para funcionar en c

Tengo una struct definida a continuación para que el contenido de un marco se envíe a través de uart.

El último miembro de la estructura es una secuencia de verificación de cuadros (fsc) que se calcula como un XOR de todos los bytes en los miembros de la estructura (len, cmd0, cmd1 y datos). Tengo una función para calcular el fsc a continuación.

Mi pregunta es, ¿cómo voy a pasar los miembros de la estructura a calcFCS() que se llama en build_uart_frame() ?

Muchas gracias

 typedef struct uart_frame { uint8_t sof; /* 1 byte */ uint8_t len; /* 1 bytes */ uint8_t cmd0; /* 1 byte */ uint8_t cmd1; char data[11]; /* 0 -250 byte */ unsigned char fcs; /* 1 byte */ } uart_frame_t; //------------------------------------------------------------------------- // Global uart frame uart_frame_t rdata; //------------------------------------------------------------------------- unsigned char calcFCS(unsigned char *pMsg, unsigned char len) { unsigned char result = 0; while(len--) { result ^= *pMsg++; } return(result); } //------------------------------------------------------------------------- // Worker code to populate the frame int build_uart_frame() { uart_frame_t *rd = &rdata; //pointer variable 'rd' of type uart_frame // common header codes rd->sof = 0xFE; rd->len = 11; rd->cmd0 = 0x22; rd->cmd0 = 0x05; snprintf(rd->data, sizeof(rd->data), "%s", "Hello World"); rd->fcs = calcFCS(?) return 0; } 

Como tu dices

una secuencia de verificación de cuadros (fsc) que se calcula como un XOR de todos los bytes en los miembros de la estructura (len, cmd0, cmd1 y datos)

En lugar de pasar todos los miembros por separado, mejor pase el puntero a struct uart_frame

Así que la firma de su función debe ser

sin firma char calcFCS (uart_frame * frame)