jnk0le / RFM7x-lib

library for ones of the worst of chinese nRF24l01+ "alternatives"
MIT License
67 stars 14 forks source link

Error hit when compiling RF24 #2

Closed Bentancy closed 6 years ago

Bentancy commented 6 years ago

Hi:

There is an error in the name rfm_io_init(); // hardcoded in rfm7x_hardware.h

I check the rfm7x_hardware.h and found that the name should be rfm7x_io_init().

I hit the following list of error when compiling the RF24.ino from your example.

Arduino: 1.8.5 (Windows 7), Board: "Arduino/Genuino Uno"

In file included from C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\examples\Arduino workaround\RF24\RF24.ino:15:0:

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master/rfm7x.h:537:49: error: '__flash' does not name a type

void rfm7x_cmd_buff_write_P(uint8_t reg, const __flash uint8_t* buff, uint8_t len);

                                             ^

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master/rfm7x.h:537:64: error: expected ',' or '...' before '*' token

void rfm7x_cmd_buff_write_P(uint8_t reg, const __flash uint8_t* buff, uint8_t len);

                                                            ^

In file included from C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master/rfm7x.h:11:0,

             from C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\examples\Arduino workaround\RF24\RF24.ino:15:

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master/rfm7x.h: In function 'void rfm7x_mode_standby()':

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master/rfm7x_hardware.h:14:42: error: 'DigitalWrite' was not declared in this scope

define RFM7x_CE_LOW DigitalWrite(9, LOW)

                                      ^

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master/rfm7x.h:548:40: note: in expansion of macro 'RFM7x_CE_LOW'

inline void rfm7x_mode_standby(void) { RFM7x_CE_LOW; }

                                    ^

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\examples\Arduino workaround\RF24\RF24.ino: In function 'void setup()':

RF24:23: error: 'rfm_io_init' was not declared in this scope

rfm_io_init(); // hardcoded in rfm7x_hardware.h

          ^

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\examples\Arduino workaround\RF24\RF24.ino: In function 'void loop()':

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\examples\Arduino workaround\RF24\RF24.ino:46:50: warning: invalid conversion from 'int' to 'const void*' [-fpermissive]

bool ok = radio.write(message_count, sizeof(int));

                                              ^

In file included from C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\examples\Arduino workaround\RF24\RF24.ino:12:0:

C:\Users\TeleRadio\Documents\Arduino\libraries\RF24-master/RF24.h:281:8: note: initializing argument 1 of 'bool RF24::write(const void*, uint8_t)'

bool write( const void* buf, uint8_t len );

    ^

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\examples\Arduino workaround\RF24\RF24.ino:51:53: warning: invalid conversion from 'int' to 'const void*' [-fpermissive]

radio.writeAckPayload(1, message_count, sizeof(int));

                                                 ^

In file included from C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\examples\Arduino workaround\RF24\RF24.ino:12:0:

C:\Users\TeleRadio\Documents\Arduino\libraries\RF24-master/RF24.h:589:8: note: initializing argument 2 of 'void RF24::writeAckPayload(uint8_t, const void*, uint8_t)'

void writeAckPayload(uint8_t pipe, const void* buf, uint8_t len);

    ^

exit status 1 'rfm_io_init' was not declared in this scope

This report would have more information with "Show verbose output during compilation" option enabled in File -> Preferences.

jnk0le commented 6 years ago

It seems that __flash specifier is not supported by g++; https://www.avrfreaks.net/forum/avr-g-lacks-flash and needs a workaround.

The rest will also be fixed soon.

Bentancy commented 6 years ago

Thanks for the quick response. For the "__flash" issue would this help?https://www.microchip.com/webdoc/AVRLibcReferenceManual/porting_1iar_porting_flash.html

Waiting eagerly for the update ... ...

jnk0le commented 6 years ago

Actually __flash pointers are supported by gcc (C compiler) and it generates less bloat than pgm_read* functions. Since it is used internally it can be just hidden from c++ compiler.

jnk0le commented 6 years ago

Might need to be reopened, in case that arduino passes c files to g++ compiler

Bentancy commented 6 years ago

The "__flash" issue is resolved but hit new error.

Arduino: 1.8.5 (Windows 7), Board: "Arduino/Genuino Uno"

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\rfm7x_hardware.c: In function 'rfm7x_io_init':

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\rfm7x_hardware.c:14:2: warning: implicit declaration of function 'digitalWrite' [-Wimplicit-function-declaration]

RFM7x_CSN_HI;

^

In file included from C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\rfm7x_hardware.c:10:0:

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\rfm7x_hardware.h:12:40: error: 'HIGH' undeclared (first use in this function)

define RFM7x_CSN_HI digitalWrite(10, HIGH)

                                    ^

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\rfm7x_hardware.c:14:2: note: in expansion of macro 'RFM7x_CSN_HI'

RFM7x_CSN_HI;

^

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\rfm7x_hardware.h:12:40: note: each undeclared identifier is reported only once for each function it appears in

define RFM7x_CSN_HI digitalWrite(10, HIGH)

                                    ^

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\rfm7x_hardware.c:14:2: note: in expansion of macro 'RFM7x_CSN_HI'

RFM7x_CSN_HI;

^

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\rfm7x_hardware.h:14:39: error: 'LOW' undeclared (first use in this function)

define RFM7x_CE_LOW digitalWrite(9, LOW)

                                   ^

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\rfm7x_hardware.c:15:2: note: in expansion of macro 'RFM7x_CE_LOW'

RFM7x_CE_LOW;

^

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\rfm7x_hardware.c:30:2: warning: implicit declaration of function 'pinMode' [-Wimplicit-function-declaration]

pinMode(9,OUTPUT); // ce

^

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\rfm7x_hardware.c:30:12: error: 'OUTPUT' undeclared (first use in this function)

pinMode(9,OUTPUT); // ce

        ^

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\rfm7x_hardware.c:17:0: error: unterminated #else

if defined(USE_EXAMPLE_SPI_MEGA328)

^

C:\Users\TeleRadio\Documents\Arduino\libraries\RFM7x-lib-master\rfm7x_hardware.c:31:2: error: expected declaration or statement at end of input

pinMode(10,OUTPUT); //csn

^

exit status 1 Error compiling for board Arduino/Genuino Uno.

This report would have more information with "Show verbose output during compilation" option enabled in File -> Preferences.

jnk0le commented 6 years ago

should be fixed now