This (qs_iot) is a CCS imported project having all the original compiler & linker settings. Often struggle at the basic level just to get the project into (*.bin) format and skirt around the dark edges of CCS5 configuration settings. Try not to make changes in project defaults only but one at any given build secession as not to loose my way on the yellow brink road.
I moved (tStats) external function prototypes and one Macro into (stats.h) and build succeeded error free. A search for unresolved or missing includes was not finding this issue. This move however seems to break the array links to the structures variables called & defined in structs as (tStats) [NUM_STATS] array [13]. The odd thing is the actual variables defined within functions of (stats.c) exist in (hqs_iot.c) as global structures or array and (typedef structs) in (stats.h). This code is so very complex in array structure it's amazing it worked so well as it was laid down.
One Macro (stats.h)
bool SyncWithExosite(tStat **psStats);
//*****************************************************************************
// External function protos (stats.h)
//*****************************************************************************
extern voidStatSetVal(tStat *psStat, char *pcInputValue);
extern voidStatRequestFormat(tStat *psStat, char *pcRequestBuffer);
extern voidStatPrintValue(tStat *psStat, char *pcValueString);
extern tStat *g_psDeviceStatistics[NUM_STATS];
extern tStat g_sLEDD1;
extern tStat g_sLEDD2;
extern tStat g_sLocation;
extern tStat g_sBoardState;
extern tStat g_sContactEmail;
extern tStat g_sAlert;
extern tStat g_sCPUUsage;
extern voidPrintStats(tStat **psStats);