/////////////////////////////////////////////////////////////
//
// ApnCamTable.h:  Camera models and description strings.
//
// Copyright (c) 2003-2007 Apogee Instruments, Inc.
//
/////////////////////////////////////////////////////////////


#ifndef __APN_CAM_TABLE_H__
#define __APN_CAM_TABLE_H__


// Used to derive camera platform type from camera ID
#define APN_SIG_CAMERA_ID_ALTA			0xFF00	// firmware version 1-99
#define APN_SIG_CAMERA_ID_ASCENT		0x0100	// firmware version 100-199
#define APN_SIG_CAMERA_ID_ALTA2			0x0200	// firmware version 200-299
#define APN_SIG_CAMERA_ID_AO			0x0400	// firmware version 300-399

#define APN_MASK_CAMERA_ID_ALTA			0x007F
#define APN_MASK_CAMERA_ID_ASCENT		0x01FF


//////////////////////////////////////////////////////////
// Alta Camera Models
//////////////////////////////////////////////////////////

#define APN_ALTA_KAF0401E_CAM_ID	0
#define APN_ALTA_KAF0401E_CAM_SZ	"1"
 
#define APN_ALTA_KAF1602E_CAM_ID	1
#define APN_ALTA_KAF1602E_CAM_SZ	"2"
 
#define APN_ALTA_KAF0261E_CAM_ID	2
#define APN_ALTA_KAF0261E_CAM_SZ	"260"
 
#define APN_ALTA_KAF1301E_CAM_ID	3
#define APN_ALTA_KAF1301E_CAM_SZ	"13"
 
#define APN_ALTA_KAF09000_CAM_ID	4
#define APN_ALTA_KAF09000_CAM_SZ	"9000"
 
#define APN_ALTA_KAF1001E_CAM_ID	5
#define APN_ALTA_KAF1001E_CAM_SZ	"6"
 
#define APN_ALTA_KAF3200E_CAM_ID	6
#define APN_ALTA_KAF3200E_CAM_SZ	"32"
 
#define APN_ALTA_KAF3200EB_CAM_ID	7
#define APN_ALTA_KAF3200EB_CAM_SZ	"32"
 
#define APN_ALTA_KAF6303E_CAM_ID	8
#define APN_ALTA_KAF6303E_CAM_SZ	"9"
 
#define APN_ALTA_KAF16801E_CAM_ID	9
#define APN_ALTA_KAF16801E_CAM_SZ	"16"
 
#define APN_ALTA_CCD4710_CAM_ID	10
#define APN_ALTA_CCD4710_CAM_SZ	"47"
 
#define APN_ALTA_CCD4710B_CAM_ID	11
#define APN_ALTA_CCD4710B_CAM_SZ	"47"
 
#define APN_ALTA_CCD4710ALT_CAM_ID	12
#define APN_ALTA_CCD4710ALT_CAM_SZ	"47"
 
#define APN_ALTA_CCD4240B_CAM_ID	13
#define APN_ALTA_CCD4240B_CAM_SZ	"42"
 
#define APN_ALTA_TH7899_CAM_ID	14
#define APN_ALTA_TH7899_CAM_SZ	"10"
 
#define APN_ALTA_CCD5710B_CAM_ID	15
#define APN_ALTA_CCD5710B_CAM_SZ	"57"
 
#define APN_ALTA_CCD4240_CAM_ID	16
#define APN_ALTA_CCD4240_CAM_SZ	"42"
 
#define APN_ALTA_CCD3011B_CAM_ID	17
#define APN_ALTA_CCD3011B_CAM_SZ	"30"
 
#define APN_ALTA_CCD5710_CAM_ID	18
#define APN_ALTA_CCD5710_CAM_SZ	"57"
 
#define APN_ALTA_CCD5520B_CAM_ID	19
#define APN_ALTA_CCD5520B_CAM_SZ	"55"
 
#define APN_ALTA_CCD3011_CAM_ID	20
#define APN_ALTA_CCD3011_CAM_SZ	"30"
 
#define APN_ALTA_CCD4720B_CAM_ID	21
#define APN_ALTA_CCD4720B_CAM_SZ	"4720"
 
#define APN_ALTA_CCD5520_CAM_ID	22
#define APN_ALTA_CCD5520_CAM_SZ	"55"
 
#define APN_ALTA_CCD7700B_CAM_ID	23
#define APN_ALTA_CCD7700B_CAM_SZ	"77"
 
#define APN_ALTA_CCD4720_CAM_ID	24
#define APN_ALTA_CCD4720_CAM_SZ	"4720"
 
#define APN_ALTA_CCD7700_CAM_ID	26
#define APN_ALTA_CCD7700_CAM_SZ	"77"
 
#define APN_ALTA_KAF1001ENS_CAM_ID	30
#define APN_ALTA_KAF1001ENS_CAM_SZ	"6"
 
#define APN_ALTA_KAF10011105_CAM_ID	31
#define APN_ALTA_KAF10011105_CAM_SZ	"6"
 
#define APN_ALTA_KAF0401EB_CAM_ID	32
#define APN_ALTA_KAF0401EB_CAM_SZ	"1"
 
#define APN_ALTA_KAF1602EB_CAM_ID	33
#define APN_ALTA_KAF1602EB_CAM_SZ	"2"
 
#define APN_ALTA_KAF0261EB_CAM_ID	34
#define APN_ALTA_KAF0261EB_CAM_SZ	"260"
 
#define APN_ALTA_KAF1301EB_CAM_ID	35
#define APN_ALTA_KAF1301EB_CAM_SZ	"13"
 
#define APN_ALTA_KAF1001EB_CAM_ID	36
#define APN_ALTA_KAF1001EB_CAM_SZ	"6"
 
#define APN_ALTA_KAF6303EB_CAM_ID	37
#define APN_ALTA_KAF6303EB_CAM_SZ	"9"
 
#define APN_ALTA_KAF16803_CAM_ID	38
#define APN_ALTA_KAF16803_CAM_SZ	"16m"
 
#define APN_ALTA_KAF09000X_CAM_ID	39
#define APN_ALTA_KAF09000X_CAM_SZ	"9000x"
 
#define APN_ALTA_S101401107_CAM_ID	40
#define APN_ALTA_S101401107_CAM_SZ	"1107"
 
#define APN_ALTA_S101401109_CAM_ID	41
#define APN_ALTA_S101401109_CAM_SZ	"1109"
 
#define APN_ALTA_F3041_CAM_ID	42
#define APN_ALTA_F3041_CAM_SZ	"3041"
 
#define APN_ALTA_CCD4710DD_CAM_ID	43
#define APN_ALTA_CCD4710DD_CAM_SZ	"47"
 
#define APN_ALTA_KAF8300_CAM_ID	44
#define APN_ALTA_KAF8300_CAM_SZ	"8300"
 
#define APN_ALTA_KAF09000D9_CAM_ID	45
#define APN_ALTA_KAF09000D9_CAM_SZ	"9000d9"
 
#define APN_ALTA_KAF16801ED9_CAM_ID	46
#define APN_ALTA_KAF16801ED9_CAM_SZ	"16d9"
 
#define APN_ALTA_KAF16803D9_CAM_ID	47
#define APN_ALTA_KAF16803D9_CAM_SZ	"16md9"
 
#define APN_ALTA_F3041D9_CAM_ID	48
#define APN_ALTA_F3041D9_CAM_SZ	"3041d9"
 
#define APN_ALTA_KAF0401ENSD_CAM_ID	49
#define APN_ALTA_KAF0401ENSD_CAM_SZ	"1nsd"
 
#define APN_ALTA_KAF8300C_CAM_ID	50
#define APN_ALTA_KAF8300C_CAM_SZ	"8300c"
 
#define APN_ALTA_CCD4240D9_CAM_ID	51
#define APN_ALTA_CCD4240D9_CAM_SZ	"42d9"
 
#define APN_ALTA_KAF1001EBD9_CAM_ID	52
#define APN_ALTA_KAF1001EBD9_CAM_SZ	"6d9"
 
#define APN_ALTA_CCD4710D9_CAM_ID	53
#define APN_ALTA_CCD4710D9_CAM_SZ	"47d9"
 
#define APN_ALTA_CCD7700D9_CAM_ID	54
#define APN_ALTA_CCD7700D9_CAM_SZ	"77d9"
 
#define APN_ALTA_KAF09000D7D9_CAM_ID	55
#define APN_ALTA_KAF09000D7D9_CAM_SZ	"9000d7d9"
 
#define APN_ALTA_KAF16801ED7D9_CAM_ID	56
#define APN_ALTA_KAF16801ED7D9_CAM_SZ	"16d7d9"
 
#define APN_ALTA_KAF16803D7D9_CAM_ID	57
#define APN_ALTA_KAF16803D7D9_CAM_SZ	"16md7d9"
 
#define APN_ALTA_KAF09000XD7D9_CAM_ID	58
#define APN_ALTA_KAF09000XD7D9_CAM_SZ	"9000xd7d9"
 
#define APN_ALTA_KAF6302_CAM_ID	59
#define APN_ALTA_KAF6302_CAM_SZ	"9k6302"
 
#define APN_ALTA_S101401108_CAM_ID	60
#define APN_ALTA_S101401108_CAM_SZ	"1108"
 
#define APN_ALTA_CCD230_42_CAM_ID	61
#define APN_ALTA_CCD230_42_CAM_SZ	"230"
 
#define APN_ALTA_KAF6303EBD9_CAM_ID	62
#define APN_ALTA_KAF6303EBD9_CAM_SZ	"9d9"
 
#define APN_ALTA_CCD3011D9_CAM_ID	63
#define APN_ALTA_CCD3011D9_CAM_SZ	"30d9"
 
#define APN_ALTA_KAI2020ML_CAM_ID	64
#define APN_ALTA_KAI2020ML_CAM_SZ	"2020ml"
 
#define APN_ALTA_KAI2001ML_CAM_ID	65
#define APN_ALTA_KAI2001ML_CAM_SZ	"2001ml"
 
#define APN_ALTA_KAI4020ML_CAM_ID	66
#define APN_ALTA_KAI4020ML_CAM_SZ	"4020ml"
 
#define APN_ALTA_KAI16000ML_CAM_ID	67
#define APN_ALTA_KAI16000ML_CAM_SZ	"16000ml"
 
#define APN_ALTA_KAI2020CL_CAM_ID	68
#define APN_ALTA_KAI2020CL_CAM_SZ	"2020cl"
 
#define APN_ALTA_KAI4020CL_CAM_ID	69
#define APN_ALTA_KAI4020CL_CAM_SZ	"4020cl"
 
#define APN_ALTA_KAI16000CL_CAM_ID	70
#define APN_ALTA_KAI16000CL_CAM_SZ	"16000cl"
 
#define APN_ALTA_KAI2001CL_CAM_ID	71
#define APN_ALTA_KAI2001CL_CAM_SZ	"2001cl"
 
#define APN_ALTA_KAI2020MLB_CAM_ID	72
#define APN_ALTA_KAI2020MLB_CAM_SZ	"2020ml"
 
#define APN_ALTA_KAI4020MLB_CAM_ID	73
#define APN_ALTA_KAI4020MLB_CAM_SZ	"4020ml"
 
#define APN_ALTA_KAI2020CLB_CAM_ID	74
#define APN_ALTA_KAI2020CLB_CAM_SZ	"2020cl"
 
#define APN_ALTA_KAI4020CLB_CAM_ID	75
#define APN_ALTA_KAI4020CLB_CAM_SZ	"4020cl"
 
#define APN_ALTA_KAI16000CLD9_CAM_ID	76
#define APN_ALTA_KAI16000CLD9_CAM_SZ	"16000cld9"
 
#define APN_ALTA_KAI16000MLD9_CAM_ID	77
#define APN_ALTA_KAI16000MLD9_CAM_SZ	"16000mld9"

#define APN_ALTA_A285_CAM_ID	257
#define APN_ALTA_A285_CAM_SZ	"asc285m"

#define APN_ALTA_A4000_CAM_ID	260
#define APN_ALTA_A4000_CAM_SZ	"asc4000"

#define APN_ALTA_A4000C_CAM_ID	267
#define APN_ALTA_A4000C_CAM_SZ	"asc4000c"
 
//////////////////////////////////////////////////////////
// Ascent Camera Models
//////////////////////////////////////////////////////////

#define APN_ASCENT_KAF0402E_CAM_ID	256
#define APN_ASCENT_KAF0402E_CAM_SZ	"1"

#define APN_ASCENT_KAF0402E2_CAM_ID	257
#define APN_ASCENT_KAF0402E2_CAM_SZ	"2"
#define APN_ASCENT_KAF0402E3_CAM_ID	258
#define APN_ASCENT_KAF0402E3_CAM_SZ	"3"
#define APN_ASCENT_KAF0402E4_CAM_ID	259
#define APN_ASCENT_KAF0402E4_CAM_SZ	"4"

#define APN_ASCENT_KAI340_CAM_ID	323
#define APN_ASCENT_KAI340_CAM_SZ	"340"
 
#define APN_ASCENT_KAI2000_CAM_ID	322
#define APN_ASCENT_KAI2000_CAM_SZ	"2000"

#define APN_ASCENT_KAI4000_CAM_ID	321
#define APN_ASCENT_KAI4000_CAM_SZ	"4000"

#define APN_ASCENT_KAI16000_CAM_ID	320
#define APN_ASCENT_KAI16000_CAM_SZ	"16000"




// Helper function prototype

void ApnCamModelLookup( unsigned short CamId, int FwRev, unsigned short Interface, char *szCamModel );

bool ApnCamModelIsAlta( unsigned short CamId, int FwRev );
bool ApnCamModelIsAscent( unsigned short CamId, int FwRev );


#endif
