Buenos dias a todos.
Ante todo dar las gracias por anticipado por la ayuda que se me preste en este foro. Espero aprender mucho del mismo.
Mi problema es el siguiente:
Estoy desarrollando un proyecto donde tengo que leer mediante rfid una serie de tags. El fabricante me proporciono una librería en c para windows y linux que estoy intentando hacer funcionar en arduino.
Por ahora voy solucionando los problemas que me van surgiendo en el proceso, pero me encuentro con un problema al inicializar una variable de un tipo estructura en la que sus elementos son métodos.
Pongo aquí debajo primero la parte de la librería del proveedor:
typedef struct RFIDReader_s {
int16_t (*connect)(void* *port_handle, int16_t port_type, void* port_params);
int16_t (*disconnect)(void* port_handle);
int16_t (*tx)(void* port_handle, uint8_t* data, uint32_t len);
int16_t (*rx)(void* port_handle, uint8_t* data, uint32_t len, uint32_t ms_timeout);
s (*clear_rx_data)(void* port_handle);
void (*enable_irqs)(void);
void (*disable_irqs)(void);
} RFIDReader;
Este es el código que me proporcionó el proveedor de prueba
lector.h
#ifndef _HOST_H_
#define _HOST_H_
#include <stdint.h>
//communication interface functions/functions needed for CAENRFIDLib_Light
int16_t _connect(void* *port_handle, int16_t port_type, void* port_params);
int16_t _disconnect(void* port_handle);
int16_t _tx(void* port_handle, uint8_t* data, uint32_t len);
int16_t _rx(void* port_handle, uint8_t* data, uint32_t len, uint32_t ms_timeout);
int16_t _clear_rx_data(void* port_handle);
void _enable_irqs(void);
void _disable_irqs(void);
#endif
lector.c
int16_t _connect(void* *port_handle, int16_t port_type, void* port_params)
{
*//Aquí va el código correspondiente*
}
int16_t _disconnect(void* port_handle)
{
*//Aquí va el código correspondiente*
}
int16_t _tx(void* port_handle, uint8_t* data, uint32_t len)
{
*//Aquí va el código correspondiente*
}
int16_t _rx(void* port_handle, uint8_t* data, uint32_t len, uint32_t ms_timeout)
{
*//Aquí va el código correspondiente*
}
int16_t _clear_rx_data(void* port_handle)
{
*//Aquí va el código correspondiente*
}
void _enable_irqs(void)
{
}
void _disable_irqs(void)
{
}
Inicialización que envía el proveedor de ejemplo.
RFIDReader reader = {
.connect = _connect,
.disconnect = _disconnect,
.tx = _tx,
.rx = _rx,
.clear_rx_data = _clear_rx_data,
.enable_irqs = _enable_irqs,
.disable_irqs = _disable_irqs
};
Y es este último trozo de código el que no consigo trasladar para que funcione en arduino pues me dice: sorry, unimplemented: non-trivial designated initializers not supported
Y aquí estoy parado, ya que estuve buscando y haciendo diversas pruebas y no encuentro solución para ello.
Espero que me podáis echar una mano en esto.
De nuevo muchas gracias por adelantado.