version 1.1.1.1.2.1, 2010/03/11 13:39:28
|
version 1.1.1.1.2.4, 2010/03/17 13:34:34
|
Line 60 inline void *pelcoOpen(u_char pelcoVer, u_char camNo)
|
Line 60 inline void *pelcoOpen(u_char pelcoVer, u_char camNo)
|
case 'D': |
case 'D': |
case 'd': |
case 'd': |
if (camNo < FIRST_CAM_D) { |
if (camNo < FIRST_CAM_D) { |
pelcoSetErr(ENOEXEC, "Error:: unsupported camera number %d!\n", camNo); | pelcoSetErr(ENOEXEC, "unsupported camera number %d!\n", camNo); |
return NULL; |
return NULL; |
} |
} |
|
|
Line 92 inline void *pelcoOpen(u_char pelcoVer, u_char camNo)
|
Line 92 inline void *pelcoOpen(u_char pelcoVer, u_char camNo)
|
p = pp; |
p = pp; |
break; |
break; |
default: |
default: |
pelcoSetErr(ENOEXEC, "Error:: unsupported Pelco protocol version!\n"); | pelcoSetErr(ENOEXEC, "unsupported Pelco protocol version!\n"); |
} |
} |
|
|
return p; |
return p; |
Line 122 inline void *pelcoLoad(u_char *buffer)
|
Line 122 inline void *pelcoLoad(u_char *buffer)
|
switch (pelco_GetVersion(buffer)) { |
switch (pelco_GetVersion(buffer)) { |
case 'd': |
case 'd': |
if (pelco_GetCamNo(buffer) < FIRST_CAM_D) { |
if (pelco_GetCamNo(buffer) < FIRST_CAM_D) { |
pelcoSetErr(ENOEXEC, "Error:: unsupported camera number %d!\n", | pelcoSetErr(ENOEXEC, "unsupported camera number %d!\n", |
pelco_GetCamNo(buffer)); |
pelco_GetCamNo(buffer)); |
return NULL; |
return NULL; |
} |
} |
Line 147 inline void *pelcoLoad(u_char *buffer)
|
Line 147 inline void *pelcoLoad(u_char *buffer)
|
p = pp; |
p = pp; |
break; |
break; |
default: |
default: |
pelcoSetErr(ENOEXEC, "Error:: unsupported Pelco protocol version!\n"); | pelcoSetErr(ENOEXEC, "unsupported Pelco protocol version!\n"); |
} |
} |
|
|
return p; |
return p; |
Line 168 inline u_char pelcoAddCmdData(void * __restrict p, u_c
|
Line 168 inline u_char pelcoAddCmdData(void * __restrict p, u_c
|
u_char *ptr = p; |
u_char *ptr = p; |
|
|
if (!p) { |
if (!p) { |
pelcoSetErr(EINVAL, "Error:: invalid argument!\n"); | pelcoSetErr(EINVAL, "invalid argument!\n"); |
return 0xFF; |
return 0xFF; |
} |
} |
|
|
switch (ptr[0]) { |
switch (ptr[0]) { |
case VER_D_SYNC: |
case VER_D_SYNC: |
if (ptr[1] < FIRST_CAM_D) { |
if (ptr[1] < FIRST_CAM_D) { |
pelcoSetErr(ENOEXEC, "Error:: unsupported camera number %d!\n", ptr[1]); | pelcoSetErr(ENOEXEC, "unsupported camera number %d!\n", ptr[1]); |
return 0xFF; |
return 0xFF; |
} |
} |
|
|
Line 187 inline u_char pelcoAddCmdData(void * __restrict p, u_c
|
Line 187 inline u_char pelcoAddCmdData(void * __restrict p, u_c
|
break; |
break; |
case VER_P_STX: |
case VER_P_STX: |
if (VER_P_ETX != ptr[6]) { |
if (VER_P_ETX != ptr[6]) { |
pelcoSetErr(ENOEXEC, "Error:: Broken Pelco P packet!\n"); | pelcoSetErr(ENOEXEC, "Broken Pelco P packet!\n"); |
return 0xFF; |
return 0xFF; |
} |
} |
|
|
Line 198 inline u_char pelcoAddCmdData(void * __restrict p, u_c
|
Line 198 inline u_char pelcoAddCmdData(void * __restrict p, u_c
|
pp->p_crc = crcPelco('p', p); |
pp->p_crc = crcPelco('p', p); |
break; |
break; |
default: |
default: |
pelcoSetErr(ENOEXEC, "Error:: Invalid protocol!\n"); | pelcoSetErr(ENOEXEC, "Invalid protocol!\n"); |
return 0xFF; |
return 0xFF; |
} |
} |
|
|
return ret; |
return ret; |
|
} |
|
|
|
/* |
|
* pelcoGetCmdData() Get from packet commands and datas with verify packet |
|
* @p = Input Packet structure |
|
* @cmd[2] = Output Commands 1 & 2 |
|
* @data[2] = Output Data for commands 1 & 2 |
|
* return: 'd' - PelcoD, 'p' - PelcoP, 0 - unknown or bad packet |
|
*/ |
|
inline u_char pelcoGetCmdData(void * __restrict p, u_char * __restrict cmd, u_char * __restrict data) |
|
{ |
|
return pelco_GetCamCmdData(p, NULL, cmd, data); |
|
} |
|
|
|
/* |
|
* pelcoChkSum() Check ot Correct check sum in packet |
|
* @p = Input Packet structure |
|
* @correct = Calculate new check sum if incorrect !=0, if ==0 only check |
|
* return: 0xFF - bad packet, 1 invalid check sum, 0 check sum is correct. |
|
*/ |
|
inline u_char pelcoChkSum(void * __restrict p, u_char correct) |
|
{ |
|
u_char sum, *ptr = p; |
|
pelco_d_t *pd = (pelco_d_t *) p; |
|
pelco_p_t *pp = (pelco_p_t *) p; |
|
|
|
if (!p) { |
|
pelcoSetErr(EINVAL, "invalid argument!\n"); |
|
return 0xFF; |
|
} |
|
|
|
switch (ptr[0]) { |
|
case VER_D_SYNC: |
|
if (ptr[1] < FIRST_CAM_D) { |
|
pelcoSetErr(ENOEXEC, "unsupported camera number %d!\n", ptr[1]); |
|
return 0xFF; |
|
} |
|
|
|
sum = crcPelco('d', p); |
|
if (correct) |
|
pd->d_crc = sum; |
|
break; |
|
case VER_P_STX: |
|
if (VER_P_ETX != ptr[6]) { |
|
pelcoSetErr(ENOEXEC, "Broken Pelco P packet!\n"); |
|
return 0xFF; |
|
} |
|
|
|
sum = crcPelco('p', p); |
|
if (correct) |
|
pp->p_crc = sum; |
|
break; |
|
default: |
|
pelcoSetErr(ENOEXEC, "Invalid protocol!\n"); |
|
return 0xFF; |
|
} |
|
|
|
return sum; |
} |
} |