Instrument Neutral Distributed Interface INDI 2.2.5
stvdriver.h
Go to the documentation of this file.
1#if 0
2STV driver
3Copyright (C) 2006 Markus Wildi, [email protected]
4
5This library is free software;
6you can redistribute it and / or
7modify it under the terms of the GNU Lesser General Public
8License as published by the Free Software Foundation;
9either
10version 2.1 of the License, or (at your option) any later version.
11
12This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY;
14without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16Lesser General Public License for more details.
17
18You should have received a copy of the GNU Lesser General Public
19License along with this library;
20if not, write to the Free Software
21Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110 - 1301 USA
22#endif
23
24#pragma once
25
26#define OFF 0
27#define ON 1
28
29#define REQUEST_DOWNLOAD 0x00
30#define REQUEST_DOWNLOAD_ALL 0x01
31#define DOWNLOAD_COMPLETE 0x02
32#define REQUEST_BUFFER_STATUS 0x03
33#define REQUEST_IMAGE_INFO 0x04
34#define REQUEST_IMAGE_DATA 0x05
35#define ACK 0x06
36#define REQUEST_COMPRESSED_IMAGE_DATA 0x07
37#define SEND_KEY_PATTERN 0x08
38#define DISPLAY_ECHO 0x09
39#define FILE_STATUS 0x0b
40#define REQUEST_ACK 0x10
41#define NACK 0x15
42
43/* Rotary Knob Key Patterns */
44#define LR_ROTARY_DECREASE_PATTERN 0x8000
45#define LR_ROTARY_INCREASE_PATTERN 0x4000
46#define UD_ROTARY_DECREASE_PATTERN 0x2000
47#define UD_ROTARY_INCREASE_PATTERN 0x1000
48#define SHIFT_PATTERN 0x0008 /* increases rotary speed when 1 */
49
50/* Mode Key Patterns */
51#define CAL_KEY_PATTERN 0x0100
52#define TRACK_KEY_PATTERN 0x0200
53#define DISPLAY_KEY_PATTERN 0x0400
54#define FILEOPS_KEY_PATTERN 0x0800
55#define A_KEY_PATTERN 0x0010
56#define SETUP_KEY_PATTERN 0x0020
57#define B_KEY_PATTERN 0x0040
58#define INT_KEY_PATTERN 0x0080
59#define FOCUS_KEY_PATTERN 0x0001
60#define IMAGE_KEY_PATTERN 0x0002
61#define MONITOR_KEY_PATTERN 0x0004
62
63/* The following bit masks have been take from Sbig's documentation */
64#define ID_BITS_MASK 0x0001 /* mask for no bits*/
65#define ID_BITS_10 0x0001 /* image is full 10 bits*/
66#define ID_BITS_8 0x0000 /* image from focus, only 8 bits*/
67#define ID_UNITS_MASK 0x0002 /* mask for units for scope*/
68#define ID_UNITS_INCHES 0x0002 /* units were inches*/
69#define ID_UNITS_CM 0x0000 /* units were cm*/
70#define ID_SCOPE_MASK 0x0004 /* mask for telescope type*/
71#define ID_SCOPE_REFRACTOR 0x0004 /* scope was refractor*/
72#define ID_SCOPE_REFLECTOR 0x0000 /* scope was reflector*/
73#define ID_DATETIME_MASK 0x0008 /* mask for date/time valid*/
74#define ID_DATETIME_VALID 0x0008 /* date/time was set*/
75#define ID_DATETIME_INVALID 0x0000 /* date/time was not set*/
76#define ID_BIN_MASK 0x0030 /* mask for binning mode*/
77#define ID_BIN_1X1 0x0010 /* binning was 1x1*/
78#define ID_BIN_2X2 0x0020 /* binning was 2x2*/
79#define ID_BIN_3X3 0x0030 /* binning was 3x3*/
80#define ID_PM_MASK 0x0400 /* mask for am/pm in time*/
81#define ID_PM_PM 0x0400 /* time was pm, add 12 hours*/
82#define ID_PM_AM 0x0000 /* time was am, don;t add 12 hours*/
83#define ID_FILTER_MASK 0x0800 /* mask for filter status*/
84#define ID_FILTER_LUNAR 0x0800 /* lunar filter was used for image*/
85#define ID_FILTER_NP 0x0000 /* no filter was used for image*/
86#define ID_DARKSUB_MASK 0x1000 /* mask for dark subtraction*/
87#define ID_DARKSUB_YES 0x1000 /* image was dark subtracted*/
88#define ID_DARKSUB_NO 0x0000 /* image was not dark subtracted*/
89#define ID_MOSAIC_MASK 0x6000 /* mask for mosaic status*/
90#define ID_MOSAIC_NONE 0x0000 /* no mosaic, one image per frame*/
91#define ID_MOSAIC_SMALL 0x2000 /* small mosaic: 40x40 pixels/image*/
92#define ID_MOSAIC_LARGE 0x4000 /* large mosaic: 106x100 pixels/image*/
93
94/* IMAGE_INFO - data for the image
95
96 Notes:
97 height - 0 or 0xFFFF if no data present
98 exposure - 100-60000 = 1.00 - 600 secs by 0.01
99 60001-60999 = 0.001 - 0.999 secs by 0.001
100 packedDate - bits 6-0 = year - 1999 (0 -127)
101 bits 11-7 = day ( 1-31)
102 bits 15-12 = month (1-12)
103 packedTime - bits 6-0 = seconds (0-59)
104 bits 7-12 = minutes (0-59)
105 bits 15-13 = hours mod 12 (0-11)
106 + bit in descriptor can add 12
107*/
108
109typedef struct
110{
111 unsigned int descriptor; /* set of bits*/
112 unsigned int height, width; /* image sze */
113 unsigned int top, left; /* position in buffer */
114 double exposure; /* exposure time */
115 unsigned int noExposure; /* number of exposures added */
116 unsigned int analogGain; /*analog gain */
117 int digitalGain; /* digital gain */
118 unsigned int focalLength; /*focal length of telescope */
119 unsigned int aperture; /* aperture diameter */
120 unsigned int packedDate; /* date of image */
121 unsigned int year;
122 unsigned int month;
123 unsigned int day;
124 unsigned int packedTime; /* time of image */
125 unsigned int seconds; /* time of image */
126 unsigned int minutes; /* time of image */
127 unsigned int hours; /* time of image */
128 double ccdTemp; /* temperature of ccd in 1/100 deg C */
129 unsigned int siteID; /* site id */
130 unsigned int eGain; /* eGain in 1/100th e/ADU */
131 unsigned int background; /* background for display */
132 unsigned int range; /* range for display */
133 unsigned int pedestal; /* Track and Accumulate pedestal */
134 unsigned int ccdTop, ccdLeft; /* position of pixels on CCD array */
135 unsigned int adcResolution; /* value, 8 or 10 bits */
136 unsigned int units; /* 0= cm, 1=inch */
137 unsigned int telescopeType; /* 0=refractor, 1= reflector */
138 unsigned int dateTimeValid; /* 0= valid */
139 unsigned int binning; /* 1x1=1, 2x2=2, 3x3=3 */
140 unsigned int filterStatus; /* 0= no filter, 1= lunar filter */
141 unsigned int darkFrameSuntracted; /* 0= no, 1= yes */
142 unsigned int imageIsMosaic; /* 0=no, 1=40x40 pixels, 2=106x100 pixels */
143 double pixelSize; /* 7.4 um */
144 double minValue; /* Pixel Contents */
145 double maxValue;
146
147} IMAGE_INFO;
148/*
149 * $Id: serial.h 49 2006-08-25 18:07:14Z lukas $
150 *
151 * Copyright (C) 2006, Lukas Zimmermann, Basel, Switzerland.
152 *
153 *
154 This program is free software; you can redistribute it and/or modify
155 it under the terms of the GNU General Public License as published by
156 the Free Software Foundation; either version 2, or (at your option)
157 any later version.
158
159 This program is distributed in the hope that it will be useful,
160 but WITHOUT ANY WARRANTY; without even the implied warranty of
161 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
162 GNU General Public License for more details.
163
164 You should have received a copy of the GNU General Public License
165 along with this program; if not, write to the Free Software Foundation,
166 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
167
168 Or visit http://www.gnu.org/licenses/gpl.html.
169*/
170
171#define PARITY_NONE 0
172#define PARITY_EVEN 1
173#define PARITY_ODD 2
174
175typedef unsigned char byte; /* define byte type */
176
177/* Restores terminal settings of open serial port device and close the file. */
178void shutdown_serial(int fd);
179
180/* Opens and initializes a serial device and returns it's file descriptor. */
181int init_serial(char *device_name, int bit_rate, int word_size, int parity, int stop_bits);
182
183/* Calculates the 16 bit CRC of an array of bytes and returns it. */
184unsigned int calc_crc(byte byte_array[], int size);
int fd
unsigned int dateTimeValid
Definition stvdriver.h:138
unsigned int imageIsMosaic
Definition stvdriver.h:142
double ccdTemp
Definition stvdriver.h:128
int digitalGain
Definition stvdriver.h:117
unsigned int minutes
Definition stvdriver.h:126
unsigned int adcResolution
Definition stvdriver.h:135
unsigned int ccdLeft
Definition stvdriver.h:134
unsigned int year
Definition stvdriver.h:121
double maxValue
Definition stvdriver.h:145
unsigned int hours
Definition stvdriver.h:127
unsigned int telescopeType
Definition stvdriver.h:137
unsigned int units
Definition stvdriver.h:136
unsigned int pedestal
Definition stvdriver.h:133
unsigned int filterStatus
Definition stvdriver.h:140
unsigned int packedTime
Definition stvdriver.h:124
double minValue
Definition stvdriver.h:144
unsigned int left
Definition stvdriver.h:113
unsigned int descriptor
Definition stvdriver.h:111
unsigned int darkFrameSuntracted
Definition stvdriver.h:141
unsigned int noExposure
Definition stvdriver.h:115
unsigned int seconds
Definition stvdriver.h:125
unsigned int eGain
Definition stvdriver.h:130
double exposure
Definition stvdriver.h:114
unsigned int range
Definition stvdriver.h:132
unsigned int height
Definition stvdriver.h:112
double pixelSize
Definition stvdriver.h:143
unsigned int day
Definition stvdriver.h:123
unsigned int binning
Definition stvdriver.h:139
unsigned int background
Definition stvdriver.h:131
unsigned int siteID
Definition stvdriver.h:129
unsigned int month
Definition stvdriver.h:122
unsigned int packedDate
Definition stvdriver.h:120
unsigned int focalLength
Definition stvdriver.h:118
unsigned int aperture
Definition stvdriver.h:119
unsigned int analogGain
Definition stvdriver.h:116
unsigned char byte
Definition stvdriver.h:175
unsigned int calc_crc(byte byte_array[], int size)
int init_serial(char *device_name, int bit_rate, int word_size, int parity, int stop_bits)
Definition stvdriver.c:1526
void shutdown_serial(int fd)
Definition stvdriver.c:1501