1 Serial Chip Settings
Baud rate 9600 Data bits 8 Stop bits 1 Parity Odd
2 Hardware Restrictions
The IR hardware used in the Sharp Wizard series (as well as Newtons and other devices) requires a brief stablizing period when switching from transmitting mode to receiving mode. Specifically, it is not possible to receive data for two milliseconds after transmitting. Therefore, all devices should wait three milliseconds after completion of a receive before transmitting.
3 Packet Structure
There are two kinds of Packets: "Packet I" and "Packet II". Because the IR unit is unstable at the start of a data transmission, DUMMY (5 bytes of null code (0x00))
and START ID (0x96)
begin both packet types. At least two null bytes must be processed by the receiver as DUMMY
before the START ID
of a packet is considered. After this (DUMMY, START ID)
sequence the PACKET ID
is transmitted. Code 0x82
is the packet ID for a PACKET I transmission, and code 0x81
is the packet ID for a PACKET II transmission.
3.1 Packet I
This packet type is used to transmit the following control messages:
3.1.1 Request to send ENQ (0x05)
3.1.2 Clear to send SYN (0x16)
3.1.3 Completion of receiving data ACK (0x06)
3.1.4 Failed to receive data NAK (0x15)
3.1.5 Interruption of receiving data CAN (0x18)
The format of this packet type is as follows:
Byte length Set value in transmission Detection method in reception DUMMY 5 0x00 * 5 Only 2 bytes are detected when received. START ID 1 0x96PACKET ID 1 0x82DATA 1 above mentioned data
Packet I example:
DUMMY START ID PACKET ID DATA 0x00, 0x00, 0x00, 0x00 0x96 0x82 0x05
3.2 Packet II
This packet type is used to transmit data. The maximum amount of data that may be transmitted in one packet is 512 bytes. If more than 512 bytes are to be transmitted, they are sent as several consecutive 512-byte packets. The last packet need not be padded if it is less than 512 bytes and is distinguished by a BLOCK NO
value of 0xFFFF
.
The format of this packet type is as follows:
Byte length Set value in transmission Detection method in receptionDUMMY 5 0x00 * 5 Only 2 bytes are detected.START ID 1 0x96PACKET ID 1 0x81VERSION 1 0x10 Judge only bits 7-4BLOCK NO 2 (L/H) 0x0001 ~ 0xFFFFCTRL CODE 1 0x01 Don't judgeDEV CODE 1 0x40 Don't judgeID CODE 1 0xFE Don't judgeDLENGTH 2 (L/H) 0x0001 ~ 0x0200DATA 1 ~ 512CHKSUM 2 (L/H)
BLOCK NO
in last block must be set to 0xFFFF
.
CHKSUM
is the two-byte sum of all of the data bytes of DATA
where any overflow or carry is discarded immediately.
Send all two-byte integers lower byte first and upper byte second.
Packet II example:
DUMMY START ID PACKET ID VERSION BLOCK NO CTRL CODE0x00, 0x00, 0x00, 0x00 0x96 0x81 0x10 Low High 0x01
DEV CODE ID CODE DLENGTH data CHECKSUM0x40 0xFE Low High ???? Low High
4 Protocol
Data will be divided into several blocks of up to 512 bytes each. These blocks are transmitted using type I and II packets as follows:
4.1 Transmission Protocol
4.1.1 The initiating device (A) begins a session by sending an ENQ
(type I) packet. The receiving device (B) will acknowledge the ENQ
by transmitting a SYN
packet.
4.1.2 When (A) receives a SYN
packet, it goes to step 4.1.4 below.
4.1.3 When (A) receives a CAN
packet, or when 6 minutes have elapsed without a SYN
packet reply to an ENQ
packet, (A) terminates the session. If (A) receives any other packet, no packet, or an incomplete packet, it begins sending ENQ
packets every 0.5 seconds.
4.1.4 When (A) receives a SYN
packet, it transmits a single type II data packet, then awaits an ACK
packet from (B).
4.1.5 When (A) receives an ACK
packet, the transmission is considered successful.
4.1.6 If no ACK
packet is received within 1 second from completion of step 4.1.4, or if any other packet is received, (A) goes to step 4.1.1 and transmits the data again. Retransmission is attempted once. The session is terminated if the second transmission is unsuccessful.
4.2 Reception Protocol
4.2.1 The receiving device (B) begins a session by waiting for an ENQ
(type I) packet. If no ENQ
packet is received after 6 minutes (B) terminates the session.
4.2.2 When (B) receives an ENQ
packet, (B) transmits either a SYN
packet to continue the session or a CAN
packet to terminate the session.
4.2.3 When (B) receives a valid type II packet (for example, the checksum and all header fields appear to be correct), (B) transmits an ACK
packet.
4.2.4 If one or more header fields of the data packet are not correct, or if the time between data bytes is more than 1 second, (B) goes to step 4.2.1 and does not transmit the ACK
packet (this will cause (A) to retransmit the packet after a one second delay).
4.2.5 If the header fields of the data packet appear to be correct but the checksum is incorrect, (B) transmits a NAK
packet (this will cause (A) to retransmit the packet immediately).
Because of the restriction in hardware mentioned in item 2 above, it is not possible to receive data for two milliseconds after a data transmission. Please wait three milliseconds before transmitting a response to the other device.
(see diagram)