реклама на сайте
подробности

 
 
> Eclipse, не распознаётся значение из enum
Aaron
сообщение Aug 1 2012, 06:17
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 243
Регистрация: 5-10-06
Из: Зеленоград
Пользователь №: 21 007



Ковыряю MeshBean ZigBee стек, который сейчас прибрал к рукам Atmel (честно скажу, этот стек имхо - УЖАСЕН!), проект сам по себе компилируется без ошибок, discovery options настроены через вызов цели discovery в мейкфайле. Проблема есть в одном месте - Eclipse не видит определения CS_NWK_ADDR_ID и схожих с ним: Symbol 'CS_NWK_ADDR_ID' could not be resolved. Привожу структуру исходников с этим определением. Файл configServer.h (подключается в том месте, где есть использование CS_NWK_ADDR_ID:
Код
typedef enum _CS_MemoryItemId_t
{
#define SEPARATOR(id)
#define DUMMY_MEMORY(id)
#define RAM_PARAMETER(id, addr) id,
#define FLASH_PARAMETER(id, addr)
#define MEMORY_REGION(id, addr)
#include "csParamTable.h"
#undef SEPARATOR
#undef DUMMY_MEMORY
#undef RAM_PARAMETER
#undef FLASH_PARAMETER
#undef MEMORY_REGION

  CS_FLASH_PARAMETERS_START_ID,
#define SEPARATOR(id)
#define DUMMY_MEMORY(id)
#define RAM_PARAMETER(id, addr)
#define FLASH_PARAMETER(id, addr) id,
#define MEMORY_REGION(id, addr)
#include "csParamTable.h"
#undef SEPARATOR
#undef DUMMY_MEMORY
#undef RAM_PARAMETER
#undef FLASH_PARAMETER
#undef MEMORY_REGION

#define SEPARATOR(id)
#define DUMMY_MEMORY(id) id,
#define RAM_PARAMETER(id, addr)
#define FLASH_PARAMETER(id, addr)
#define MEMORY_REGION(id, addr) id,
#include "csParamTable.h"
#undef SEPARATOR
#undef DUMMY_MEMORY
#undef RAM_PARAMETER
#undef FLASH_PARAMETER
#undef MEMORY_REGION

} CS_MemoryItemId_t;

Вот подключаемый в тело файл csParamTable.h:
Код
RAM_PARAMETER(CS_UID_ID, csPIB.macAttr.extAddr)
RAM_PARAMETER(CS_MAX_FRAME_TRANSMISSION_TIME_ID, csPIB.macAttr.maxFrameTransmissionTime)
RAM_PARAMETER(CS_MAC_TRANSACTION_TIME_ID, csSIB.csMacTransactionTime)
RAM_PARAMETER(CS_RF_TX_POWER_ID, csSIB.csRfTxPower)
RAM_PARAMETER(CS_MAX_NEIGHBOR_ROUTE_COST_ID, csNIB.maxNeighborRouteCost)
RAM_PARAMETER(CS_NWK_EXT_PANID_ID, csNIB.extendedPanId)
RAM_PARAMETER(CS_NWK_ADDR_ID, csNIB.networkAddress)
....

Суть сводится к тому, что по очереди id подставляются в enum тип сначала для всех RAM_PARAMETER, потом FLASH_PARAMETER и т.д.
То есть на выходе должны получить что-то типа:
Код
typedef enum _CS_MemoryItemId_t
{
  CS_UID_ID,
  CS_MAX_FRAME_TRANSMISSION_TIME_ID,
  CS_MAC_TRANSACTION_TIME_ID,
  CS_RF_TX_POWER_ID,
  CS_MAX_NEIGHBOR_ROUTE_COST_ID,
  CS_NWK_EXT_PANID_ID,
  [b]CS_NWK_ADDR_ID[/b],
  ...,
  CS_FLASH_PARAMETERS_START_ID,
  ...
} CS_MemoryItemId_t;

Можно ли Eclipse как-то заставить всё же видеть такое определение? Или подскажите, где ещё может быть причина.

UPD: rolleyes.gif Как всегда, чудеса случаются не там, где их ждёшь. Уж не знаю почему, но если делать Index - Rebuild (как я всегда делаю), то всё кроме этих определений в Eclipse распознаётся. А вот если после Index-Rebuild запустить Index - Freshen All Files, то также и эти определения распознаются laughing.gif А если снова запустить Index-Rebuild, то эти определения снова теряются в Eclipse sm.gif Мотайте на ус!
Тему можно закрывать.

Сообщение отредактировал Aaron - Aug 1 2012, 06:17
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01471 секунд с 7
ELECTRONIX ©2004-2016