|
In lugnet.robotics.rcx.java, Brian B. Alano wrote:
> Brian B. Alano wrote:
> I'm writing a leJOS package to support the LDCC IR Protocol. I've been testing it
> against Full Throttle. It works fine with the speed controls, but doesn't even
> seem to see packets for the function commands, stop, or power commands. At first
> I was just checking for the 0xF5 opcode byte, but even when I just look for any
> and all packets, I don't see these other commands. I tried using another
> computer, in case there was something funny with my configuration. No luck. I
> traced the serial output from Full Throttle. This leads to questions 1 and 2
> regarding LDCC IRP:
>
> 1. Why do some packets use fd instead of f5 for the opcode?
I re-used a function to send command packets to the RCX that was designed for
use with the original firmware, so it toggles the 0x08 bit of any repeated
opcode bytes. Mark pointed this out to me when I was developing Full Throttle,
but then he "fixed" it in LDCC, so I never actually fixed my code. (I really
should do that...) To be fully compatible with the current implementation, you
should mask off the 0x08 bit from the packet opcodes, although this isn't
specified (AFAIK) in the LDCC IRP documentation.
> 2. What's the purpose of the 01 in the second byte? Future use as an LDCC
> controller address?
That is correct. Mark designed the LDCC IRP with the ability to address up to
15 RCXes running LDCC, although at last report this was not yet implemented in
the LDCC firmware. (All current LDCC RCXes are hard-coded at address 01.) This
is one of the enhancements that I alluded to in an earlier post that will make
it possible to control more than 9 locomotives on one layout.
> Oh, here's another LDCC IRP question:
> 3. in ldcc105.zip, the example file ldcc_lnp.c uses lnp_addressing_write() to
> send IRP commands. Does this mean that LDCC is listening for both IRP commands
> using opcode 0xf5 AND for IPR commands embedded in LNP packets?
Mark could say for sure, but I believe that this is the case. LDCC is intended
to recognize both simple F5 opcodes and LNP packets.
> Then a leJOS question (I think) and my real problem:
> 4. As far as I can tell, the only significant difference between the speed
> commands and the other commands at the packet level is that the speed commands
> are 6 bytes long (e.g. f5 01 01 01 80),and the others are 3 to 5 bytes long (e.g.
> f5 01 04). I'm using the Serial class to read the packets. As far as I can tell,
> Serial isn't doing any validity checking on the packets, just taking whatever the
> ROM gives it. I assume the ROM can read this packets or LDCC wouldn't recognize
> them either. Why would the Serial class ignore the shorter packets?
>
> Discouraged, disheartened, and fearful. Maybe I should go FORTH to brickOZ.
> ;)
> -Brian
I don't know what is going on here, not having played with LeJOS as much as I
would like to. Don't be discouraged, though. It sounds like you're making a
lot of progress.
- Chris.
|
|
Message has 2 Replies: | | Re: leJOS & LDCC IRP
|
| (...) Yes, this is right, to be friendly to as many implementations of the Lego IR protocol as possible, receiving programs should just mask off bit 3. (...) While the code is there to discern packets with different addresses, I haven't yet added (...) (21 years ago, 12-Sep-03, to lugnet.robotics.rcx.java, lugnet.trains)
|
Message is in Reply To:
| | leJOS & LDCC IRP
|
| Brian B. Alano wrote: I'm writing a leJOS package to support the LDCC IR Protocol. I've been testing it against Full Throttle. It works fine with the speed controls, but doesn't even seem to see packets for the function commands, stop, or power (...) (21 years ago, 12-Sep-03, to lugnet.robotics.rcx.java, lugnet.trains)
|
14 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
|
|
|
|