Re: [Tinyos-help] Re: Include C file in nesC code

2008-01-31 Thread David Gay
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 TimerTMilli as Timer0;
uses interface TimerTMilli as Timer1;
uses interface TimerTMilli 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=10 -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 );
 }
  

Re: [Tinyos-help] Re: Include C file in nesC code

2008-01-30 Thread David Gay
#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