Annotation of libaitpelco/src/set.c, revision 1.1.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>