/* Hey EMACS -*- linux-c -*- */
/* $Id: packets.h 1397 2005-07-20 10:55:03Z roms $ */
/* libticalcs - Ti Calculator library, a part of the TiLP project
* Copyright (C) 1999-2004 Romain Lievin
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __CALCS_PACKETS__
#define __CALCS_PACKETS__
/*************/
/* Constants */
/*************/
// Machine IDs (host <-> target)
#define PC_TIXX 0x00
#define PC_TI73 0x07
#define TI73_PC 0x74
#define PC_TI82 0x02
#define TI82_PC 0x82
#define PC_TI83 0x03
#define TI83_PC 0x83
#define PC_TI83p 0x23
#define TI83p_PC 0x73
#define PC_TI84p 0x23
#define TI84p_PC 0x73
#define PC_TI85 0x05
#define TI85_PC 0x85
#define PC_TI86 0x06
#define TI86_PC 0x86
#define PC_TI89 0x08
#define TI89_PC 0x98
#define PC_TI89t 0x08
#define TI89t_PC 0x98
#define PC_TI92 0x09
#define TI92_PC 0x89
#define PC_TI92p 0x08
#define TI92p_PC 0x88
#define PC_V200 0x08
#define V200_PC 0x88
// Command IDs
/*
* means there is data attached.
# means the device id is ignored with this command.
$ means it's a silent command
*/
#define CMD_VAR 0x06 // [* ] Variable Header - includes a std variable header
#define CMD_CTS 0x09 // [ ] Continue - used to signal OK to send a variable
#define CMD_XDP 0x15 // [* ] Data packet - Pure data
#define CMD_FLSH 0x2D // [ $] Send a FLASH application
#define CMD_SKIP 0x36 // [* ] Skip/Exit - used when duplicate name is found
#define CMD_SID 0x47 // [*#$] Send calc ID
#define CMD_ACK 0x56 // [ ] Acknowledge
#define CMD_ERR 0x5A // [ ] Checksum error: send last packet again
#define CMD_RDY 0x68 // [ #$] Test if calc is ready
#define CMD_SCR 0x6D // [ $] Request screenshot
#define CMD_RID 0x74 // [ #$] Request calc ID
#define CMD_CONT 0x78 // [ $] Continue
#define CMD_KEY 0x87 // [ $] Send key
#define CMD_EOT 0x92 // [ ] End Of Transmission: no more variables to send
#define CMD_REQ 0xA2 // [* $] Request variable - includes a std var header
#define CMD_IND 0xB7 // [* $] Request variable index
#define CMD_RTS 0xC9 // [* $] Request to send - includes a padded var header
// Rejection codes (CMD82_SKIP)
#define REJ_EXIT 1
#define REJ_SKIP 2
#define REJ_MEMORY 3
/*************/
/* Functions */
/*************/
int send_packet(uint8_t target, uint8_t cmd, uint16_t length,
uint8_t * data);
int recv_packet(uint8_t * host, uint8_t * cmd, uint16_t * length,
uint8_t * data);
void pad_buffer(uint8_t* varname, uint8_t value);
#ifndef WORDS_BIGENDIAN
# define fixup(x) (x &= 0x0000ffff)
#else
# define fixup(x) (x >>= 16)
#endif /* !G_BIG_ENDIAN */
#endif
syntax highlighted by Code2HTML, v. 0.9.1