--- libaitpelco/src/get.c 2010/01/22 00:57:32 1.1 +++ libaitpelco/src/get.c 2011/05/10 20:26:08 1.2 @@ -3,9 +3,46 @@ * by Michael Pounov * * $Author: misho $ -* $Id: get.c,v 1.1 2010/01/22 00:57:32 misho Exp $ +* $Id: get.c,v 1.2 2011/05/10 20:26:08 misho Exp $ * -*************************************************************************/ +************************************************************************** +The ELWIX and AITNET software is distributed under the following +terms: + +All of the documentation and software included in the ELWIX and AITNET +Releases is copyrighted by ELWIX - Sofia/Bulgaria + +Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 + by Michael Pounov . All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. All advertising materials mentioning features or use of this software + must display the following acknowledgement: +This product includes software developed by Michael Pounov +ELWIX - Embedded LightWeight unIX and its contributors. +4. Neither the name of AITNET nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY AITNET AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. +*/ #include "global.h" @@ -14,12 +51,13 @@ * @p = Packet structure * return: 'd' - PelcoD, 'p' - PelcoP, 0 - unknown or bad packet */ -inline u_char pelco_GetVersion(void * __restrict p) +inline u_char +pelco_GetVersion(void * __restrict p) { u_char *ptr = (u_char *) p; - if (!p) { - pelcoSetErr(EINVAL, "Error:: invalid argument!\n"); + if (!p || !*ptr) { + pelcoSetErr(EINVAL, "invalid argument!\n"); return 0; } @@ -29,10 +67,10 @@ inline u_char pelco_GetVersion(void * __restrict p) case VER_P_STX: if (VER_P_ETX == ptr[6]) return 'p'; - pelcoSetErr(ENOEXEC, "Error:: broken Pelco P packet ...\n"); + pelcoSetErr(ENOEXEC, "broken Pelco P packet ...\n"); break; default: - pelcoSetErr(ENOEXEC, "Error:: unsupported Pelco protocol version!\n"); + pelcoSetErr(ENOEXEC, "unsupported Pelco protocol version!\n"); } return 0; @@ -44,13 +82,14 @@ inline u_char pelco_GetVersion(void * __restrict p) * return: 0xFF and pelco_GetErrno() == ENOEXEC - error, any number is camera address */ -inline u_char pelco_GetCamNo(void * __restrict p) +inline u_char +pelco_GetCamNo(void * __restrict p) { u_char ver; u_char *ptr = (u_char *) p; - if (!p) { - pelcoSetErr(EINVAL, "Error:: invalid argument!\n"); + if (!p || !*ptr) { + pelcoSetErr(EINVAL, "invalid argument!\n"); return 0; } @@ -60,13 +99,13 @@ inline u_char pelco_GetCamNo(void * __restrict p) if (crcPelco(ver, p) == ptr[6]) return ptr[1]; - pelcoSetErr(ENOEXEC, "Error:: broken Pelco D packet!!!\n"); + pelcoSetErr(ENOEXEC, "broken Pelco D packet!!!\n"); break; case 'p': if (crcPelco(ver, p) == ptr[7]) return ptr[1] + 1; - pelcoSetErr(ENOEXEC, "Error:: broken Pelco P packet!!!\n"); + pelcoSetErr(ENOEXEC, "broken Pelco P packet!!!\n"); break; } @@ -81,14 +120,15 @@ inline u_char pelco_GetCamNo(void * __restrict p) * @data[2] = Output Data for commands 1 & 2 * return: 'd' - PelcoD, 'p' - PelcoP, 0 - unknown or bad packet */ -inline u_char pelco_GetCamCmdData(void * __restrict p, u_char * __restrict cam, +inline u_char +pelco_GetCamCmdData(void * __restrict p, u_char * __restrict cam, u_char * __restrict cmd, u_char * __restrict data) { u_char ret; u_char *ptr = (u_char *) p; - if (!p) { - pelcoSetErr(EINVAL, "Error:: invalid argument!\n"); + if (!p || !*ptr) { + pelcoSetErr(EINVAL, "invalid argument!\n"); return 0; } @@ -96,7 +136,7 @@ inline u_char pelco_GetCamCmdData(void * __restrict p, switch (ret) { case 'd': if (crcPelco(ret, p) != ptr[6]) { - pelcoSetErr(ENOEXEC, "Error:: broken Pelco D packet!!!\n"); + pelcoSetErr(ENOEXEC, "broken Pelco D packet!!!\n"); return 0; } @@ -105,7 +145,7 @@ inline u_char pelco_GetCamCmdData(void * __restrict p, break; case 'p': if (crcPelco(ret, p) != ptr[7]) { - pelcoSetErr(ENOEXEC, "Error:: broken Pelco P packet!!!\n"); + pelcoSetErr(ENOEXEC, "broken Pelco P packet!!!\n"); return 0; } @@ -128,13 +168,14 @@ inline u_char pelco_GetCamCmdData(void * __restrict p, * @cmd2 = Output typecasted commands 2 * return: 0xFF - error, !=0 return number arguments */ -inline u_char pelco_D_toCmd(u_char * __restrict cmd, - struct bitD_Cmd1 * __restrict cmd1, struct bitD_Cmd2 * __restrict cmd2) +inline u_char +pelco_D_toCmd(u_char * __restrict cmd, struct bitD_Cmd1 * __restrict cmd1, + struct bitD_Cmd2 * __restrict cmd2) { u_char ret = 0; if (!cmd) { - pelcoSetErr(EINVAL, "Error:: invalid argument!\n"); + pelcoSetErr(EINVAL, "invalid argument!\n"); return 0xFF; } @@ -157,13 +198,14 @@ inline u_char pelco_D_toCmd(u_char * __restrict cmd, * @cmd2 = Output typecasted commands 2 * return: 0xFF - error, !=0 return number arguments */ -inline u_char pelco_P_toCmd(u_char * __restrict cmd, - struct bitP_Cmd1 * __restrict cmd1, struct bitP_Cmd2 * __restrict cmd2) +inline u_char +pelco_P_toCmd(u_char * __restrict cmd, struct bitP_Cmd1 * __restrict cmd1, + struct bitP_Cmd2 * __restrict cmd2) { u_char ret = 0; if (!cmd) { - pelcoSetErr(EINVAL, "Error:: invalid argument!\n"); + pelcoSetErr(EINVAL, "invalid argument!\n"); return 0xFF; }