error: httpTable causes a section type conflict

ustas
Offline
Зарегистрирован: 12.03.2012

Проблема странная:

Есть один рабочий код (web-server), в котором для экономии оперативки используется PROGMEM.

Код без проблем компилируется и работает.

Пытаюсь объединить с другим, тоже без проблем работающим кодом (основная библиотека iBoardRF24) - вылетают грабли:

error: httpTable causes a section type conflict

// Строки для формирования HTTP-ответов
PROGMEM prog_char httpHead[] = "HTTP/1.0 200 OK\nServer: arduino\nCache-Control: no-store, no-cache, must-revalidate\nPragma: no-cache\nConnection: close\nContent-Type: application/json\n\n";
PROGMEM prog_char badRequest[] = "{ \"message\": \"Bad request\" }";
PROGMEM prog_char noAnswer[] = "{ \"message\": \"No answer\" }";
PROGMEM prog_char jsonTmpl[] = "{\"message\": \"OK\",\"sensor\": %d,\"parameter\": {\"pid\": %d,\"pval\": %s,\"st\": %d,\"note\": \"%s\"}}";

PGM_P httpTable[] PROGMEM = 
{   
  httpHead,
  badRequest,
  noAnswer,
  jsonTmpl
};

Удивительно, что коды по отдельности работают, а вот вместе - дают такую странную ошибку. По библиотеке iBoardRF24 "полазил", вроде как никаких конфликтов не должно быть... 

Что это? Как лечить?

ustas
Offline
Зарегистрирован: 12.03.2012

Сам себе отвечаю: посмотрел, как в библиотеке iBoardRF24 организована работа с PROGMEM и привел свой код в такой же порядок:

// Строки для формирования HTTP-ответов
static const char httpHead[] PROGMEM = "HTTP/1.0 200 OK\nServer: arduino\nCache-Control: no-store, no-cache, must-revalidate\nPragma: no-cache\nConnection: close\nContent-Type: application/json\n\n";
static const char badRequest[] PROGMEM = "{ \"message\": \"Bad request\" }";
static const char noAnswer[] PROGMEM = "{ \"message\": \"No answer\" }";
static const char jsonTmpl[] PROGMEM = "{\"message\": \"OK\",\"sensor\": %d,\"parameter\": {\"pid\": %d,\"pval\": %s,\"st\": %d,\"note\": \"%s\"}}";

static const char * const httpTable1[] PROGMEM = 
{   
  httpHead,
  badRequest,
  noAnswer,
  jsonTmpl
};

Теперь компилируется и работает как надо.