On Jan 31, 2008 6:17 AM, AIGroup <[EMAIL PROTECTED]> wrote: > OK! now it works, but only in simulation!!! > I tried to edit my makefile but without success!
add BUILD_EXTRA_DEPS = Hello.o to the Makefile (it's a magic variable listing things that should be built before the main executable) David Gay > > How can I solve this problem? > Thank you! > > 2008/1/31, AIGroup <[EMAIL PROTECTED]>: > > > Hi David, > > > > before all thank you for your help. > > I tried to edit my files as you wrote, but I yet have problems. > > I edited my nesc file as follows: > > ----- > > #include "Timer.h" > > #include "Hello.h" //<------ I included the header file here > > > > module BlinkC > > { > > uses interface Timer<TMilli> as Timer0; > > uses interface Timer<TMilli> as Timer1; > > uses interface Timer<TMilli> as Timer2; > > uses interface Leds; > > uses interface Boot; > > } > > implementation > > { > > event void Boot.booted() > > { > > call Timer0.startPeriodic( 250 ); > > call Timer1.startPeriodic( 500 ); > > call Timer2.startPeriodic( 1000 ); > > } > > > > event void Timer0.fired() > > { > > Hello(); //<-------------This is the function call to Hello() > > //dbg("BlinkC", "Timer 0 fired @ %s.\n", sim_time_string()); > > //call Leds.led0Toggle(); > > } > > > > -------- > > The C files are these: > > ----------- > > //Hello.h > > #ifndef HELLO_H > > #define HELLO_H > > > > void Hello(); > > > > #endif > > --------- > > #include "Hello.h" > > > > void Hello() > > { > > printf("\nHELLO!\n"); > > } > > ------------- > > and my Makefile is the following: > > COMPONENT=BlinkAppC > > LDFLAGS = Hello.o > > Hello.c: Hello.h > > $(CC) -o Hello.o Hello.c > > include $(MAKERULES) > > --- > > where $(CC)... is "tabbed" > > So, when I run "make micaz sim" this error occurs: > > --------- > > [EMAIL PROTECTED]:/opt/tinyos-2.x/apps/ImportC$ make micaz sim > > mkdir -p build/micaz > > placing object files in build/micaz > > writing XML schema to app.xml > > compiling BlinkAppC to object file sim.o > > ncc -c -shared -fPIC -o build/micaz/sim.o -g -O0 -tossim > -fnesc-nido-tosnodes=1000 -fnesc-simulate > -fnesc-nido-motenumber=sim_node\(\) -finline-limit=100000 -Wall -Wshadow > -Wnesc-all -target=micaz -fnesc-cfile=build/micaz/app.c -board=micasb > -DIDENT_PROGRAM_NAME=\"BlinkAppC\" -DIDENT_USER_ID=\"penguin\" > -DIDENT_HOSTNAME=\"penguin-laptop\" -DIDENT_USER_HASH=0xdef7cfbeL > -DIDENT_UNIX_TIME=0x47a18a21L -DIDENT_UID_HASH=0x77ab7dfaL > -Wno-nesc-data-race BlinkAppC.nc Hello.o -fnesc-dump=components > -fnesc-dump=variables -fnesc-dump=constants -fnesc-dump=typedefs > -fnesc-dump=interfacedefs -fnesc-dump=tags -fnesc-dumpfile=app.xml > > gcc: Hello.o: No such file or directory > > make: *** [sim-exe] Error 1 > > ----- > > How can I solve the problem??? > > Thank you very much in advance for your precious help > > Regards, > > > > Roberto > > > > > > > > 2008/1/30, David Gay <[EMAIL PROTECTED]>: > > > > > #include works fine, but, as in C, it's just textual inclusion (it > > > really is nothing complicated ;-)). So it's all as if you just wrote: > > > > > > module ... > > > implementation > > > { > > > #ifndef C_CODE > > > #define C_CODE > > > > > > void Hello(); > > > > > > #endif > > > > > > event void Boot.booted() > > > { > > > call Timer0.startPeriodic( 250 ); > > > } > > > > > > event void Timer0.fired() > > > { > > > Hello(); //Hello() is a function which is inside my C code > > > } > > > } > > > > > > which therefore just declares Hello() as an internal function inside > BlinkC. > > > > > > In nesC, C functions must be declared before the module/implementation > > > (or interface) part of a file. So what you wanted to do was: > > > /* nesC code*/ > > > #include "c_code.h" > > > module ... > > > implementation > > > { > > > > > > event void Boot.booted() > > > { > > > call Timer0.startPeriodic( 250 ); > > > } > > > > > > event void Timer0.fired() > > > { > > > Hello(); //Hello() is a function which is inside my C code > > > } > > > } > > > > > > On Jan 30, 2008 6:37 AM, AIGroup <[EMAIL PROTECTED]> wrote: > > > > I believed... > > > > include directive works well. I have problem to edit the Makefile in > order > > > > to compile also the C file. > > > > > > Yes, you then also of course need to compile and link with your C > > > code. Several ways to do that... The easiest in this case at least is > > > probably to add > > > LDFLAGS = c_code.c > > > to your Makefile, which should cause ncc to compile and link c_code.c > > > with your nesC app. A slightly more traditional Makefile approach > > > would have you add > > > > > > LDFLAGS = c_code.o > > > c_code.c: c_code.h > > > $(CC) -o c_code.o <your favourite flags> c_code.c > > > > > > to your Makefile... (don't cut & paste the text above, the character > > > before $(CC) needs to be a tab to keep make happy, in this email it's > > > some spaces...) > > > > > > David Gay > > > > > > > > > > > > > > > > > > 2008/1/30, AIGroup <[EMAIL PROTECTED]>: > > > > > > > > > Hi all. > > > > > I would like to include some routines in my nesC code as follows > > > > (considering the BlinkApp for example): > > > > > /* nesC code*/ > > > > > implementation > > > > > { > > > > > #include "c_code.h" > > > > > > > > > > event void Boot.booted() > > > > > { > > > > > call Timer0.startPeriodic( 250 ); > > > > > } > > > > > > > > > > event void Timer0.fired() > > > > > { > > > > > Hello(); //Hello() is a function which is inside my C code > > > > > } > > > > > } > > > > > ------------------------- > > > > > /*C code*/ > > > > > /*c_code.h*/ > > > > > > > > > > #ifndef C_CODE > > > > > #define C_CODE > > > > > > > > > > void Hello(); > > > > > > > > > > #endif > > > > > > > > > > --------------- > > > > > /* c_code.c */ > > > > > > > > > > #include "c_code.h" > > > > > > > > > > void Hello() > > > > > { > > > > > printf("HELLO!\n") > > > > > } > > > > > --------------- > > > > > Compilation terminate with success, but if i try to execute a > simulation, > > > > this following error occurs: > > > > > undefined symbol: BlinkC$Hello > > > > > How can I solve this problem? > > > > > Thank you very much for your help! > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > _______________________________________________ > > > > Tinyos-help mailing list > > > > Tinyos-help@millennium.berkeley.edu > > > > > https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help > > > > > > > > > > > > > _______________________________________________ Tinyos-help mailing list Tinyos-help@millennium.berkeley.edu https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help