Blame | Last modification | View Log | Download
/*
* Copyright (C) 2004 Darren Hutchinson (dbh@gbdt.com.au)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library 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 Library General Public
* License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this software; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
* MA 02111-1307, USA.
*
* $Id: paddle.h,v 1.2 2004/03/03 07:37:11 dbh Exp $
*/
#ifndef _PADDLE_H_
#define _PADDLE_H_
/* This file describes the data in the EQ6/Atlas hand paddle serial stream.
*
* This is a one-directional serial stream at 935 bits/sec. This is a fairly
* wierd speed that seems to be used to give an overall serial stream time
* of 76.2ms [basically the full-step time for siderial rate, which is
* half of the actual half-step rate].
*
* See the file eq6-serial.txt for further details.
*/
#include <inttypes.h>
/* Define the serial rate used by the paddle
*/
#define PADDLE_RATE 935L /* Bit rate for the paddle */
/* The serial stream is a set of 6, 9 bit words. The first three words
* are for RA control, the second three words are for DEC control.
*
* Note that the ordering here is arbitary (through reverse engineering), but
* seems sensible.
*
* Word1: RA sync (B8 = 0)
* Word2: RA direction (B8 = 0)
* Word3: RA speed (B8 = 0)
* Word4: ??? (Assumed to be DEC sync) (B8 = 1)
* Word5: DEC direction (B8 = 1)
* Word6: DEC speed (B8 = 1)
*
*/
/* Word #1 - RA SYNC
*/
#define RA_SYNC 0x7e
/* Word #2 - RA DIRECTION
*/
#define RA_DIR_BIT 0 // RA Direction bit
#define RA_DIR_LEFT 0
#define RA_DIR_RIGHT (1 << RA_DIR_BIT)
/* Note: Will be 0 for southern hemispere siderial, 1 for northern siderial
*/
/* Word #3 - RA SPEED
*/
#define RA_SPEED_MASK 0x0f // Speed bits
#define RA_SPEED_0 0x00 // x2, opposite direction to siderial
#define RA_SPEED_1 0x01 // No RA button pressed
#define RA_SPEED_2 0x02 // x2, same direction as siderial
#define RA_SPEED_8 0x04 // siderial x8
#define RA_SPEED_16 0x08 // siderial x16
/* Word #4 - ???. This word always seems to be zero. Assume it's a sync word
* unless we hear something different
*/
#define DEC_SYNC 0x00
/* Word #5 - DEC DIRECTION
*/
#define DEC_DIR_BIT 0 // DEC Direction bit
#define DEC_DIR_UP 0
#define DEC_DIR_DOWN (1 << DEC_DIR_BIT)
/* Word #6 - DEC SPEED
*/
#define DEC_SPEED_MASK 0x0f // Speed bits
#define DEC_SPEED_0 0x00 // No buttons pressed
#define DEC_SPEED_2 0x02 // siderial x2
#define DEC_SPEED_8 0x04 // siderial x8
#define DEC_SPEED_16 0x08 // siderial x16
/* Prototypes for paddle.c functions that can be called from outside
*/
extern void paddleInit(void);
extern uint8_t paddleDecRate;
extern uint8_t paddleRaRate;
extern uint8_t siderialRate;
/* Configuration variable - sets whether the 2X rate for the paddle should
* be considered as 1X or 0.3X
*/
extern uint8_t paddleGuideRate;
#endif /* _PADDLE_H_ */