Annotation of libaitpelco/inc/aitpelco.h, revision 1.1

1.1     ! misho       1: /*************************************************************************
        !             2: * (C) 2010 AITNET ltd - Sofia/Bulgaria - <misho@aitbg.com>
        !             3: *  by Michael Pounov <misho@openbsd-bg.org>
        !             4: *
        !             5: * $Author: misho $
        !             6: * $Id: aitcrc.h,v 1.1.1.1.2.1 2008/11/05 17:29:19 misho Exp $
        !             7: *
        !             8: *************************************************************************/
        !             9: #ifndef __AITPELCO_H
        !            10: #define __AITPELCO_H
        !            11: 
        !            12: 
        !            13: #include <sys/types.h>
        !            14: 
        !            15: 
        !            16: #define PELCO_D_LEN    7
        !            17: #define PELCO_P_LEN    8
        !            18: 
        !            19: #define FIXED_ZERO     0
        !            20: 
        !            21: #define VER_D_SYNC     0xFF
        !            22: #define VER_P_STX      0xA0
        !            23: #define VER_P_ETX      0xAF
        !            24: 
        !            25: #define FIRST_CAM_D    1
        !            26: #define FIRST_CAM_P    0
        !            27: 
        !            28: #define SPEED_MIN      0x00
        !            29: #define SPEED_HI       0x3F
        !            30: #define SPEED_MAX      0x40
        !            31: 
        !            32: #define PAN_STOP       SPEED_MIN
        !            33: #define PAN_FAST       SPEED_HI
        !            34: #define PAN_TURBO      SPEED_MAX
        !            35: #define TILT_STOP      SPEED_MIN
        !            36: #define TILT_FAST      SPEED_HI
        !            37: 
        !            38: 
        !            39: /* Pelco-D protocol */
        !            40: 
        !            41: // Helper Command bitField structures
        !            42: 
        !            43: struct bitD_Cmd1 {
        !            44:        u_char focus_near:1;
        !            45:        u_char iris_open:1;
        !            46:        u_char iris_close:1;
        !            47:        u_char cam_on:1;
        !            48:        u_char auto_scan:1;
        !            49:        u_char reserved:2;
        !            50:        u_char sense:1;
        !            51: };
        !            52: 
        !            53: struct bitD_Cmd2 {
        !            54:        u_char fixed:1;
        !            55:        u_char pan_right:1;
        !            56:        u_char pan_left:1;
        !            57:        u_char tilt_up:1;
        !            58:        u_char tilt_down:1;
        !            59:        u_char zoom_tele:1;
        !            60:        u_char zoom_wide:1;
        !            61:        u_char focus_far:1;
        !            62: };
        !            63: 
        !            64: typedef struct tagPelcoD {
        !            65:        u_char d_sync;
        !            66:        u_char d_cam;
        !            67:        struct bitD_Cmd1 d_cmd1;
        !            68:        struct bitD_Cmd2 d_cmd2;
        !            69:        u_char d_data[2];
        !            70:        u_char d_crc;
        !            71: } pelco_d_t;   // 7 bytes packet
        !            72: 
        !            73: 
        !            74: /* Pelco-P protocol */
        !            75: 
        !            76: // Helper Data bitField structures
        !            77: 
        !            78: struct bitP_Cmd1 {
        !            79:        u_char focus_far:1;
        !            80:        u_char focus_near:1;
        !            81:        u_char iris_open:1;
        !            82:        u_char iris_close:1;
        !            83:        u_char cam_on:1;
        !            84:        u_char auto_scan:1;
        !            85:        u_char camera:1;
        !            86:        u_char fixed:1;
        !            87: };
        !            88: 
        !            89: struct bitP_Cmd2 {
        !            90:        u_char for_pan_tilt:1;
        !            91:        u_char pan_right:1;
        !            92:        u_char pan_left:1;
        !            93:        u_char tilt_up:1;
        !            94:        u_char tilt_down:1;
        !            95:        u_char zoom_tele:1;
        !            96:        u_char zoom_wide:1;
        !            97:        u_char fixed:1;
        !            98: };
        !            99: 
        !           100: typedef struct tagPelcoP {
        !           101:        u_char p_stx;
        !           102:        u_char p_cam;
        !           103:        struct bitP_Cmd1 p_cmd1;
        !           104:        struct bitP_Cmd2 p_cmd2;
        !           105:        u_char p_data[2];
        !           106:        u_char p_etx;
        !           107:        u_char p_crc;
        !           108: } pelco_p_t;   // 8 bytes packet
        !           109: 
        !           110: 
        !           111: // -------------------------------------------------------
        !           112: // pelco_GetErrno() Get error code of last operation
        !           113: inline int pelco_GetErrno();
        !           114: // pelco_GetError() Get error text of last operation
        !           115: inline const char *pelco_GetError();
        !           116: // -------------------------------------------------------
        !           117: 
        !           118: 
        !           119: /*
        !           120:  * pelcoOpen() Open packet record for camera number with Pelco version D/P
        !           121:  * @pelcoVer = Pelco protocol version Dd | Pp
        !           122:  * @camNo = Packet for camera number address
        !           123:  * return: NULL error, !=NULL ok, allocated memory for packet
        !           124:  */
        !           125: inline void *pelcoOpen(u_char pelcoVer, u_char camNo);
        !           126: 
        !           127: /*
        !           128:  * pelcoClose() Close packet record and free memory
        !           129:  * @p = Packet structure for close
        !           130:  */
        !           131: inline void pelcoClose(void * __restrict p);
        !           132: 
        !           133: /*
        !           134:  * pelcoAddCmdData() Add commands and datas for already opened packet
        !           135:  * @p = Input Packet structure
        !           136:  * @cmd[2] = Input Commands 1 & 2
        !           137:  * @data[2] = Input Data for commands 1 & 2
        !           138:  * return: 0xFF - error, 0 - ok
        !           139:  */
        !           140: inline u_char pelcoAddCmdData(void * __restrict p, u_char * __restrict cmd, u_char * __restrict data);
        !           141: 
        !           142: 
        !           143: /*
        !           144:  * pelco_GetVersion() Return Pelco protocol version
        !           145:  * @p = Packet structure
        !           146:  * return: 'd' - PelcoD, 'p' - PelcoP, 0 - unknown or bad packet
        !           147:  */
        !           148: inline u_char pelco_GetVersion(void * __restrict p);
        !           149: 
        !           150: /*
        !           151:  * pelco_GetCamNo() Get Camera number and check for valid packet
        !           152:  * @p = Packet structure
        !           153:  * return: 0xFF and pelco_GetErrno() == ENOEXEC - error, 
        !           154:        any number is camera address
        !           155:  */
        !           156: inline u_char pelco_GetCamNo(void * __restrict p);
        !           157: 
        !           158: /*
        !           159:  * pelco_GetCamCmdData() Get from Camera commands and datas with verify packet
        !           160:  * @p = Input Packet structure
        !           161:  * @cam = Output camera number
        !           162:  * @cmd[2] = Output Commands 1 & 2
        !           163:  * @data[2] = Output Data for commands 1 & 2
        !           164:  * return: 'd' - PelcoD, 'p' - PelcoP, 0 - unknown or bad packet
        !           165:  */
        !           166: inline u_char pelco_GetCamCmdData(void * __restrict p, u_char * __restrict cam, 
        !           167:                u_char * __restrict cmd, u_char * __restrict data);
        !           168: 
        !           169: 
        !           170: /*
        !           171:  * pelco_D_toCmd() Convert to Pelco D commands
        !           172:  * @cmd[2] = Input Commands 1 & 2
        !           173:  * @cmd1 = Output typecasted commands 1
        !           174:  * @cmd2 = Output typecasted commands 2
        !           175:  * return: 0xFF - error, !=0 return number arguments
        !           176:  */
        !           177: inline u_char pelco_D_toCmd(u_char * __restrict cmd, 
        !           178:                struct bitD_Cmd1 * __restrict cmd1, struct bitD_Cmd2 * __restrict cmd2);
        !           179: 
        !           180: /*
        !           181:  * pelco_P_toCmd() Convert to Pelco P commands
        !           182:  * @cmd[2] = Input Commands 1 & 2
        !           183:  * @cmd1 = Output typecasted commands 1
        !           184:  * @cmd2 = Output typecasted commands 2
        !           185:  * return: 0xFF - error, !=0 return number arguments
        !           186:  */
        !           187: inline u_char pelco_P_toCmd(u_char * __restrict cmd, 
        !           188:                struct bitP_Cmd1 * __restrict cmd1, struct bitP_Cmd2 * __restrict cmd2);
        !           189: 
        !           190: /*
        !           191:  * pelco_D_fromCmd() Convert from Pelco D commands
        !           192:  * @cmd1 = Input typecasted commands 1
        !           193:  * @cmd2 = Input typecasted commands 2
        !           194:  * @cmd[2] = Output Commands 1 & 2
        !           195:  * return: 0xFF - error, 0 - ok
        !           196:  */
        !           197: inline u_char pelco_D_fromCmd(struct bitD_Cmd1 cmd1, struct bitD_Cmd2 cmd2, 
        !           198:                u_char * __restrict cmd);
        !           199: 
        !           200: /*
        !           201:  * pelco_P_fromCmd() Convert from Pelco P commands
        !           202:  * @cmd1 = Input typecasted commands 1
        !           203:  * @cmd2 = Input typecasted commands 2
        !           204:  * @cmd[2] = Output Commands 1 & 2
        !           205:  * return: 0xFF - error, 0 - ok
        !           206:  */
        !           207: inline u_char pelco_P_fromCmd(struct bitP_Cmd1 cmd1, struct bitP_Cmd2 cmd2, 
        !           208:                u_char * __restrict cmd);
        !           209: 
        !           210: /*
        !           211:  * pelco_SetCamCmdData() Set Camera commands and datas
        !           212:  * @ver = Input Pelco (d | p) version
        !           213:  * @cam = Input camera number
        !           214:  * @cmd[2] = Input Commands 1 & 2
        !           215:  * @data[2] = Input Data for commands 1 & 2
        !           216:  * @p = Output Packet structure
        !           217:  * return: 0xFF - error, 0 - ok
        !           218:  */
        !           219: inline u_char pelco_SetCamCmdData(u_char ver, u_char __restrict cam, 
        !           220:                u_char * __restrict cmd, u_char * __restrict data, void * __restrict p);
        !           221: 
        !           222: 
        !           223: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>