Намагаюсь розібратись і ось що поки є.
У заголовному файлі blynk_protocol.h
//------------------------------------------------------------
#define MYHIOT_WRITE(pin) \
void MyhiotWidgetWrite##pin(char *)
typedef void (*WidgetWriteHandler)(char *);
WidgetWriteHandler GetWriteHandler(uint8_t pin);
MYHIOT_WRITE(0 );
...
MYHIOT_WRITE(127 );
В сирцевому файлі blynk_protocol.с
static const WidgetWriteHandler MyhiotWriteHandlerVector[128] = {
MyhiotWidgetWrite0, MyhiotWidgetWrite1, MyhiotWidgetWrite2, MyhiotWidgetWrite3,
...................... ...................... ......................
MyhiotWidgetWrite124, MyhiotWidgetWrite125, MyhiotWidgetWrite126, MyhiotWidgetWrite127
};
WidgetWriteHandler GetWriteHandler(uint8_t pin)
{
return MyhiotWriteHandlerVector[pin];
}
Та в цьому ж файлі в обробнику те що приходить з сервера blynk
void Blynk_Handler_Command(char * data, uint8_t size)
{
if (data[BLYNK_OFFSET_RW_PIN] == BLYNK_READ_PIN)
{
WidgetWriteHandler handler = GetWriteHandler(data[BLYNK_OFFSET_NUM_PIN]);
handler(data);
}
}
Компілюється без помилок! Тепер коли в головному файлі main.c роблю запис:
MYHIOT_WRITE(V20)
{
//Має сюди перекинути коли щось прийшло від 20-тої шпильки
}
Але дає помилку: "Description Resource Path Location Type
parameter name omitted main.c /STM32F103Nucleo_communication_between_boards/Src line 380 C/C++ Problem"
Думаю я ще щось залишив поза уваги. Поки не можу зрозуміти. Є думки?