Annotation of libaitpelco/src/set.c, 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: #include "global.h"
! 10:
! 11:
! 12: /*
! 13: * pelco_D_fromCmd() Convert from Pelco D commands
! 14: * @cmd1 = Input typecasted commands 1
! 15: * @cmd2 = Input typecasted commands 2
! 16: * @cmd[2] = Output Commands 1 & 2
! 17: * return: 0xFF - error, 0 - ok
! 18: */
! 19: inline u_char pelco_D_fromCmd(struct bitD_Cmd1 cmd1, struct bitD_Cmd2 cmd2,
! 20: u_char * __restrict cmd)
! 21: {
! 22: u_char ret = 0;
! 23:
! 24: if (!cmd) {
! 25: pelcoSetErr(EINVAL, "Error:: invalid argument!\n");
! 26: return 0xFF;
! 27: }
! 28:
! 29: memcpy(&cmd[0], &cmd1, 1);
! 30: memcpy(&cmd[1], &cmd2, 1);
! 31:
! 32: return ret;
! 33: }
! 34:
! 35: /*
! 36: * pelco_P_fromCmd() Convert from Pelco P commands
! 37: * @cmd1 = Input typecasted commands 1
! 38: * @cmd2 = Input typecasted commands 2
! 39: * @cmd[2] = Output Commands 1 & 2
! 40: * return: 0xFF - error, 0 - ok
! 41: */
! 42: inline u_char pelco_P_fromCmd(struct bitP_Cmd1 cmd1, struct bitP_Cmd2 cmd2,
! 43: u_char * __restrict cmd)
! 44: {
! 45: u_char ret = 0;
! 46:
! 47: if (!cmd) {
! 48: pelcoSetErr(EINVAL, "Error:: invalid argument!\n");
! 49: return 0xFF;
! 50: }
! 51:
! 52: memcpy(&cmd[0], &cmd1, 1);
! 53: memcpy(&cmd[1], &cmd2, 1);
! 54:
! 55: return ret;
! 56: }
! 57:
! 58: /*
! 59: * pelco_SetCamCmdData() Set Camera commands and datas
! 60: * @ver = Input Pelco (d | p) version
! 61: * @cam = Input camera number
! 62: * @cmd[2] = Input Commands 1 & 2
! 63: * @data[2] = Input Data for commands 1 & 2
! 64: * @p = Output Packet structure
! 65: * return: 0xFF - error, 0 - ok
! 66: */
! 67: inline u_char pelco_SetCamCmdData(u_char ver, u_char __restrict cam,
! 68: u_char * __restrict cmd, u_char * __restrict data, void * __restrict p)
! 69: {
! 70: u_char ret = 0;
! 71: pelco_d_t *pd = (pelco_d_t*) p;
! 72: pelco_p_t *pp = (pelco_p_t*) p;
! 73:
! 74: if (!p) {
! 75: pelcoSetErr(EINVAL, "Error:: invalid argument!\n");
! 76: return 0xFF;
! 77: }
! 78:
! 79: switch (ver) {
! 80: case 'D':
! 81: case 'd':
! 82: memset(pd, 0, sizeof(pelco_d_t));
! 83: pd->d_sync = VER_D_SYNC;
! 84: pd->d_cam = cam;
! 85: if (cmd)
! 86: memcpy(&pd->d_cmd1, cmd, 2);
! 87: if (data)
! 88: memcpy(&pd->d_data, data, 2);
! 89: pd->d_crc = crcPelco(ver, p);
! 90: break;
! 91: case 'P':
! 92: case 'p':
! 93: memset(pp, 0, sizeof(pelco_p_t));
! 94: pp->p_stx = VER_P_STX;
! 95: pp->p_cam = !cam ? cam : cam - 1;
! 96: if (cmd)
! 97: memcpy(&pp->p_cmd1, cmd, 2);
! 98: if (data)
! 99: memcpy(&pp->p_data, data, 2);
! 100: pp->p_etx = VER_P_ETX;
! 101: pp->p_crc = crcPelco(ver, p);
! 102: break;
! 103: default:
! 104: pelcoSetErr(ENOEXEC, "Error:: Invalid protocol!\n");
! 105: return 0xFF;
! 106: }
! 107:
! 108: return ret;
! 109: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>