To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.robotics.rcx.legosOpen lugnet.robotics.rcx.legos in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 Robotics / RCX / legOS / 803
802  |  804
Subject: 
Re: LNP Example please
Newsgroups: 
lugnet.robotics.rcx.legos
Date: 
Tue, 8 Feb 2000 08:57:48 GMT
Viewed: 
2694 times
  
Thankyou very much Martin, that worked like a charm except for the
lnp_addressing_write(data,length,dest,srcport) which works as
lnp_addressing_send(data,length,dest,srcport)

Probably just a typo just thought I better let anyone else know who maybe
interested.

Now all I have to do is make that webpage about lnp :)

Michael.


In lugnet.robotics.rcx.legos, Martin Cornelius writes:
Michael Marklew wrote:

Does anyone have an example or two of using LNP so two RCX units can
communicate with each other?


To get a somewhat crude explanation of how LNP works, and how to make
RCXs with different LNP-Hostaddresses, i'd suggest to read thread 'LNP
Addressing Schemes', last week in this newsgroup.

However, if you don't need addressing or several ports, just do:

on the receiving RCX:

// create a handler function that will receive broadcast packets:
void my_integrity_handler(const unsigned char *data, unsigned char len)
{
  // process packet here
}

This function will be called whenever a broadcast packet arrives, and
will get passed the packet as parameters.
BE AWARE this function is called inside the IRQ-handler. It should be
reasonably short and not do anything that could block, such as waiting
for semaphores.
This means, most of the multitasking functionality ( sleep, wait, e.t.c
), and sending LNP-Packets can not be used inside the handler. However,
writing to the display, playing sounds, and switching outputs is O.K.
If you must do some really complicated processing of packets, you should
just save them inside the handler to a global array, and post a
semaphore that wakes another task to do the real work.

// activate the handler
lnp_integrity_set_handler(my_integrity_handler);

on the sending RCX there is nothing to prepare, just:
// send packet
lnp_integrity_send(packet,length);

for bidirectional communication, you have to install handlers on both
RCXs, of course.

If you have more than 2 RCXs and/or want several ports, you first have
to give the RCXs different host addresses -- read the thread cited above
for info on how to do this.
in this case, the handler function to install has one more parameter -
the originating address.
// addressing handler
void handler(const unsigned char *data, unsigned char len, unsigned char
src_address)
{
  // process packet
}
//it must be activated with:
lnp_addressing_set_handler(port,handler)

The handler will be invoked whenever a packet arrives that is destined
to this host and to the port given, port is a number from 1 to 15 (0 is
reserved for dll )

//sending of an addressing packet is done via
lnp_addressing_write(data,length,dest,srcport)

// length of addressing packets MUST NOT exceed 253 bytes !

all this stuff is declared in include/lnp.h

If you want PC's to participate in communication,
- install a recent version of Linux ( kernel 2.2.x, glibc 2.x )
- get the lnpd&liblnp packet from arthurdent
- follow the instructions in the README

that´s it - hope it helps a little, Martin



Message has 1 Reply:
  Re: LNP Example please
 
(...) hmm, really strange, in my legOS-distribution the name of the function is lnp_addressing_write, there is no function named lnp_addressing_send -- where have you got your legOS ? (25 years ago, 8-Feb-00, to lugnet.robotics.rcx.legos)

Message is in Reply To:
  Re: LNP Example please
 
(...) To get a somewhat crude explanation of how LNP works, and how to make RCXs with different LNP-Hostaddresses, i'd suggest to read thread 'LNP Addressing Schemes', last week in this newsgroup. However, if you don't need addressing or several (...) (25 years ago, 7-Feb-00, to lugnet.robotics.rcx.legos)

21 Messages in This Thread:

Entire Thread on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact

This Message and its Replies on One Page:
Nested:  All | Brief | Compact | Dots
Linear:  All | Brief | Compact
    

Custom Search

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR