TwiceAsNice  2019-02-18
Macros | Functions | Variables
sxccdusb.cpp File Reference
#include "sxccdusb.h"
#include <indidevapi.h>
#include <memory>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <config-usb.h>
Include dependency graph for sxccdusb.cpp:

Macros

#define USB_REQ_TYPE   0
 
#define USB_REQ   1
 
#define USB_REQ_VALUE_L   2
 
#define USB_REQ_VALUE_H   3
 
#define USB_REQ_INDEX_L   4
 
#define USB_REQ_INDEX_H   5
 
#define USB_REQ_LENGTH_L   6
 
#define USB_REQ_LENGTH_H   7
 
#define USB_REQ_DATA   8
 
#define USB_REQ_DIR(r)   ((r) & (1 << 7))
 
#define USB_REQ_DATAOUT   0x00
 
#define USB_REQ_DATAIN   0x80
 
#define USB_REQ_KIND(r)   ((r) & (3 << 5))
 
#define USB_REQ_VENDOR   (2 << 5)
 
#define USB_REQ_STD   0
 
#define USB_REQ_RECIP(r)   ((r)&31)
 
#define USB_REQ_DEVICE   0x00
 
#define USB_REQ_IFACE   0x01
 
#define USB_REQ_ENDPOINT   0x02
 
#define USB_DATAIN   0x80
 
#define USB_DATAOUT   0x00
 
#define SXUSB_GET_FIRMWARE_VERSION   255
 
#define SXUSB_ECHO   0
 
#define SXUSB_CLEAR_PIXELS   1
 
#define SXUSB_READ_PIXELS_DELAYED   2
 
#define SXUSB_READ_PIXELS   3
 
#define SXUSB_SET_TIMER   4
 
#define SXUSB_GET_TIMER   5
 
#define SXUSB_RESET   6
 
#define SXUSB_SET_CCD   7
 
#define SXUSB_GET_CCD   8
 
#define SXUSB_SET_STAR2K   9
 
#define SXUSB_WRITE_SERIAL_PORT   10
 
#define SXUSB_READ_SERIAL_PORT   11
 
#define SXUSB_SET_SERIAL   12
 
#define SXUSB_GET_SERIAL   13
 
#define SXUSB_CAMERA_MODEL   14
 
#define SXUSB_LOAD_EEPROM   15
 
#define SXUSB_SET_A2D   16
 
#define SXUSB_RED_A2D   17
 
#define SXUSB_READ_PIXELS_GATED   18
 
#define SXUSB_BUILD_NUMBER   19
 
#define SXUSB_COOLER_CONTROL   30
 
#define SXUSB_COOLER   30
 
#define SXUSB_COOLER_TEMPERATURE   31
 
#define SXUSB_SHUTTER_CONTROL   32
 
#define SXUSB_SHUTTER   32
 
#define SXUSB_READ_I2CPORT   33
 
#define SX_VID   0x1278
 
#define SX_USB_VID   0x4444
 
#define SX_USB_PID   0x4220
 
#define SX_USB_NAME   "SX-USB"
 
#define BULK_IN   0x0082
 
#define BULK_OUT   0x0001
 
#define BULK_COMMAND_TIMEOUT   2000
 
#define BULK_DATA_TIMEOUT   10000
 
#define CHUNK_SIZE   (10*1024*1024)
 
#define TRACE(c)   (c)
 
#define DEBUG(c)   (c)
 

Functions

static char * libusb_error_name (int rc)
 
void log (bool debug, const char *fmt,...)
 
static void init ()
 
void sxDebug (bool enable)
 
bool sxIsInterlaced (short model)
 
bool sxIsColor (short model)
 
bool sxIsICX453 (short model)
 
int sxList (DEVICE *sxDevices, const char **names, int maxCount)
 
int sxOpen (DEVICE sxDevice, HANDLE *sxHandle)
 
int sxOpen (HANDLE *sxHandles)
 
void sxClose (HANDLE *sxHandle)
 
int sxReset (HANDLE sxHandle)
 
unsigned short sxGetCameraModel (HANDLE sxHandle)
 
unsigned long sxGetFirmwareVersion (HANDLE sxHandle)
 
unsigned short sxGetBuildNumber (HANDLE sxHandle)
 
int sxGetCameraParams (HANDLE sxHandle, unsigned short camIndex, struct t_sxccd_params *params)
 
int sxSetShutter (HANDLE sxHandle, unsigned short state)
 
int sxSetTimer (HANDLE sxHandle, unsigned long msec)
 
unsigned long sxGetTimer (HANDLE sxHandle)
 
int sxSetCooler (HANDLE sxHandle, unsigned char setStatus, unsigned short setTemp, unsigned char *retStatus, unsigned short *retTemp)
 
int sxClearPixels (HANDLE sxHandle, unsigned short flags, unsigned short camIndex)
 
int sxLatchPixels (HANDLE sxHandle, unsigned short flags, unsigned short camIndex, unsigned short xoffset, unsigned short yoffset, unsigned short width, unsigned short height, unsigned short xbin, unsigned short ybin)
 
int sxExposePixels (HANDLE sxHandle, unsigned short flags, unsigned short camIndex, unsigned short xoffset, unsigned short yoffset, unsigned short width, unsigned short height, unsigned short xbin, unsigned short ybin, unsigned long msec)
 
int sxExposePixelsGated (HANDLE sxHandle, unsigned short flags, unsigned short camIndex, unsigned short xoffset, unsigned short yoffset, unsigned short width, unsigned short height, unsigned short xbin, unsigned short ybin, unsigned long msec)
 
int sxReadPixels (HANDLE sxHandle, void *pixels, unsigned long count)
 
int sxSetSTAR2000 (HANDLE sxHandle, char star2k)
 
int sxSetSerialPort (HANDLE sxHandle, unsigned short portIndex, unsigned short property, unsigned short value)
 
unsigned short sxGetSerialPort (HANDLE sxHandle, unsigned short portIndex, unsigned short property)
 
int sxWriteSerialPort (HANDLE sxHandle, unsigned short portIndex, unsigned short flush, unsigned short count, char *data)
 
int sxReadSerialPort (HANDLE sxHandle, unsigned short portIndex, unsigned short count, char *data)
 
int sxReadEEPROM (HANDLE sxHandle, unsigned short address, unsigned short count, char *data)
 

Variables

struct {
   int   pid
 
   const char *   name
 
   int   seq
 
SX_PIDS []
 
libusb_context * ctx = nullptr
 
static bool debugEnabled = false
 

Macro Definition Documentation

◆ BULK_COMMAND_TIMEOUT

#define BULK_COMMAND_TIMEOUT   2000

◆ BULK_DATA_TIMEOUT

#define BULK_DATA_TIMEOUT   10000

◆ BULK_IN

#define BULK_IN   0x0082

◆ BULK_OUT

#define BULK_OUT   0x0001

◆ CHUNK_SIZE

#define CHUNK_SIZE   (10*1024*1024)

◆ DEBUG

#define DEBUG (   c)    (c)

◆ SX_USB_NAME

#define SX_USB_NAME   "SX-USB"

◆ SX_USB_PID

#define SX_USB_PID   0x4220

◆ SX_USB_VID

#define SX_USB_VID   0x4444

◆ SX_VID

#define SX_VID   0x1278

◆ SXUSB_BUILD_NUMBER

#define SXUSB_BUILD_NUMBER   19

◆ SXUSB_CAMERA_MODEL

#define SXUSB_CAMERA_MODEL   14

◆ SXUSB_CLEAR_PIXELS

#define SXUSB_CLEAR_PIXELS   1

◆ SXUSB_COOLER

#define SXUSB_COOLER   30

◆ SXUSB_COOLER_CONTROL

#define SXUSB_COOLER_CONTROL   30

◆ SXUSB_COOLER_TEMPERATURE

#define SXUSB_COOLER_TEMPERATURE   31

◆ SXUSB_ECHO

#define SXUSB_ECHO   0

◆ SXUSB_GET_CCD

#define SXUSB_GET_CCD   8

◆ SXUSB_GET_FIRMWARE_VERSION

#define SXUSB_GET_FIRMWARE_VERSION   255

◆ SXUSB_GET_SERIAL

#define SXUSB_GET_SERIAL   13

◆ SXUSB_GET_TIMER

#define SXUSB_GET_TIMER   5

◆ SXUSB_LOAD_EEPROM

#define SXUSB_LOAD_EEPROM   15

◆ SXUSB_READ_I2CPORT

#define SXUSB_READ_I2CPORT   33

◆ SXUSB_READ_PIXELS

#define SXUSB_READ_PIXELS   3

◆ SXUSB_READ_PIXELS_DELAYED

#define SXUSB_READ_PIXELS_DELAYED   2

◆ SXUSB_READ_PIXELS_GATED

#define SXUSB_READ_PIXELS_GATED   18

◆ SXUSB_READ_SERIAL_PORT

#define SXUSB_READ_SERIAL_PORT   11

◆ SXUSB_RED_A2D

#define SXUSB_RED_A2D   17

◆ SXUSB_RESET

#define SXUSB_RESET   6

◆ SXUSB_SET_A2D

#define SXUSB_SET_A2D   16

◆ SXUSB_SET_CCD

#define SXUSB_SET_CCD   7

◆ SXUSB_SET_SERIAL

#define SXUSB_SET_SERIAL   12

◆ SXUSB_SET_STAR2K

#define SXUSB_SET_STAR2K   9

◆ SXUSB_SET_TIMER

#define SXUSB_SET_TIMER   4

◆ SXUSB_SHUTTER

#define SXUSB_SHUTTER   32

◆ SXUSB_SHUTTER_CONTROL

#define SXUSB_SHUTTER_CONTROL   32

◆ SXUSB_WRITE_SERIAL_PORT

#define SXUSB_WRITE_SERIAL_PORT   10

◆ TRACE

#define TRACE (   c)    (c)

◆ USB_DATAIN

#define USB_DATAIN   0x80

◆ USB_DATAOUT

#define USB_DATAOUT   0x00

◆ USB_REQ

#define USB_REQ   1

◆ USB_REQ_DATA

#define USB_REQ_DATA   8

◆ USB_REQ_DATAIN

#define USB_REQ_DATAIN   0x80

◆ USB_REQ_DATAOUT

#define USB_REQ_DATAOUT   0x00

◆ USB_REQ_DEVICE

#define USB_REQ_DEVICE   0x00

◆ USB_REQ_DIR

#define USB_REQ_DIR (   r)    ((r) & (1 << 7))

◆ USB_REQ_ENDPOINT

#define USB_REQ_ENDPOINT   0x02

◆ USB_REQ_IFACE

#define USB_REQ_IFACE   0x01

◆ USB_REQ_INDEX_H

#define USB_REQ_INDEX_H   5

◆ USB_REQ_INDEX_L

#define USB_REQ_INDEX_L   4

◆ USB_REQ_KIND

#define USB_REQ_KIND (   r)    ((r) & (3 << 5))

◆ USB_REQ_LENGTH_H

#define USB_REQ_LENGTH_H   7

◆ USB_REQ_LENGTH_L

#define USB_REQ_LENGTH_L   6

◆ USB_REQ_RECIP

#define USB_REQ_RECIP (   r)    ((r)&31)

◆ USB_REQ_STD

#define USB_REQ_STD   0

◆ USB_REQ_TYPE

#define USB_REQ_TYPE   0

◆ USB_REQ_VALUE_H

#define USB_REQ_VALUE_H   3

◆ USB_REQ_VALUE_L

#define USB_REQ_VALUE_L   2

◆ USB_REQ_VENDOR

#define USB_REQ_VENDOR   (2 << 5)

Function Documentation

◆ init()

static void init ( )
static

◆ libusb_error_name()

static char* libusb_error_name ( int  rc)
static

◆ log()

void log ( bool  debug,
const char *  fmt,
  ... 
)

◆ sxClearPixels()

int sxClearPixels ( HANDLE  sxHandle,
unsigned short  flags,
unsigned short  camIndex 
)

◆ sxClose()

void sxClose ( HANDLE sxHandle)

◆ sxDebug()

void sxDebug ( bool  enable)

◆ sxExposePixels()

int sxExposePixels ( HANDLE  sxHandle,
unsigned short  flags,
unsigned short  camIndex,
unsigned short  xoffset,
unsigned short  yoffset,
unsigned short  width,
unsigned short  height,
unsigned short  xbin,
unsigned short  ybin,
unsigned long  msec 
)

◆ sxExposePixelsGated()

int sxExposePixelsGated ( HANDLE  sxHandle,
unsigned short  flags,
unsigned short  camIndex,
unsigned short  xoffset,
unsigned short  yoffset,
unsigned short  width,
unsigned short  height,
unsigned short  xbin,
unsigned short  ybin,
unsigned long  msec 
)

◆ sxGetBuildNumber()

unsigned short sxGetBuildNumber ( HANDLE  sxHandle)

◆ sxGetCameraModel()

unsigned short sxGetCameraModel ( HANDLE  sxHandle)

◆ sxGetCameraParams()

int sxGetCameraParams ( HANDLE  sxHandle,
unsigned short  camIndex,
struct t_sxccd_params params 
)

◆ sxGetFirmwareVersion()

unsigned long sxGetFirmwareVersion ( HANDLE  sxHandle)

◆ sxGetSerialPort()

unsigned short sxGetSerialPort ( HANDLE  sxHandle,
unsigned short  portIndex,
unsigned short  property 
)

◆ sxGetTimer()

unsigned long sxGetTimer ( HANDLE  sxHandle)

◆ sxIsColor()

bool sxIsColor ( short  model)

◆ sxIsICX453()

bool sxIsICX453 ( short  model)

◆ sxIsInterlaced()

bool sxIsInterlaced ( short  model)

◆ sxLatchPixels()

int sxLatchPixels ( HANDLE  sxHandle,
unsigned short  flags,
unsigned short  camIndex,
unsigned short  xoffset,
unsigned short  yoffset,
unsigned short  width,
unsigned short  height,
unsigned short  xbin,
unsigned short  ybin 
)

◆ sxList()

int sxList ( DEVICE sxDevices,
const char **  names,
int  maxCount 
)

◆ sxOpen() [1/2]

int sxOpen ( DEVICE  sxDevice,
HANDLE sxHandle 
)

◆ sxOpen() [2/2]

int sxOpen ( HANDLE sxHandles)

◆ sxReadEEPROM()

int sxReadEEPROM ( HANDLE  sxHandle,
unsigned short  address,
unsigned short  count,
char *  data 
)

◆ sxReadPixels()

int sxReadPixels ( HANDLE  sxHandle,
void *  pixels,
unsigned long  count 
)

◆ sxReadSerialPort()

int sxReadSerialPort ( HANDLE  sxHandle,
unsigned short  portIndex,
unsigned short  count,
char *  data 
)

◆ sxReset()

int sxReset ( HANDLE  sxHandle)

◆ sxSetCooler()

int sxSetCooler ( HANDLE  sxHandle,
unsigned char  setStatus,
unsigned short  setTemp,
unsigned char *  retStatus,
unsigned short *  retTemp 
)

◆ sxSetSerialPort()

int sxSetSerialPort ( HANDLE  sxHandle,
unsigned short  portIndex,
unsigned short  property,
unsigned short  value 
)

◆ sxSetShutter()

int sxSetShutter ( HANDLE  sxHandle,
unsigned short  state 
)

◆ sxSetSTAR2000()

int sxSetSTAR2000 ( HANDLE  sxHandle,
char  star2k 
)

◆ sxSetTimer()

int sxSetTimer ( HANDLE  sxHandle,
unsigned long  msec 
)

◆ sxWriteSerialPort()

int sxWriteSerialPort ( HANDLE  sxHandle,
unsigned short  portIndex,
unsigned short  flush,
unsigned short  count,
char *  data 
)

Variable Documentation

◆ ctx

libusb_context* ctx = nullptr

◆ debugEnabled

bool debugEnabled = false
static

◆ name

const char* name

◆ pid

int pid

◆ seq

int seq

◆ SX_PIDS

struct { ... } SX_PIDS[]