Неявное объявление функции, которая представляется определяемой

Я портирую драйвер Texas Instruments SimpleLink для использования с хостом Xmega и получаю несколько неявных ошибок объявления при попытке его построить. Я знаю, что означает ошибка, но, насколько я могу судить, она должна быть определена. Должно быть, я что-то упустил, я надеюсь, что кто-то может мне помочь.

Вот вывод ошибки, это говорит о функции CC3120Disable неявно объявлено в файле device.c:

Ошибка неявного объявления функции ‘CC3120Disable’ [-Werror = неявное-объявление функции] Прошивка Xmega D: \ CC3120SDK_1.55.00.42 \ simplelink_sdk_wifi_plugin_1_55_00_42 \ source \ ti \ drivers \ net \ wifi \ source \ device.c 173

device.c довольно большой, так что здесь есть включения, они — самое первое в файле, кроме комментариев:

#include <ti/drivers/net/wifi/simplelink.h>
#include <ti/drivers/net/wifi/source/protocol.h>
#include <ti/drivers/net/wifi/source/driver.h>
#include <ti/drivers/net/wifi/source/flowcont.h>

Первый (simplelink.h) начинает путь к месту объявления функции, здесь находится первая часть simplelink.h, опять же за исключением комментариев к преамбуле:

#ifndef __SIMPLELINK_H__
#define __SIMPLELINK_H__

/* define the default types
* If user wants to overwrite it,
* he need to undef and define again */
#define _u8  unsigned char
#define _i8  signed char
#define _u16 unsigned short
#define _i16 signed short
#define _u32 unsigned long
#define _i32 signed long

#define _volatile volatile
#define _const    const

#include <ti/drivers/net/wifi/porting/user.h>

#ifdef    __cplusplus
extern "C"{
#endif

user.h содержит определение макроса, которое говорит ему использовать функцию CC3120Disable, а также include, который содержит объявление этой функции. Вот первая часть user.h, без ведущих комментариев:

#ifndef __USER_H__
#define __USER_H__

#include "board.h"#include "noos.h"#include "SPI.h"
#ifdef  __cplusplus
extern "C" {
#endif

#include <string.h>

и вот строка 371 в user.h, которая определяет макрос:

#define sl_DeviceDisable()             CC3120Disable()

Наконец, вот весь мой файл board.h, в котором есть объявление рассматриваемой функции:

#ifndef BOARD_H_
#define BOARD_H_

#ifdef  __cplusplus
extern "C"{
#endif
#include <asf.h>
#include "SPI.h"
/* Typedefs */
//typedef void (*P_EVENT_HANDLER)(void* pValue);

/* Pins */
#define nHIB_PIN                IOPORT_CREATE_PIN( PORTD, 7 )
#define CC3120_INT_PIN          IOPORT_CREATE_PIN( PORTD, 6 )
#define CC3120_RESET_PIN        IOPORT_CREATE_PIN( PORTA, 1 )
#define CC3120_SLAVE_PIN        IOPORT_CREATE_PIN( PORTE, 0 )

#define LED_BLUE                IOPORT_CREATE_PIN( PORTA, 5 )
#define LED_GREEN               IOPORT_CREATE_PIN( PORTA, 6 )

/* USART pins */
#define USARTC0_XCK             IOPORT_CREATE_PIN( PORTC, 1 )
#define USARTC0_TXD             IOPORT_CREATE_PIN( PORTC, 3 )
#define USARTC1_XCK             IOPORT_CREATE_PIN( PORTC, 5 )
#define USARTC1_TXD             IOPORT_CREATE_PIN( PORTC, 7 )
//#define USARTD0_XCK               IOPORT_CREATE_PIN( PORTD, 1 )
//#define USARTD0_TXD               IOPORT_CREATE_PIN( PORTD, 3 )
//#define USARTD1_XCK               IOPORT_CREATE_PIN( PORTD, 5 )
//#define USARTD1_TXD               IOPORT_CREATE_PIN( PORTD, 7 )
#define USARTE0_XCK             IOPORT_CREATE_PIN( PORTE, 1 )
#define USARTE0_RXD             IOPORT_CREATE_PIN( PORTE, 2 )
#define USARTE0_TXD             IOPORT_CREATE_PIN( PORTE, 3 )
//#define USARTE1_XCK               IOPORT_CREATE_PIN( PORTE, 5 )
//#define USARTE1_TXD               IOPORT_CREATE_PIN( PORTE, 7 )
//#define USARTF0_XCK               IOPORT_CREATE_PIN( PORTF, 1 )
//#define USARTF0_TXD               IOPORT_CREATE_PIN( PORTF, 3 )

/* Functions */
void CC3120Disable( void );
void CC3120Enable( void );
uint8_t CC3120RegisterInterruptHandler( P_EVENT_HANDLER InterruptHdl , void* pValue );
void CC3120MaskIntHdlr( void );
void CC3120UnMaskIntHdlr( void );

void clock_init( void );
void init( void );

#ifdef  __cplusplus
}
#endif

#endif /* BOARD_H_ */

Функция определена в board.cpp, здесь находится начало этого файла, вплоть до того места, где находится функция:

#include <asf.h>
#include "board.h"#include "socket.h"
/* Variables */
P_EVENT_HANDLER     CC3120IrqHandler = 0;
uint8_t             intIsMasked = 0;

/* Interrupt Handler */
ISR( PORTD_INT0_vect )
{
if ( CC3120IrqHandler && !intIsMasked )
CC3120IrqHandler( 0 );
}

void CC3120Disable()
{
ioport_set_pin_level( nHIB_PIN, false );
}

Это сводит меня с ума, я не могу понять, почему он вызывает ошибку неявного объявления для этой функции. Кто-нибудь может увидеть проблему или предложить что-то попробовать?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector