ProtocolDevice.cpp
Go to the documentation of this file.
00001 
00002 /******************************************************************************
00003  * 
00004  * Copyright (c) 2012 
00005  * 
00006  * SCHUNK GmbH & Co. KG
00007  *  
00008  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
00009  * 
00010  * Project name: Drivers for "Amtec M5 Protocol" Electronics V4
00011  *                                                                        
00012  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
00013  * 
00014  * Email:robotics@schunk.com
00015  * 
00016  * ToDo: 
00017  * 
00018  * ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
00019  * 
00020  * Redistribution and use in source and binary forms, with or without 
00021  * modification, are permitted provided that the following conditions are met: 
00022  * 
00023  *  * Redistributions of source code must retain the above copyright 
00024  *    notice, this list of conditions and the following disclaimer. 
00025  *  * Redistributions in binary form must reproduce the above copyright 
00026  *    notice, this list of conditions and the following disclaimer in the 
00027  *    documentation and/or other materials provided with the distribution. 
00028  *  * Neither the name of SCHUNK GmbH & Co. KG nor the names of its 
00029  *    contributors may be used to endorse or promote products derived from 
00030  *    this software without specific prior written permission. 
00031  * 
00032  * This program is free software: you can redistribute it and/or modify 
00033  * it under the terms of the GNU Lesser General Public License LGPL as 
00034  * published by the Free Software Foundation, either version 3 of the 
00035  * License, or (at your option) any later version. 
00036  * 
00037  * This program is distributed in the hope that it will be useful, 
00038  * but WITHOUT ANY WARRANTY; without even the implied warranty of 
00039  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
00040  * GNU Lesser General Public License LGPL for more details. 
00041  * 
00042  * You should have received a copy of the GNU Lesser General Public 
00043  * License LGPL along with this program. 
00044  * If not, see <http://www.gnu.org/licenses/>.
00045  * 
00046  ******************************************************************************/
00047 
00048 
00049 #include "ProtocolDevice.h"
00050 
00051 // ========================================================================== ;
00052 //                                                                            ;
00053 // ---- private auxiliary functions ----------------------------------------- ;
00054 //                                                                            ;
00055 // ========================================================================== ;
00056 
00057 // ========================================================================== ;
00058 //                                                                            ;
00059 // ---- protected auxiliary functions --------------------------------------- ;
00060 //                                                                            ;
00061 // ========================================================================== ;
00062 
00063 int CProtocolDevice::write8Bytes(int iModuleId, bool bAck, void* pBytes ) 
00064 {
00065         EnterCriticalSection(&m_csDevice);
00066         m_iErrorState = 0;
00067         static CProtocolMessage clWrite, clRead;
00068 
00069         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
00070         memcpy( clWrite.m_aucMessageData, pBytes, 8 );
00071         clWrite.m_ucMessageLength = 8;
00072         clWrite.m_iModuleId = iModuleId;
00073         clRead = clWrite;
00074 
00075 //      warning("Sending %03x  %02x %02x %02x %02x %02x %02x %02x %02x", clWrite.m_uiMessageId, 
00076 //              clWrite.m_aucMessageData[0], clWrite.m_aucMessageData[1], clWrite.m_aucMessageData[2], clWrite.m_aucMessageData[3],
00077 //              clWrite.m_aucMessageData[4], clWrite.m_aucMessageData[5], clWrite.m_aucMessageData[6], clWrite.m_aucMessageData[7] );
00078 
00079         m_iErrorState = writeDevice(clWrite);
00080         if(m_iErrorState != 0)
00081         {
00082                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
00083                 LeaveCriticalSection(&m_csDevice);
00084                 return m_iErrorState;
00085         }
00086 
00087         if( bAck )
00088         {       
00089                         m_iErrorState = readDevice(clRead);
00090                         if(m_iErrorState != 0)
00091                         {
00092                                 //warning("wrong readDevice ErrorCode %i", m_iErrorState);
00093                                 LeaveCriticalSection(&m_csDevice);
00094                                 return m_iErrorState;
00095                         }
00096                         memcpy( pBytes, clRead.m_aucMessageData, clRead.m_ucMessageLength );
00097         }
00098         LeaveCriticalSection(&m_csDevice);
00099         return m_iErrorState;
00100 }
00101 
00102 int CProtocolDevice::getUnsignedLong(int iModuleId, unsigned long* puiData)
00103 {
00104         EnterCriticalSection(&m_csDevice);
00105         m_iErrorState = 0;
00106         bool bRecieved = false;
00107         static CProtocolMessage clRead;
00108         static CProtocolData clData;
00109         *puiData = 0;
00110 
00111         do
00112         {       
00113                 m_iErrorState = readDevice(clRead);
00114                 if(m_iErrorState != 0)
00115                 {
00116                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
00117                         LeaveCriticalSection(&m_csDevice);
00118                         return m_iErrorState;
00119                 }
00120                 bRecieved = true;
00121                 if(clRead.m_uiMessageId != MSGID_STATE + iModuleId)
00122                 {       
00123                         debug(1, "getUnsignedLong: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_STATE + iModuleId );
00124                         bRecieved = false;
00125                 }
00126         }
00127         while(!bRecieved);
00128         clData.aucData[0] = clRead.m_aucMessageData[0];
00129         clData.aucData[1] = clRead.m_aucMessageData[1];
00130         clData.aucData[2] = clRead.m_aucMessageData[2];
00131         clData.aucData[3] = clRead.m_aucMessageData[3];
00132         *puiData = clData.uiData;
00133         
00134         LeaveCriticalSection(&m_csDevice);
00135         return m_iErrorState;
00136 }
00137 
00138 int CProtocolDevice::readChar(int iModuleId, int iCommandId, int iParameterId, char* pcData)
00139 {
00140         EnterCriticalSection(&m_csDevice);
00141         m_iErrorState = 0;
00142         bool bRecieved = false;
00143         static CProtocolMessage clWrite, clRead;
00144 
00145         clWrite.m_uiMessageId = MSGID_GET + iModuleId;
00146         clWrite.m_aucMessageData[0] = iCommandId; 
00147         clWrite.m_aucMessageData[1] = iParameterId;
00148         clWrite.m_ucMessageLength = 2;
00149         clWrite.m_iModuleId = iModuleId;
00150         clRead = clWrite;
00151 
00152         m_iErrorState = writeDevice(clWrite);
00153         if(m_iErrorState != 0)
00154         {
00155                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
00156                 LeaveCriticalSection(&m_csDevice);
00157                 return m_iErrorState;
00158         }
00159 
00160         do
00161         {       
00162                 m_iErrorState = readDevice(clRead);
00163                 if(m_iErrorState != 0)
00164                 {
00165                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
00166                         LeaveCriticalSection(&m_csDevice);
00167                         return m_iErrorState;
00168                 }
00169                 bRecieved = true;
00170                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
00171                 {
00172                         debug(1, "readChar: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
00173                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00174                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00175                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00176                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00177                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00178                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00179                         bRecieved = false;
00180                 }
00181                 if(clRead.m_aucMessageData[0] != iCommandId)
00182                 {
00183                         debug(1,"readChar: wrong command ID");
00184                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00185                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00186                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00187                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00188                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00189                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00190                         bRecieved = false;
00191                 }
00192                 if(clRead.m_aucMessageData[1] != iParameterId)
00193                 {
00194                         debug(1,"readChar: wrong parameter ID");
00195                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00196                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00197                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00198                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00199                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00200                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00201                         bRecieved = false;
00202                 }
00203         }
00204         while(!bRecieved);
00205 
00206         *pcData = clRead.m_aucMessageData[2];
00207         LeaveCriticalSection(&m_csDevice);
00208 
00209         return m_iErrorState;
00210 }
00211 
00212 int CProtocolDevice::readUnsignedChar(int iModuleId, int iCommandId, int iParameterId, unsigned char* pucData)
00213 {
00214         EnterCriticalSection(&m_csDevice);
00215         m_iErrorState = 0;
00216         bool bRecieved = false;
00217         static CProtocolMessage clWrite, clRead;
00218 
00219         clWrite.m_uiMessageId = MSGID_GET + iModuleId;
00220         clWrite.m_aucMessageData[0] = iCommandId; 
00221         clWrite.m_aucMessageData[1] = iParameterId;
00222         clWrite.m_ucMessageLength = 2;
00223         clWrite.m_iModuleId = iModuleId;
00224         clRead = clWrite;
00225 
00226         m_iErrorState = writeDevice(clWrite);
00227         if(m_iErrorState != 0)
00228         {
00229                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
00230                 LeaveCriticalSection(&m_csDevice);
00231                 return m_iErrorState;
00232         }
00233 
00234         do
00235         {       
00236         m_iErrorState = readDevice(clRead);
00237                 if(m_iErrorState != 0)
00238                 {
00239                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
00240                         LeaveCriticalSection(&m_csDevice);
00241                         return m_iErrorState;
00242                 }
00243                 bRecieved = true;
00244                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
00245                 {
00246                         debug(1,"readUnsignedChar: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
00247                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00248                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00249                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00250                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00251                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00252                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00253                         bRecieved = false;
00254                 }
00255                 if(clRead.m_aucMessageData[0] != iCommandId)
00256                 {
00257                         debug(1,"readUnsignedChar: wrong command ID");
00258                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00259                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00260                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00261                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00262                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00263                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00264                         bRecieved = false;
00265                 }
00266                 if(clRead.m_aucMessageData[1] != iParameterId)
00267                 {
00268                         debug(1,"readUnsignedChar: wrong parameter ID");
00269                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00270                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00271                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00272                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00273                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00274                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00275                         bRecieved = false;
00276                 }
00277         }
00278         while(!bRecieved);
00279 
00280         *pucData = clRead.m_aucMessageData[2];
00281         LeaveCriticalSection(&m_csDevice);
00282 
00283         return m_iErrorState;
00284 }
00285 
00286 int CProtocolDevice::readShort(int iModuleId, int iCommandId, int iParameterId, short* piData)
00287 {
00288         EnterCriticalSection(&m_csDevice);
00289         m_iErrorState = 0;
00290         bool bRecieved = false;
00291         static CProtocolMessage clWrite, clRead;
00292         static CProtocolData clData;
00293 
00294         clWrite.m_uiMessageId = MSGID_GET + iModuleId;
00295         clWrite.m_aucMessageData[0] = iCommandId; 
00296         clWrite.m_aucMessageData[1] = iParameterId;
00297         clWrite.m_ucMessageLength = 2;
00298         clWrite.m_iModuleId = iModuleId;
00299         clRead = clWrite;
00300 
00301         m_iErrorState = writeDevice(clWrite);
00302         if(m_iErrorState != 0)
00303         {
00304                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
00305                 LeaveCriticalSection(&m_csDevice);
00306                 return m_iErrorState;
00307         }
00308 
00309         do
00310         {       
00311                 m_iErrorState = readDevice(clRead);
00312                 if(m_iErrorState != 0)
00313                 {
00314                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
00315                         LeaveCriticalSection(&m_csDevice);
00316                         return m_iErrorState;
00317                 }
00318                 bRecieved = true;
00319                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
00320                 {
00321                         debug(1,"readShort: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
00322                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00323                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00324                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00325                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00326                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00327                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00328                         bRecieved = false;
00329                 }
00330                 if(clRead.m_aucMessageData[0] != iCommandId)
00331                 {
00332                         debug(1,"readShort: wrong command ID");
00333                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00334                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00335                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00336                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00337                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00338                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00339                         bRecieved = false;
00340                 }
00341                 if(clRead.m_aucMessageData[1] != iParameterId)
00342                 {
00343                         debug(1,"readShort: wrong parameter ID");
00344                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00345                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00346                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00347                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00348                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00349                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00350                         bRecieved = false;
00351                 }
00352         }
00353         while(!bRecieved);
00354 
00355         clData.aucData[0] = clRead.m_aucMessageData[2];
00356         clData.aucData[1] = clRead.m_aucMessageData[3];
00357         *piData = clData.aiData[0];
00358         LeaveCriticalSection(&m_csDevice);
00359 
00360         return m_iErrorState;
00361 }
00362 
00363 int CProtocolDevice::readUnsignedShort(int iModuleId, int iCommandId, int iParameterId, unsigned short* puiData)
00364 {
00365         EnterCriticalSection(&m_csDevice);
00366         m_iErrorState = 0;
00367         bool bRecieved = false;
00368         static CProtocolMessage clWrite, clRead;
00369         static CProtocolData clData;
00370 
00371         clWrite.m_uiMessageId = MSGID_GET + iModuleId;
00372         clWrite.m_aucMessageData[0] = iCommandId; 
00373         clWrite.m_aucMessageData[1] = iParameterId;
00374         clWrite.m_ucMessageLength = 2;
00375         clWrite.m_iModuleId = iModuleId;
00376         clRead = clWrite;
00377 
00378         m_iErrorState = writeDevice(clWrite);
00379         if(m_iErrorState != 0)
00380         {
00381                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
00382                 LeaveCriticalSection(&m_csDevice);
00383                 return m_iErrorState;
00384         }
00385 
00386         do
00387         {       
00388                 m_iErrorState = readDevice(clRead);
00389                 if(m_iErrorState != 0)
00390                 {
00391                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
00392                         LeaveCriticalSection(&m_csDevice);
00393                         return m_iErrorState;
00394                 }
00395                 bRecieved = true;
00396                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
00397                 {
00398                         debug(1,"readUnsignedShort: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
00399                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00400                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00401                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00402                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00403                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00404                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00405                         bRecieved = false;
00406                 }
00407                 if(clRead.m_aucMessageData[0] != iCommandId)
00408                 {
00409                         debug(1,"readUnsignedShort: wrong command ID");
00410                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00411                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00412                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00413                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00414                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00415                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00416                         bRecieved = false;
00417                 }
00418                 if(clRead.m_aucMessageData[1] != iParameterId)
00419                 {
00420                         debug(1,"readUnsignedShort: wrong parameter ID");
00421                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00422                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00423                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00424                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00425                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00426                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00427                         bRecieved = false;
00428                 }
00429         }
00430         while(!bRecieved);
00431 
00432         clData.aucData[0] = clRead.m_aucMessageData[2];
00433         clData.aucData[1] = clRead.m_aucMessageData[3];
00434         *puiData = clData.auiData[0];
00435         LeaveCriticalSection(&m_csDevice);
00436 
00437         return m_iErrorState;
00438 }
00439 
00440 int CProtocolDevice::readLong(int iModuleId, int iCommandId, int iParameterId, long* piData)
00441 {
00442         EnterCriticalSection(&m_csDevice);
00443         m_iErrorState = 0;
00444         bool bRecieved = false;
00445         static CProtocolMessage clWrite, clRead;
00446         static CProtocolData clData;
00447 
00448         clWrite.m_uiMessageId = MSGID_GET + iModuleId;
00449         clWrite.m_aucMessageData[0] = iCommandId; 
00450         clWrite.m_aucMessageData[1] = iParameterId;
00451         clWrite.m_ucMessageLength = 2;
00452         clWrite.m_iModuleId = iModuleId;
00453         clRead = clWrite;
00454 
00455         m_iErrorState = writeDevice(clWrite);
00456         if(m_iErrorState != 0)
00457         {
00458                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
00459                 LeaveCriticalSection(&m_csDevice);
00460                 return m_iErrorState;
00461         }
00462 
00463         do
00464         {       
00465                 m_iErrorState = readDevice(clRead);
00466                 if(m_iErrorState != 0)
00467                 {
00468                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
00469                         LeaveCriticalSection(&m_csDevice);
00470                         return m_iErrorState;
00471                 }
00472                 bRecieved = true;
00473                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
00474                 {
00475                         debug(1,"readLong: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
00476                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00477                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00478                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00479                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00480                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00481                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00482                         bRecieved = false;
00483                 }
00484                 if(clRead.m_aucMessageData[0] != iCommandId)
00485                 {
00486                         debug(1,"readLong: wrong command ID");
00487                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00488                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00489                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00490                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00491                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00492                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00493                         bRecieved = false;
00494                 }
00495                 if(clRead.m_aucMessageData[1] != iParameterId)
00496                 {
00497                         debug(1,"readLong: wrong parameter ID");
00498                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00499                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00500                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00501                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00502                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00503                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00504                         bRecieved = false;
00505                 }
00506         }
00507         while(!bRecieved);
00508 
00509         clData.aucData[0] = clRead.m_aucMessageData[2];
00510         clData.aucData[1] = clRead.m_aucMessageData[3];
00511         clData.aucData[2] = clRead.m_aucMessageData[4];
00512         clData.aucData[3] = clRead.m_aucMessageData[5];
00513         *piData = clData.iData;
00514         LeaveCriticalSection(&m_csDevice);
00515 
00516         return m_iErrorState;
00517 }
00518 
00519 int CProtocolDevice::readUnsignedLong(int iModuleId, int iCommandId, int iParameterId, unsigned long* puiData)
00520 {
00521         EnterCriticalSection(&m_csDevice);
00522         m_iErrorState = 0;
00523         bool bRecieved = false;
00524         static CProtocolMessage clWrite, clRead;
00525         static CProtocolData clData;
00526 
00527         clWrite.m_uiMessageId = MSGID_GET + iModuleId;
00528         clWrite.m_aucMessageData[0] = iCommandId; 
00529         clWrite.m_aucMessageData[1] = iParameterId;
00530         clWrite.m_ucMessageLength = 2;
00531         clWrite.m_iModuleId = iModuleId;
00532         clRead = clWrite;
00533 
00534         m_iErrorState = writeDevice(clWrite);
00535         if(m_iErrorState != 0)
00536         {
00537                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
00538                 LeaveCriticalSection(&m_csDevice);
00539                 return m_iErrorState;
00540         }
00541         do
00542         {
00543                 m_iErrorState = readDevice(clRead);
00544                 if(m_iErrorState != 0)
00545                 {
00546                         //warning( "wrong readDevice ErrorCode %i", m_iErrorState );
00547                         LeaveCriticalSection(&m_csDevice);
00548                         return m_iErrorState;
00549                 }
00550                 bRecieved = true;
00551                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
00552                 {
00553                         debug(1,"readUnsignedLong: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
00554                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00555                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00556                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00557                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00558                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00559                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00560                         bRecieved = false;
00561                 }
00562 
00563                 if(clRead.m_aucMessageData[0] != iCommandId)
00564                 {
00565                         debug(1,"readUnsignedLong: wrong command ID");
00566                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00567                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00568                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00569                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00570                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00571                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00572                         bRecieved = false;
00573                 }
00574 
00575                 if(clRead.m_aucMessageData[1] != iParameterId)
00576                 {
00577                         debug(1,"readUnsignedLong: wrong parameter ID");
00578                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00579                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00580                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00581                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00582                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00583                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00584                         bRecieved = false;
00585                 }
00586         }
00587         while(!bRecieved);
00588 
00589         clData.aucData[0] = clRead.m_aucMessageData[2];
00590         clData.aucData[1] = clRead.m_aucMessageData[3];
00591         clData.aucData[2] = clRead.m_aucMessageData[4];
00592         clData.aucData[3] = clRead.m_aucMessageData[5];
00593         *puiData = clData.uiData;
00594         LeaveCriticalSection(&m_csDevice);
00595 
00596         return m_iErrorState;
00597 }
00598 
00599 int CProtocolDevice::readFloat(int iModuleId, int iCommandId, int iParameterId, float* pfData)
00600 {
00601         EnterCriticalSection(&m_csDevice);
00602         m_iErrorState = 0;
00603         bool bRecieved = false;
00604         static CProtocolMessage clWrite, clRead;
00605         static CProtocolData clData;
00606 
00607         clWrite.m_uiMessageId = MSGID_GET + iModuleId;
00608         clWrite.m_aucMessageData[0] = iCommandId; 
00609         clWrite.m_aucMessageData[1] = iParameterId;
00610         clWrite.m_ucMessageLength = 2;
00611         clWrite.m_iModuleId = iModuleId;
00612         clRead = clWrite;
00613 
00614         m_iErrorState = writeDevice(clWrite);
00615         if(m_iErrorState != 0)
00616         {
00617                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
00618                 LeaveCriticalSection(&m_csDevice);
00619                 return m_iErrorState;
00620         }
00621         
00622         do
00623         {
00624                 m_iErrorState = readDevice(clRead);
00625                 if(m_iErrorState != 0)
00626                 {
00627 //                      warning("wrong readDevice ErrorCode %i", m_iErrorState);
00628                         LeaveCriticalSection(&m_csDevice);
00629                         return m_iErrorState;
00630                 }
00631                 bRecieved = true;
00632                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
00633                 {
00634                         debug(1,"readFloat: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
00635                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00636                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00637                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00638                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00639                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00640                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00641                         bRecieved = false;
00642                 }
00643                 if(clRead.m_aucMessageData[0] != iCommandId)
00644                 {
00645                         debug(1,"readFloat: wrong command ID");
00646                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00647                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00648                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00649                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00650                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00651                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00652                         bRecieved = false;
00653                 }
00654                 if(clRead.m_aucMessageData[1] != iParameterId)
00655                 {
00656                         debug(1,"readFloat: wrong parameter ID");
00657                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00658                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00659                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00660                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00661                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00662                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00663                         bRecieved = false;
00664                 }
00665         }while(!bRecieved);
00666 
00667         clData.aucData[0] = clRead.m_aucMessageData[2];
00668         clData.aucData[1] = clRead.m_aucMessageData[3];
00669         clData.aucData[2] = clRead.m_aucMessageData[4];
00670         clData.aucData[3] = clRead.m_aucMessageData[5];
00671         *pfData = clData.fData;
00672         LeaveCriticalSection(&m_csDevice);
00673 
00674         return m_iErrorState;
00675 }
00676 
00677 int CProtocolDevice::readLongUnsignedChars(int iModuleId, int iCommandId, int iParameterId, long* piData, unsigned char* pucData1, unsigned char* pucData2)
00678 {
00679         EnterCriticalSection(&m_csDevice);
00680         m_iErrorState = 0;
00681         bool bRecieved = false;
00682         static CProtocolMessage clWrite, clRead;
00683         static CProtocolData clData;
00684 
00685         clWrite.m_uiMessageId = MSGID_GET + iModuleId;
00686         clWrite.m_aucMessageData[0] = iCommandId; 
00687         clWrite.m_aucMessageData[1] = iParameterId;
00688         clWrite.m_ucMessageLength = 2;
00689         clWrite.m_iModuleId = iModuleId;
00690         clRead = clWrite;
00691 
00692         m_iErrorState = writeDevice(clWrite);
00693         if(m_iErrorState != 0)
00694         {
00695                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
00696                 LeaveCriticalSection(&m_csDevice);
00697                 return m_iErrorState;
00698         }
00699 
00700         do
00701         {       
00702                 m_iErrorState = readDevice(clRead);
00703                 if(m_iErrorState != 0)
00704                 {
00705                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
00706                         LeaveCriticalSection(&m_csDevice);
00707                         return m_iErrorState;
00708                 }
00709                 bRecieved = true;
00710                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
00711                 {
00712                         debug(1,"readLongUnsignedChars: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
00713                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00714                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00715                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00716                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00717                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00718                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00719                         bRecieved = false;
00720                 }
00721                 if(clRead.m_aucMessageData[0] != iCommandId)
00722                 {
00723                         debug(1,"readLongUnsignedChars: wrong command ID");
00724                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00725                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00726                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00727                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00728                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00729                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00730                         bRecieved = false;
00731                 }
00732                 if(clRead.m_aucMessageData[1] != iParameterId)
00733                 {
00734                         debug(1,"readLongUnsignedChars: wrong parameter ID");
00735                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00736                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00737                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00738                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00739                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00740                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00741                         bRecieved = false;
00742                 }
00743         }
00744         while(!bRecieved);
00745 
00746         clData.aucData[0] = clRead.m_aucMessageData[2];
00747         clData.aucData[1] = clRead.m_aucMessageData[3];
00748         clData.aucData[2] = clRead.m_aucMessageData[4];
00749         clData.aucData[3] = clRead.m_aucMessageData[5];
00750         *piData = clData.iData;
00751         *pucData1 = clRead.m_aucMessageData[6];
00752         *pucData2 = clRead.m_aucMessageData[7];
00753         LeaveCriticalSection(&m_csDevice);
00754 
00755         return m_iErrorState;
00756 }
00757 
00758 int CProtocolDevice::readFloatUnsignedChars(int iModuleId, int iCommandId, int iParameterId, float* pfData, unsigned char* pucData1, unsigned char* pucData2)
00759 {
00760         EnterCriticalSection(&m_csDevice);
00761         m_iErrorState = 0;
00762         bool bRecieved = false;
00763         static CProtocolMessage clWrite, clRead;
00764         static CProtocolData clData;
00765 
00766         clWrite.m_uiMessageId = MSGID_GET + iModuleId;
00767         clWrite.m_aucMessageData[0] = iCommandId; 
00768         clWrite.m_aucMessageData[1] = iParameterId;
00769         clWrite.m_ucMessageLength = 2;
00770         clWrite.m_iModuleId = iModuleId;
00771         clRead = clWrite;
00772 
00773         m_iErrorState = writeDevice(clWrite);
00774         if(m_iErrorState != 0)
00775         {
00776                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
00777                 LeaveCriticalSection(&m_csDevice);
00778                 return m_iErrorState;
00779         }
00780 
00781         do
00782         {       
00783                 m_iErrorState = readDevice(clRead);
00784                 if(m_iErrorState != 0)
00785                 {
00786                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
00787                         LeaveCriticalSection(&m_csDevice);
00788                         return m_iErrorState;
00789                 }
00790                 bRecieved = true;
00791                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
00792                 {
00793                         debug(1,"readFloatUnsignedChars: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
00794                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00795                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00796                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00797                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00798                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00799                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00800                         bRecieved = false;
00801                 }
00802                 if(clRead.m_aucMessageData[0] != iCommandId)
00803                 {
00804                         debug(1,"readFloatUnsignedChars: wrong command ID");
00805                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00806                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00807                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00808                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00809                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00810                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00811                         bRecieved = false;
00812                 }
00813                 if(clRead.m_aucMessageData[1] != iParameterId)
00814                 {
00815                         debug(1,"readFloatUnsignedChars: wrong parameter ID");
00816                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00817                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00818                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00819                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00820                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00821                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00822                         bRecieved = false;
00823                 }
00824         }
00825         while(!bRecieved);
00826 
00827         clData.aucData[0] = clRead.m_aucMessageData[2];
00828         clData.aucData[1] = clRead.m_aucMessageData[3];
00829         clData.aucData[2] = clRead.m_aucMessageData[4];
00830         clData.aucData[3] = clRead.m_aucMessageData[5];
00831         *pfData = clData.fData;
00832         *pucData1 = clRead.m_aucMessageData[6];
00833         *pucData2 = clRead.m_aucMessageData[7];
00834         LeaveCriticalSection(&m_csDevice);
00835 
00836         return m_iErrorState;
00837 }
00838 
00839 int CProtocolDevice::writeChar(int iModuleId, int iCommandId, int iParameterId, char cData)
00840 {
00841         EnterCriticalSection(&m_csDevice);
00842         m_iErrorState = 0;
00843         bool bRecieved = false;
00844         static CProtocolMessage clWrite, clRead;
00845 
00846         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
00847         clWrite.m_aucMessageData[0] = iCommandId; 
00848         clWrite.m_aucMessageData[1] = iParameterId;
00849         clWrite.m_aucMessageData[2] = cData;
00850         clWrite.m_ucMessageLength = 3;
00851         clWrite.m_iModuleId = iModuleId;
00852         clRead = clWrite;
00853 
00854         m_iErrorState = writeDevice(clWrite);
00855         if(m_iErrorState != 0)
00856         {
00857                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
00858                 LeaveCriticalSection(&m_csDevice);
00859                 return m_iErrorState;
00860         }
00861 
00862         do
00863         {       
00864                 m_iErrorState = readDevice(clRead);
00865                 if(m_iErrorState != 0)
00866                 {
00867                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
00868                         LeaveCriticalSection(&m_csDevice);
00869                         return m_iErrorState;
00870                 }
00871                 bRecieved = true;
00872                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
00873                 {
00874                         debug(1,"writeChar: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
00875                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00876                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00877                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00878                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00879                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00880                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00881                         bRecieved = false;
00882                 }
00883                 if(clRead.m_aucMessageData[0] != iCommandId)
00884                 {
00885                         debug(1,"writeChar: wrong command ID");
00886                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00887                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00888                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00889                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00890                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00891                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00892                         bRecieved = false;
00893                 }
00894                 if(clRead.m_aucMessageData[1] != iParameterId)
00895                 {
00896                         debug(1,"writeChar: wrong parameter ID");
00897                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00898                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00899                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00900                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00901                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00902                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00903                         bRecieved = false;
00904                 }
00905         }
00906         while(!bRecieved);
00907         LeaveCriticalSection(&m_csDevice);
00908 
00909         return m_iErrorState;
00910 }
00911 
00912 int CProtocolDevice::writeUnsignedChar(int iModuleId, int iCommandId, int iParameterId, unsigned char ucData)
00913 {
00914         EnterCriticalSection(&m_csDevice);
00915         m_iErrorState = 0;
00916         bool bRecieved = false;
00917         static CProtocolMessage clWrite, clRead;
00918 
00919         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
00920         clWrite.m_aucMessageData[0] = iCommandId; 
00921         clWrite.m_aucMessageData[1] = iParameterId;
00922         clWrite.m_aucMessageData[2] = ucData;
00923         clWrite.m_ucMessageLength = 3;
00924         clWrite.m_iModuleId = iModuleId;
00925         clRead = clWrite;
00926 
00927         m_iErrorState = writeDevice(clWrite);
00928         if(m_iErrorState != 0)
00929         {
00930                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
00931                 LeaveCriticalSection(&m_csDevice);
00932                 return m_iErrorState;
00933         }
00934 
00935         do
00936         {       
00937                 m_iErrorState = readDevice(clRead);
00938                 if(m_iErrorState != 0)
00939                 {
00940                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
00941                         LeaveCriticalSection(&m_csDevice);
00942                         return m_iErrorState;
00943                 }
00944                 bRecieved = true;
00945                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
00946                 {
00947                         debug(1,"writeUnsignedChar: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
00948                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00949                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00950                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00951                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00952                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00953                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00954                         bRecieved = false;
00955                 }
00956                 if(clRead.m_aucMessageData[0] != iCommandId)
00957                 {
00958                         debug(1,"writeUnsignedChar: wrong command ID");
00959                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00960                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00961                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00962                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00963                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00964                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00965                         bRecieved = false;
00966                 }
00967                 if(clRead.m_aucMessageData[1] != iParameterId)
00968                 {
00969                         debug(1,"writeUnsignedChar: wrong parameter ID");
00970                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
00971                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
00972                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
00973                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
00974                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
00975                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
00976                         bRecieved = false;
00977                 }
00978         }
00979         while(!bRecieved);
00980         LeaveCriticalSection(&m_csDevice);
00981 
00982         return m_iErrorState;
00983 }
00984 
00985 int CProtocolDevice::writeShort(int iModuleId, int iCommandId, int iParameterId, short iData)
00986 {
00987         EnterCriticalSection(&m_csDevice);
00988         m_iErrorState = 0;
00989         bool bRecieved = false;
00990         static CProtocolMessage clWrite, clRead;
00991         static CProtocolData clData;
00992 
00993         clData.aiData[0] = iData;
00994         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
00995         clWrite.m_aucMessageData[0] = iCommandId; 
00996         clWrite.m_aucMessageData[1] = iParameterId;
00997         clWrite.m_aucMessageData[2] = clData.aucData[0];
00998         clWrite.m_aucMessageData[3] = clData.aucData[1];
00999         clWrite.m_ucMessageLength = 4;
01000         clWrite.m_iModuleId = iModuleId;
01001         clRead = clWrite;
01002 
01003         m_iErrorState = writeDevice(clWrite);
01004         if(m_iErrorState != 0)
01005         {
01006                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
01007                 LeaveCriticalSection(&m_csDevice);
01008                 return m_iErrorState;
01009         }
01010 
01011         do
01012         {       
01013                 m_iErrorState = readDevice(clRead);
01014                 if(m_iErrorState != 0)
01015                 {
01016                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
01017                         LeaveCriticalSection(&m_csDevice);
01018                         return m_iErrorState;
01019                 }
01020                 bRecieved = true;
01021                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
01022                 {
01023                         debug(1,"writeShort: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
01024                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01025                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01026                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01027                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01028                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01029                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01030                         bRecieved = false;
01031                 }
01032                 if(clRead.m_aucMessageData[0] != iCommandId)
01033                 {
01034                         debug(1,"writeShort: wrong command ID");
01035                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01036                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01037                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01038                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01039                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01040                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01041                         bRecieved = false;
01042                 }
01043                 if(clRead.m_aucMessageData[1] != iParameterId)
01044                 {
01045                         debug(1,"writeShort: wrong parameter ID");
01046                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01047                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01048                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01049                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01050                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01051                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01052                         bRecieved = false;
01053                 }
01054         }
01055         while(!bRecieved);
01056         LeaveCriticalSection(&m_csDevice);
01057 
01058         return m_iErrorState;
01059 }
01060 
01061 int CProtocolDevice::writeUnsignedShort(int iModuleId, int iCommandId, int iParameterId, unsigned short uiData)
01062 {
01063         EnterCriticalSection(&m_csDevice);
01064         m_iErrorState = 0;
01065         bool bRecieved = false;
01066         static CProtocolMessage clWrite, clRead;
01067         static CProtocolData clData;
01068 
01069         clData.auiData[0] = uiData;
01070         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
01071         clWrite.m_aucMessageData[0] = iCommandId; 
01072         clWrite.m_aucMessageData[1] = iParameterId;
01073         clWrite.m_aucMessageData[2] = clData.aucData[0];
01074         clWrite.m_aucMessageData[3] = clData.aucData[1];
01075         clWrite.m_ucMessageLength = 4;
01076         clWrite.m_iModuleId = iModuleId;
01077         clRead = clWrite;
01078 
01079         m_iErrorState = writeDevice(clWrite);
01080         if(m_iErrorState != 0)
01081         {
01082                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
01083                 LeaveCriticalSection(&m_csDevice);
01084                 return m_iErrorState;
01085         }
01086 
01087         do
01088         {       
01089                 m_iErrorState = readDevice(clRead);
01090                 if(m_iErrorState != 0)
01091                 {
01092                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
01093                         LeaveCriticalSection(&m_csDevice);
01094                         return m_iErrorState;
01095                 }
01096                 bRecieved = true;
01097                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
01098                 {
01099                         debug(1,"writeUnsignedShort: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
01100                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01101                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01102                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01103                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01104                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01105                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01106                         bRecieved = false;
01107                 }
01108                 if(clRead.m_aucMessageData[0] != iCommandId)
01109                 {
01110                         debug(1,"writeUnsignedShort: wrong command ID");
01111                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01112                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01113                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01114                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01115                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01116                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01117                         bRecieved = false;
01118                 }
01119                 if(clRead.m_aucMessageData[1] != iParameterId)
01120                 {
01121                         debug(1,"writeUnsignedShort: wrong parameter ID");
01122                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01123                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01124                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01125                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01126                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01127                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01128                         bRecieved = false;
01129                 }
01130         }
01131         while(!bRecieved);
01132         LeaveCriticalSection(&m_csDevice);
01133 
01134         return m_iErrorState;
01135 }
01136 
01137 int CProtocolDevice::writeLong(int iModuleId, int iCommandId, int iParameterId, long iData)
01138 {
01139         EnterCriticalSection(&m_csDevice);
01140         m_iErrorState = 0;
01141         bool bRecieved = false;
01142         static CProtocolMessage clWrite, clRead;
01143         static CProtocolData clData;
01144 
01145         clData.iData = iData;
01146         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
01147         clWrite.m_aucMessageData[0] = iCommandId; 
01148         clWrite.m_aucMessageData[1] = iParameterId;
01149         clWrite.m_aucMessageData[2] = clData.aucData[0];
01150         clWrite.m_aucMessageData[3] = clData.aucData[1];
01151         clWrite.m_aucMessageData[4] = clData.aucData[2];
01152         clWrite.m_aucMessageData[5] = clData.aucData[3];
01153         clWrite.m_ucMessageLength = 6;
01154         clWrite.m_iModuleId = iModuleId;
01155         clRead = clWrite;
01156 
01157         m_iErrorState = writeDevice(clWrite);
01158         if(m_iErrorState != 0)
01159         {
01160                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
01161                 LeaveCriticalSection(&m_csDevice);
01162                 return m_iErrorState;
01163         }
01164 
01165         do
01166         {       
01167                 m_iErrorState = readDevice(clRead);
01168                 if(m_iErrorState != 0)
01169                 {
01170                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
01171                         LeaveCriticalSection(&m_csDevice);
01172                         return m_iErrorState;
01173                 }
01174                 bRecieved = true;
01175                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
01176                 {
01177                         debug(1,"writeLong: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
01178                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01179                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01180                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01181                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01182                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01183                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01184                         bRecieved = false;
01185                 }
01186                 if(clRead.m_aucMessageData[0] != iCommandId)
01187                 {
01188                         debug(1,"writeLong: wrong command ID");
01189                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01190                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01191                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01192                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01193                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01194                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01195                         bRecieved = false;
01196                 }
01197                 if(clRead.m_aucMessageData[1] != iParameterId)
01198                 {
01199                         debug(1,"writeLong: wrong parameter ID");
01200                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01201                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01202                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01203                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01204                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01205                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01206                         bRecieved = false;
01207                 }
01208         }
01209         while(!bRecieved);
01210         LeaveCriticalSection(&m_csDevice);
01211 
01212         return m_iErrorState;
01213 }
01214 
01215 int CProtocolDevice::writeUnsignedLong(int iModuleId, int iCommandId, int iParameterId, unsigned long uiData)
01216 {
01217         EnterCriticalSection(&m_csDevice);
01218         m_iErrorState = 0;
01219         bool bRecieved = false;
01220         static CProtocolMessage clWrite, clRead;
01221         static CProtocolData clData;
01222 
01223         clData.uiData = uiData;
01224         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
01225         clWrite.m_aucMessageData[0] = iCommandId; 
01226         clWrite.m_aucMessageData[1] = iParameterId;
01227         clWrite.m_aucMessageData[2] = clData.aucData[0];
01228         clWrite.m_aucMessageData[3] = clData.aucData[1];
01229         clWrite.m_aucMessageData[4] = clData.aucData[2];
01230         clWrite.m_aucMessageData[5] = clData.aucData[3];
01231         clWrite.m_ucMessageLength = 6;
01232         clWrite.m_iModuleId = iModuleId;
01233         clRead = clWrite;
01234 
01235         m_iErrorState = writeDevice(clWrite);
01236         if(m_iErrorState != 0)
01237         {
01238                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
01239                 LeaveCriticalSection(&m_csDevice);
01240                 return m_iErrorState;
01241         }
01242 
01243         do
01244         {       
01245                 m_iErrorState = readDevice(clRead);
01246                 if(m_iErrorState != 0)
01247                 {
01248                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
01249                         LeaveCriticalSection(&m_csDevice);
01250                         return m_iErrorState;
01251                 }
01252                 bRecieved = true;
01253                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
01254                 {
01255                         debug(1,"writeUnsignedLong: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
01256                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01257                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01258                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01259                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01260                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01261                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01262                         bRecieved = false;
01263                 }
01264                 if(clRead.m_aucMessageData[0] != iCommandId)
01265                 {
01266                         debug(1,"writeUnsignedLong: wrong command ID");
01267                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01268                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01269                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01270                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01271                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01272                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01273                         bRecieved = false;
01274                 }
01275                 if(clRead.m_aucMessageData[1] != iParameterId)
01276                 {
01277                         debug(1,"writeUnsignedLong: wrong parameter ID");
01278                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01279                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01280                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01281                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01282                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01283                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01284                         bRecieved = false;
01285                 }
01286         }
01287         while(!bRecieved);
01288         LeaveCriticalSection(&m_csDevice);
01289 
01290         return m_iErrorState;
01291 }
01292 
01293 int CProtocolDevice::writeFloat(int iModuleId, int iCommandId, int iParameterId, float fData)
01294 {
01295         EnterCriticalSection(&m_csDevice);
01296         m_iErrorState = 0;
01297         bool bRecieved = false;
01298         static CProtocolMessage clWrite, clRead;
01299         static CProtocolData clData;
01300 
01301         clData.fData = fData;
01302         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
01303         clWrite.m_aucMessageData[0] = iCommandId; 
01304         clWrite.m_aucMessageData[1] = iParameterId;
01305         clWrite.m_aucMessageData[2] = clData.aucData[0];
01306         clWrite.m_aucMessageData[3] = clData.aucData[1];
01307         clWrite.m_aucMessageData[4] = clData.aucData[2];
01308         clWrite.m_aucMessageData[5] = clData.aucData[3];
01309         clWrite.m_ucMessageLength = 6;
01310         clWrite.m_iModuleId = iModuleId;
01311         clRead = clWrite;
01312 
01313         m_iErrorState = writeDevice(clWrite);
01314         if(m_iErrorState != 0)
01315         {
01316                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
01317                 LeaveCriticalSection(&m_csDevice);
01318                 return m_iErrorState;
01319         }
01320 
01321         do
01322         {       
01323                 m_iErrorState = readDevice(clRead);
01324                 if(m_iErrorState != 0)
01325                 {
01326                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
01327                         LeaveCriticalSection(&m_csDevice);
01328                         return m_iErrorState;
01329                 }
01330                 bRecieved = true;
01331                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
01332                 {
01333                         debug(1,"writeFloat: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
01334                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01335                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01336                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01337                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01338                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01339                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01340                         bRecieved = false;
01341                 }
01342                 if(clRead.m_aucMessageData[0] != iCommandId)
01343                 {
01344                         debug(1,"writeFloat: wrong command ID");
01345                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01346                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01347                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01348                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01349                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01350                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01351                         bRecieved = false;
01352                 }
01353                 if(clRead.m_aucMessageData[1] != iParameterId)
01354                 {
01355                         debug(1,"writeFloat: wrong parameter ID");
01356                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01357                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01358                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01359                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01360                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01361                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01362                         bRecieved = false;
01363                 }
01364         }
01365         while(!bRecieved);
01366         LeaveCriticalSection(&m_csDevice);
01367 
01368         return m_iErrorState;
01369 }
01370 
01371 int CProtocolDevice::writeAll(int iCommandId, int iParameterId)
01372 {
01373         EnterCriticalSection(&m_csDevice);
01374         m_iErrorState = 0;
01375         static CProtocolMessage clWrite, clRead;
01376 
01377         clWrite.m_uiMessageId = MSGID_ALL;
01378         clWrite.m_aucMessageData[0] = iCommandId; 
01379         clWrite.m_aucMessageData[1] = iParameterId;
01380         clWrite.m_ucMessageLength = 2;
01381         clWrite.m_iModuleId = 0;
01382 
01383         m_iErrorState = writeDevice(clWrite);
01384         if(m_iErrorState != 0)
01385         {
01386                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
01387                 LeaveCriticalSection(&m_csDevice);
01388                 return m_iErrorState;
01389         }
01390 
01391         LeaveCriticalSection(&m_csDevice);
01392 
01393         return m_iErrorState;
01394 }
01395 
01396 int CProtocolDevice::writeCommand(int iModuleId, int iCommandId)
01397 {
01398         EnterCriticalSection(&m_csDevice);
01399         m_iErrorState = 0;
01400         bool bRecieved = false;
01401         static CProtocolMessage clWrite, clRead;
01402 
01403         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
01404         clWrite.m_aucMessageData[0] = iCommandId; 
01405         clWrite.m_ucMessageLength = 1;
01406         clWrite.m_iModuleId = iModuleId;
01407         clRead = clWrite;
01408 
01409         m_iErrorState = writeDevice(clWrite);
01410         if(m_iErrorState != 0)
01411         {
01412                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
01413                 LeaveCriticalSection(&m_csDevice);
01414                 return m_iErrorState;
01415         }
01416 
01417         do
01418         {       
01419                 m_iErrorState = readDevice(clRead);
01420                 if(m_iErrorState != 0)
01421                 {
01422                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
01423                         LeaveCriticalSection(&m_csDevice);
01424                         return m_iErrorState;
01425                 }
01426                 bRecieved = true;
01427                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
01428                 {
01429                         debug(1,"writeCommand: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
01430                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01431                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01432                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01433                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01434                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01435                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01436                         bRecieved = false;
01437                 }
01438                 if(clRead.m_aucMessageData[0] != iCommandId)
01439                 {
01440                         debug(1,"writeCommand: wrong command ID");
01441                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01442                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01443                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01444                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01445                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01446                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01447                         bRecieved = false;
01448                 }
01449         }
01450         while(!bRecieved);
01451         LeaveCriticalSection(&m_csDevice);
01452 
01453         return m_iErrorState;
01454 }
01455 
01456 int CProtocolDevice::writeLongShort(int iModuleId, int iCommandId, int iParameterId, long iData, short iTime)
01457 {
01458         EnterCriticalSection(&m_csDevice);
01459         m_iErrorState = 0;
01460         bool bRecieved = false;
01461         static CProtocolMessage clWrite, clRead;
01462         static CProtocolData clData;
01463 
01464         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
01465         clWrite.m_aucMessageData[0] = iCommandId; 
01466         clWrite.m_aucMessageData[1] = iParameterId;
01467         clData.iData = iData;
01468         clWrite.m_aucMessageData[2] = clData.aucData[0];
01469         clWrite.m_aucMessageData[3] = clData.aucData[1];
01470         clWrite.m_aucMessageData[4] = clData.aucData[2];
01471         clWrite.m_aucMessageData[5] = clData.aucData[3];
01472         clData.aiData[0] = iTime;
01473         clWrite.m_aucMessageData[6] = clData.aucData[0];
01474         clWrite.m_aucMessageData[7] = clData.aucData[1];
01475         clWrite.m_ucMessageLength = 8;
01476         clWrite.m_iModuleId = iModuleId;
01477         clRead = clWrite;
01478 
01479         m_iErrorState = writeDevice(clWrite);
01480         if(m_iErrorState != 0)
01481         {
01482                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
01483                 LeaveCriticalSection(&m_csDevice);
01484                 return m_iErrorState;
01485         }
01486 
01487         do
01488         {       
01489                 m_iErrorState = readDevice(clRead);
01490                 if(m_iErrorState != 0)
01491                 {
01492                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
01493                         LeaveCriticalSection(&m_csDevice);
01494                         return m_iErrorState;
01495                 }
01496                 bRecieved = true;
01497                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
01498                 {
01499                         debug(1,"writeLongShort: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
01500                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01501                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01502                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01503                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01504                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01505                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01506                         bRecieved = false;
01507                 }
01508                 if(clRead.m_aucMessageData[0] != iCommandId)
01509                 {
01510                         debug(1,"writeLongShort: wrong command ID");
01511                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01512                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01513                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01514                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01515                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01516                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01517                         bRecieved = false;
01518                 }
01519                 if(clRead.m_aucMessageData[1] != iParameterId)
01520                 {
01521                         debug(1,"writeLongShort: wrong parameter ID");
01522                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01523                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01524                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01525                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01526                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01527                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01528                         bRecieved = false;
01529                 }
01530         }
01531         while(!bRecieved);
01532         LeaveCriticalSection(&m_csDevice);
01533 
01534         return m_iErrorState;
01535 }
01536 
01537 int CProtocolDevice::writeFloatShort(int iModuleId, int iCommandId, int iParameterId, float fData, short iData)
01538 {
01539         EnterCriticalSection(&m_csDevice);
01540         m_iErrorState = 0;
01541         bool bRecieved = false;
01542         static CProtocolMessage clWrite, clRead;
01543         static CProtocolData clData;
01544 
01545         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
01546         clWrite.m_aucMessageData[0] = iCommandId; 
01547         clWrite.m_aucMessageData[1] = iParameterId;
01548         clData.fData = fData;
01549         clWrite.m_aucMessageData[2] = clData.aucData[0];
01550         clWrite.m_aucMessageData[3] = clData.aucData[1];
01551         clWrite.m_aucMessageData[4] = clData.aucData[2];
01552         clWrite.m_aucMessageData[5] = clData.aucData[3];
01553         clData.aiData[0] = iData;
01554         clWrite.m_aucMessageData[6] = clData.aucData[0];
01555         clWrite.m_aucMessageData[7] = clData.aucData[1];
01556         clWrite.m_ucMessageLength = 8;
01557         clWrite.m_iModuleId = iModuleId;
01558         clRead = clWrite;
01559 
01560         m_iErrorState = writeDevice(clWrite);
01561         if(m_iErrorState != 0)
01562         {
01563                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
01564                 LeaveCriticalSection(&m_csDevice);
01565                 return m_iErrorState;
01566         }
01567 
01568         do
01569         {       
01570                 m_iErrorState = readDevice(clRead);
01571                 if(m_iErrorState != 0)
01572                 {
01573                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
01574                         LeaveCriticalSection(&m_csDevice);
01575                         return m_iErrorState;
01576                 }
01577                 bRecieved = true;
01578                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
01579                 {
01580                         debug(1,"writeFloatShort: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
01581                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01582                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01583                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01584                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01585                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01586                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01587                         bRecieved = false;
01588                 }
01589                 if(clRead.m_aucMessageData[0] != iCommandId)
01590                 {
01591                         debug(1,"writeFloatShort: wrong command ID");
01592                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01593                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01594                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01595                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01596                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01597                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01598                         bRecieved = false;
01599                 }
01600                 if(clRead.m_aucMessageData[1] != iParameterId)
01601                 {
01602                         debug(1,"writeFloatShort: wrong parameter ID");
01603                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01604                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01605                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01606                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01607                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01608                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01609                         bRecieved = false;
01610                 }
01611         }
01612         while(!bRecieved);
01613         LeaveCriticalSection(&m_csDevice);
01614 
01615         return m_iErrorState;
01616 }
01617 
01618 int CProtocolDevice::writeShortReadLongUnsignedChars(int iModuleId, int iCommandId, int iParameterId, short iData, long* piData, unsigned char* pucData1, unsigned char* pucData2)
01619 {
01620         EnterCriticalSection(&m_csDevice);
01621         m_iErrorState = 0;
01622         bool bRecieved = false;
01623         static CProtocolMessage clWrite, clRead;
01624         static CProtocolData clData;
01625 
01626         clData.aiData[0] = iData;
01627         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
01628         clWrite.m_aucMessageData[0] = iCommandId; 
01629         clWrite.m_aucMessageData[1] = iParameterId;
01630         clWrite.m_aucMessageData[2] = clData.aucData[0];
01631         clWrite.m_aucMessageData[3] = clData.aucData[1];
01632         clWrite.m_ucMessageLength = 4;
01633         clWrite.m_iModuleId = iModuleId;
01634         clRead = clWrite;
01635 
01636         m_iErrorState = writeDevice(clWrite);
01637         if(m_iErrorState != 0)
01638         {
01639                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
01640                 LeaveCriticalSection(&m_csDevice);
01641                 return m_iErrorState;
01642         }
01643 
01644         do
01645         {       
01646                 m_iErrorState = readDevice(clRead);
01647                 if(m_iErrorState != 0)
01648                 {
01649                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
01650                         LeaveCriticalSection(&m_csDevice);
01651                         return m_iErrorState;
01652                 }
01653                 bRecieved = true;
01654                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
01655                 {
01656                         debug(1,"writeShortReadUnsignedLongChars: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
01657                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01658                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01659                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01660                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01661                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01662                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01663                         bRecieved = false;
01664                 }
01665                 if(clRead.m_aucMessageData[0] != iCommandId)
01666                 {
01667                         debug(1,"writeShortReadUnsignedLongChars: wrong command ID");
01668                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01669                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01670                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01671                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01672                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01673                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01674                         bRecieved = false;
01675                 }
01676                 if(clRead.m_aucMessageData[1] != iParameterId)
01677                 {
01678                         debug(1,"writeShortReadUnsignedLongChars: wrong parameter ID");
01679                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01680                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01681                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01682                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01683                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01684                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01685                         bRecieved = false;
01686                 }
01687         }
01688         while(!bRecieved);
01689 
01690         clData.aucData[0] = clRead.m_aucMessageData[2];
01691         clData.aucData[1] = clRead.m_aucMessageData[3];
01692         clData.aucData[2] = clRead.m_aucMessageData[4];
01693         clData.aucData[3] = clRead.m_aucMessageData[5];
01694         *piData = clData.iData;
01695         *pucData1 = clRead.m_aucMessageData[6];
01696         *pucData2 = clRead.m_aucMessageData[7];
01697         LeaveCriticalSection(&m_csDevice);
01698 
01699         return m_iErrorState;
01700 }
01701 
01702 int CProtocolDevice::writeLongReadLongUnsignedChars(int iModuleId, int iCommandId, int iParameterId, long iData, long* piData, unsigned char* pucData1, unsigned char* pucData2)
01703 {
01704         EnterCriticalSection(&m_csDevice);
01705         m_iErrorState = 0;
01706         bool bRecieved = false;
01707         static CProtocolMessage clWrite, clRead;
01708         static CProtocolData clData;
01709 
01710         clData.iData = iData;
01711         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
01712         clWrite.m_aucMessageData[0] = iCommandId; 
01713         clWrite.m_aucMessageData[1] = iParameterId;
01714         clWrite.m_aucMessageData[2] = clData.aucData[0];
01715         clWrite.m_aucMessageData[3] = clData.aucData[1];
01716         clWrite.m_aucMessageData[4] = clData.aucData[2];
01717         clWrite.m_aucMessageData[5] = clData.aucData[3];
01718         clWrite.m_ucMessageLength = 6;
01719         clWrite.m_iModuleId = iModuleId;
01720         clRead = clWrite;
01721 
01722         m_iErrorState = writeDevice(clWrite);
01723         if(m_iErrorState != 0)
01724         {
01725                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
01726                 LeaveCriticalSection(&m_csDevice);
01727                 return m_iErrorState;
01728         }
01729 
01730         do
01731         {       
01732                 m_iErrorState = readDevice(clRead);
01733                 if(m_iErrorState != 0)
01734                 {
01735                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
01736                         LeaveCriticalSection(&m_csDevice);
01737                         return m_iErrorState;
01738                 }
01739                 bRecieved = true;
01740                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
01741                 {
01742                         debug(1,"writeLongReadUnsignedLongChars: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
01743                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01744                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01745                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01746                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01747                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01748                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01749                         bRecieved = false;
01750                 }
01751                 if(clRead.m_aucMessageData[0] != iCommandId)
01752                 {
01753                         debug(1,"writeLongReadUnsignedLongChars: wrong command ID");
01754                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01755                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01756                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01757                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01758                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01759                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01760                         bRecieved = false;
01761                 }
01762                 if(clRead.m_aucMessageData[1] != iParameterId)
01763                 {
01764                         debug(1,"writeLongReadUnsignedLongChars: wrong parameter ID");
01765                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01766                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01767                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01768                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01769                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01770                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01771                         bRecieved = false;
01772                 }
01773         }
01774         while(!bRecieved);
01775 
01776         clData.aucData[0] = clRead.m_aucMessageData[2];
01777         clData.aucData[1] = clRead.m_aucMessageData[3];
01778         clData.aucData[2] = clRead.m_aucMessageData[4];
01779         clData.aucData[3] = clRead.m_aucMessageData[5];
01780         *piData = clData.iData;
01781         *pucData1 = clRead.m_aucMessageData[6];
01782         *pucData2 = clRead.m_aucMessageData[7];
01783         LeaveCriticalSection(&m_csDevice);
01784 
01785         return m_iErrorState;
01786 }
01787 
01788 int CProtocolDevice::writeLongShortReadLongUnsignedChars(int iModuleId, int iCommandId, int iParameterId, long iData1, short iData2, long* piData, unsigned char* pucData1, unsigned char* pucData2)
01789 {
01790         EnterCriticalSection(&m_csDevice);
01791         m_iErrorState = 0;
01792         bool bRecieved = false;
01793         static CProtocolMessage clWrite, clRead;
01794         static CProtocolData clData;
01795 
01796         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
01797         clWrite.m_aucMessageData[0] = iCommandId; 
01798         clWrite.m_aucMessageData[1] = iParameterId;
01799         clData.iData = iData1;
01800         clWrite.m_aucMessageData[2] = clData.aucData[0];
01801         clWrite.m_aucMessageData[3] = clData.aucData[1];
01802         clWrite.m_aucMessageData[4] = clData.aucData[2];
01803         clWrite.m_aucMessageData[5] = clData.aucData[3];
01804         clData.aiData[0] = iData2;
01805         clWrite.m_aucMessageData[6] = clData.aucData[0];
01806         clWrite.m_aucMessageData[7] = clData.aucData[1];
01807         clWrite.m_ucMessageLength = 8;
01808         clWrite.m_iModuleId = iModuleId;
01809         clRead = clWrite;
01810 
01811         m_iErrorState = writeDevice(clWrite);
01812         if(m_iErrorState != 0)
01813         {
01814                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
01815                 LeaveCriticalSection(&m_csDevice);
01816                 return m_iErrorState;
01817         }
01818 
01819         do
01820         {       
01821                 m_iErrorState = readDevice(clRead);
01822                 if(m_iErrorState != 0)
01823                 {
01824                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
01825                         LeaveCriticalSection(&m_csDevice);
01826                         return m_iErrorState;
01827                 }
01828                 bRecieved = true;
01829                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
01830                 {
01831                         debug(1,"writeLongShortReadUnsignedLongChars: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
01832                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01833                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01834                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01835                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01836                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01837                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01838                         bRecieved = false;
01839                 }
01840                 if(clRead.m_aucMessageData[0] != iCommandId)
01841                 {
01842                         debug(1,"writeLongShortReadUnsignedLongChars: wrong command ID");
01843                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01844                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01845                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01846                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01847                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01848                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01849                         bRecieved = false;
01850                 }
01851                 if(clRead.m_aucMessageData[1] != iParameterId)
01852                 {
01853                         debug(1,"writeLongShortReadUnsignedLongChars: wrong parameter ID");
01854                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01855                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01856                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01857                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01858                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01859                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01860                         bRecieved = false;
01861                 }
01862         }
01863         while(!bRecieved);
01864 
01865         clData.aucData[0] = clRead.m_aucMessageData[2];
01866         clData.aucData[1] = clRead.m_aucMessageData[3];
01867         clData.aucData[2] = clRead.m_aucMessageData[4];
01868         clData.aucData[3] = clRead.m_aucMessageData[5];
01869         *piData = clData.iData;
01870         *pucData1 = clRead.m_aucMessageData[6];
01871         *pucData2 = clRead.m_aucMessageData[7];
01872         LeaveCriticalSection(&m_csDevice);
01873 
01874         return m_iErrorState;
01875 }
01876 
01877 int CProtocolDevice::writeFloatReadFloatUnsignedChars(int iModuleId, int iCommandId, int iParameterId, float fData, float* pfData, unsigned char* pucData1, unsigned char* pucData2)
01878 {
01879         EnterCriticalSection(&m_csDevice);
01880         m_iErrorState = 0;
01881         bool bRecieved = false;
01882         static CProtocolMessage clWrite, clRead;
01883         static CProtocolData clData;
01884 
01885         clData.fData = fData;
01886         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
01887         clWrite.m_aucMessageData[0] = iCommandId; 
01888         clWrite.m_aucMessageData[1] = iParameterId;
01889         clWrite.m_aucMessageData[2] = clData.aucData[0];
01890         clWrite.m_aucMessageData[3] = clData.aucData[1];
01891         clWrite.m_aucMessageData[4] = clData.aucData[2];
01892         clWrite.m_aucMessageData[5] = clData.aucData[3];
01893         clWrite.m_ucMessageLength = 6;
01894         clWrite.m_iModuleId = iModuleId;
01895         clRead = clWrite;
01896 
01897         m_iErrorState = writeDevice(clWrite);
01898         if(m_iErrorState != 0)
01899         {
01900                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
01901                 LeaveCriticalSection(&m_csDevice);
01902                 return m_iErrorState;
01903         }
01904 
01905         do
01906         {       
01907                 m_iErrorState = readDevice(clRead);
01908                 if(m_iErrorState != 0)
01909                 {
01910                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
01911                         LeaveCriticalSection(&m_csDevice);
01912                         return m_iErrorState;
01913                 }
01914                 bRecieved = true;
01915                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
01916                 {
01917                         debug(1,"writeFloatReadUnsignedLongChars: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
01918                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01919                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01920                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01921                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01922                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01923                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01924                         bRecieved = false;
01925                 }
01926                 if(clRead.m_aucMessageData[0] != iCommandId)
01927                 {
01928                         debug(1,"writeFloatReadUnsignedLongChars: wrong command ID");
01929                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01930                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01931                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01932                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01933                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01934                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01935                         bRecieved = false;
01936                 }
01937                 if(clRead.m_aucMessageData[1] != iParameterId)
01938                 {
01939                         debug(1,"writeFloatReadUnsignedLongChars: wrong parameter ID");
01940                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
01941                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
01942                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
01943                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
01944                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
01945                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
01946                         bRecieved = false;
01947                 }
01948         }
01949         while(!bRecieved);
01950 
01951         clData.aucData[0] = clRead.m_aucMessageData[2];
01952         clData.aucData[1] = clRead.m_aucMessageData[3];
01953         clData.aucData[2] = clRead.m_aucMessageData[4];
01954         clData.aucData[3] = clRead.m_aucMessageData[5];
01955         *pfData = clData.fData;
01956         *pucData1 = clRead.m_aucMessageData[6];
01957         *pucData2 = clRead.m_aucMessageData[7];
01958         LeaveCriticalSection(&m_csDevice);
01959 
01960         return m_iErrorState;
01961 }
01962 
01963 int CProtocolDevice::writeFloatShortReadFloatUnsignedChars(int iModuleId, int iCommandId, int iParameterId, float fData, short iData, float* pfData, unsigned char* pucData1, unsigned char* pucData2)
01964 {
01965         EnterCriticalSection(&m_csDevice);
01966         m_iErrorState = 0;
01967         bool bRecieved = false;
01968         static CProtocolMessage clWrite, clRead;
01969         static CProtocolData clData;
01970 
01971         clWrite.m_uiMessageId = MSGID_SET + iModuleId;
01972         clWrite.m_aucMessageData[0] = iCommandId; 
01973         clWrite.m_aucMessageData[1] = iParameterId;
01974         clData.fData = fData;
01975         clWrite.m_aucMessageData[2] = clData.aucData[0];
01976         clWrite.m_aucMessageData[3] = clData.aucData[1];
01977         clWrite.m_aucMessageData[4] = clData.aucData[2];
01978         clWrite.m_aucMessageData[5] = clData.aucData[3];
01979         clData.aiData[0] = iData;
01980         clWrite.m_aucMessageData[6] = clData.aucData[0];
01981         clWrite.m_aucMessageData[7] = clData.aucData[1];
01982         clWrite.m_ucMessageLength = 8;
01983         clWrite.m_iModuleId = iModuleId;
01984         clRead = clWrite;
01985 
01986         m_iErrorState = writeDevice(clWrite);
01987         if(m_iErrorState != 0)
01988         {
01989                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
01990                 LeaveCriticalSection(&m_csDevice);
01991                 return m_iErrorState;
01992         }
01993 
01994         do
01995         {       
01996                 m_iErrorState = readDevice(clRead);
01997                 if(m_iErrorState != 0)
01998                 {
01999                         //warning("wrong readDevice ErrorCode %i", m_iErrorState);
02000                         LeaveCriticalSection(&m_csDevice);
02001                         return m_iErrorState;
02002                 }
02003                 bRecieved = true;
02004                 if(clRead.m_uiMessageId != MSGID_ACK + iModuleId)
02005                 {
02006                         debug(1,"writeFloatShortReadUnsignedLongChars: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_ACK + iModuleId );
02007                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02008                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02009                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
02010                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02011                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02012                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
02013                         bRecieved = false;
02014                 }
02015                 if(clRead.m_aucMessageData[0] != iCommandId)
02016                 {
02017                         debug(1,"writeFloatShortReadUnsignedLongChars: wrong command ID");
02018                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02019                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02020                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
02021                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02022                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02023                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
02024                         bRecieved = false;
02025                 }
02026                 if(clRead.m_aucMessageData[1] != iParameterId)
02027                 {
02028                         debug(1,"writeFloatShortReadUnsignedLongChars: wrong parameter ID");
02029                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02030                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02031                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
02032                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02033                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02034                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
02035                         bRecieved = false;
02036                 }
02037         }
02038         while(!bRecieved);
02039 
02040         clData.aucData[0] = clRead.m_aucMessageData[2];
02041         clData.aucData[1] = clRead.m_aucMessageData[3];
02042         clData.aucData[2] = clRead.m_aucMessageData[4];
02043         clData.aucData[3] = clRead.m_aucMessageData[5];
02044         *pfData = clData.fData;
02045         *pucData1 = clRead.m_aucMessageData[6];
02046         *pucData2 = clRead.m_aucMessageData[7];
02047         LeaveCriticalSection(&m_csDevice);
02048 
02049         return m_iErrorState;
02050 }
02051 
02052 // ========================================================================== ;
02053 //                                                                            ;
02054 // ---- constructors / destructor ------------------------------------------- ;
02055 //                                                                            ;
02056 // ========================================================================== ;
02057 
02058 CProtocolDevice::CProtocolDevice() //: m_iEMSModuleCount(0), m_iEMSModuleCountMax(31)
02059 {
02060 }
02061 
02062 CProtocolDevice::CProtocolDevice(const CProtocolDevice& rclProtocolDevice)
02063 {
02064         error(-1, "Sorry constructor is not implemented");
02065 }
02066 
02067 CProtocolDevice::~CProtocolDevice()
02068 {
02069 }
02070 
02071 // ========================================================================== ;
02072 //                                                                            ;
02073 // ---- operators ----------------------------------------------------------- ;
02074 //                                                                            ;
02075 // ========================================================================== ;
02076 
02077 CProtocolDevice& CProtocolDevice::operator=(const CProtocolDevice& rclProtocolDevice)
02078 {
02079         error(-1, "Sorry operator= is not implemented");
02080         return *this;
02081 }
02082 
02083 // ========================================================================== ;
02084 //                                                                            ;
02085 // ---- query functions ----------------------------------------------------- ;
02086 //                                                                            ;
02087 // ========================================================================== ;
02088 
02089 int CProtocolDevice::getDataDLR_FTS(std::vector<float>& rafData, long* piState)
02090 {
02091         EnterCriticalSection(&m_csDevice);
02092         m_iErrorState = 0;
02093         bool bRecieved = false;
02094         static CProtocolMessage clWrite, clRead;
02095         static CProtocolData clData;
02096         if(m_bInitFlag == false)
02097         {
02098                 warning("device not initialized");
02099                 m_iErrorState = ERRID_DEV_NOTINITIALIZED;
02100                 return m_iErrorState;
02101         }
02102 
02103         rafData.resize(6);
02104         clWrite.m_uiMessageId = MSGID_DLR_DATA_GET;
02105         clWrite.m_aucMessageData[0] = CMDID_DLR_DATA_GET;
02106         clWrite.m_aucMessageData[1] = PARID_DLR_DATA_GET;
02107         clWrite.m_ucMessageLength = 2;
02108 
02109         m_iErrorState = writeDevice(clWrite);
02110         if(m_iErrorState != 0)
02111         {
02112                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
02113                 LeaveCriticalSection(&m_csDevice);
02114                 return m_iErrorState;
02115         }
02116         do
02117         {       
02118                 m_iErrorState = readDevice(clRead);
02119                 if(m_iErrorState != 0)
02120                 {
02121                         //warning("wrong 1. readDevice ErrorCode %i", m_iErrorState);
02122                         clearReadQueue();
02123                         LeaveCriticalSection(&m_csDevice);
02124                         return m_iErrorState;
02125                 }
02126                 bRecieved = true;
02127                 if(clRead.m_uiMessageId != MSGID_DLR_DATA_ACK)
02128                 {
02129                         debug(1,"getDataDLR_FTS: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_DLR_DATA_ACK );
02130                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02131                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02132                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
02133                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02134                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02135                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
02136                         bRecieved = false;
02137                 }
02138                 if(clRead.m_aucMessageData[0] != CMDID_DLR_DATA_ACK0)
02139                 {
02140                         debug(1,"getDataDLR_FTS: wrong command ID %x, expected %x", clRead.m_aucMessageData[0], CMDID_DLR_DATA_ACK0);
02141                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02142                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02143                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
02144                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02145                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02146                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
02147                         bRecieved = false;
02148                 }
02149         }
02150         while(!bRecieved);
02151         clData.aucData[0] = clRead.m_aucMessageData[1];
02152         clData.aucData[1] = clRead.m_aucMessageData[2];
02153         clData.aucData[2] = clRead.m_aucMessageData[3];
02154         clData.aucData[3] = clRead.m_aucMessageData[4];
02155         rafData[0] = clData.fData;
02156         clData.aucData[0] = clRead.m_aucMessageData[5];
02157         clData.aucData[1] = clRead.m_aucMessageData[6];
02158         clData.aucData[2] = clRead.m_aucMessageData[7];
02159 
02160         bRecieved = false;
02161         do
02162         {       
02163                 m_iErrorState = readDevice(clRead);
02164                 if(m_iErrorState != 0)
02165                 {
02166                         //warning("wrong 2. readDevice ErrorCode %i", m_iErrorState);
02167                         clearReadQueue();
02168                         LeaveCriticalSection(&m_csDevice);
02169                         return m_iErrorState;
02170                 }
02171                 bRecieved = true;
02172                 if(clRead.m_uiMessageId != MSGID_DLR_DATA_ACK)
02173                 {
02174                         debug(1,"getDataDLR_FTS: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_DLR_DATA_ACK );
02175                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02176                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02177                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
02178                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02179                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02180                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
02181                         bRecieved = false;
02182                 }
02183                 if(clRead.m_aucMessageData[0] != CMDID_DLR_DATA_ACK1)
02184                 {
02185                         debug(1,"getDataDLR_FTS: wrong command ID %x, expected %x", clRead.m_aucMessageData[0], CMDID_DLR_DATA_ACK1);
02186                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02187                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02188                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
02189                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02190                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02191                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
02192                         bRecieved = false;
02193                 }
02194         }
02195         while(!bRecieved);
02196         clData.aucData[3] = clRead.m_aucMessageData[1];
02197         rafData[1] = clData.fData;
02198         clData.aucData[0] = clRead.m_aucMessageData[2];
02199         clData.aucData[1] = clRead.m_aucMessageData[3];
02200         clData.aucData[2] = clRead.m_aucMessageData[4];
02201         clData.aucData[3] = clRead.m_aucMessageData[5];
02202         rafData[2] = clData.fData;
02203         clData.aucData[0] = clRead.m_aucMessageData[6];
02204         clData.aucData[1] = clRead.m_aucMessageData[7];
02205 
02206         bRecieved = false;
02207         do
02208         {       
02209                 m_iErrorState = readDevice(clRead);
02210                 if(m_iErrorState != 0)
02211                 {
02212                         //warning("wrong 3. readDevice ErrorCode %i", m_iErrorState);
02213                         clearReadQueue();
02214                         LeaveCriticalSection(&m_csDevice);
02215                         return m_iErrorState;
02216                 }
02217                 bRecieved = true;
02218                 if(clRead.m_uiMessageId != MSGID_DLR_DATA_ACK)
02219                 {
02220                         debug(1,"getDataDLR_FTS: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_DLR_DATA_ACK );
02221                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02222                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02223                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
02224                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02225                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02226                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
02227                         bRecieved = false;
02228                 }
02229                 if(clRead.m_aucMessageData[0] != CMDID_DLR_DATA_ACK2)
02230                 {
02231                         debug(1,"getDataDLR_FTS: wrong command ID %x, expected %x", clRead.m_aucMessageData[0], CMDID_DLR_DATA_ACK2);
02232                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02233                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02234                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
02235                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02236                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02237                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
02238                         bRecieved = false;
02239                 }
02240         }
02241         while(!bRecieved);
02242         clData.aucData[2] = clRead.m_aucMessageData[1];
02243         clData.aucData[3] = clRead.m_aucMessageData[2];
02244         rafData[3] = clData.fData;
02245         clData.aucData[0] = clRead.m_aucMessageData[3];
02246         clData.aucData[1] = clRead.m_aucMessageData[4];
02247         clData.aucData[2] = clRead.m_aucMessageData[5];
02248         clData.aucData[3] = clRead.m_aucMessageData[6];
02249         rafData[4] = clData.fData;
02250         clData.aucData[0] = clRead.m_aucMessageData[7];
02251 
02252         bRecieved = false;
02253         do
02254         {       
02255                 m_iErrorState = readDevice(clRead);
02256                 if(m_iErrorState != 0)
02257                 {
02258                         //warning("wrong 4. readDevice ErrorCode %i", m_iErrorState);
02259                         clearReadQueue();
02260                         LeaveCriticalSection(&m_csDevice);
02261                         return m_iErrorState;
02262                 }
02263                 bRecieved = true;
02264                 if(clRead.m_uiMessageId != MSGID_DLR_DATA_ACK)
02265                 {
02266                         debug(1,"getDataDLR_FTS: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_DLR_DATA_ACK );
02267                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02268                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02269                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
02270                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02271                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02272                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
02273                         bRecieved = false;
02274                 }
02275                 if(clRead.m_aucMessageData[0] != CMDID_DLR_DATA_ACK3)
02276                 {
02277                         debug(1,"getDataDLR_FTS: wrong command ID %x, expected %x", clRead.m_aucMessageData[0], CMDID_DLR_DATA_ACK3);
02278                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02279                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02280                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
02281                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02282                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02283                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
02284                         bRecieved = false;
02285                 }
02286         }
02287         while(!bRecieved);
02288         clData.aucData[1] = clRead.m_aucMessageData[1];
02289         clData.aucData[2] = clRead.m_aucMessageData[2];
02290         clData.aucData[3] = clRead.m_aucMessageData[3];
02291         rafData[5] = clData.fData;
02292         clData.aucData[0] = clRead.m_aucMessageData[4];
02293         clData.aucData[1] = clRead.m_aucMessageData[5];
02294         clData.aucData[2] = clRead.m_aucMessageData[6];
02295         clData.aucData[3] = clRead.m_aucMessageData[7];
02296         *piState = clData.iData;
02297 
02298         LeaveCriticalSection(&m_csDevice);
02299         return m_iErrorState;
02300 }
02301 
02302 int CProtocolDevice::getDataSCHUNK_FTC(int iModuleId, int iChannelTypeId, std::vector<float>& rafData, short* piState)
02303 {
02304         EnterCriticalSection(&m_csDevice);
02305         m_iErrorState = 0;
02306         bool bRecieved = false;
02307         static CProtocolMessage clWrite, clRead;
02308         static CProtocolData clData;
02309         if(m_bInitFlag == false)
02310         {
02311                 warning("device not initialized");
02312                 m_iErrorState = ERRID_DEV_NOTINITIALIZED;
02313                 return m_iErrorState;
02314         }
02315         if(iModuleId < 1 || iModuleId > MAX_SCHUNK )
02316         {
02317                 warning("bad SCHUNK module ID %i", iModuleId);
02318                 m_iErrorState = ERRID_DEV_WRONGSCHUNKMODULEID;
02319                 LeaveCriticalSection(&m_csDevice);
02320                 return m_iErrorState;
02321         }
02322 
02323         rafData.resize(6);
02324         clWrite.m_uiMessageId = MSGID_SCHUNK_SEND + iModuleId;
02325         if(iChannelTypeId == 0)
02326                 clWrite.m_aucMessageData[0] = CMDID_SCHUNK_GET_FTI;
02327         else if(iChannelTypeId == 1)
02328                 clWrite.m_aucMessageData[0] = CMDID_SCHUNK_GET_TRI;
02329         else
02330                 clWrite.m_aucMessageData[0] = CMDID_SCHUNK_GET_TEI;
02331         clWrite.m_ucMessageLength = 1;
02332 
02333         m_iErrorState = writeDevice(clWrite);
02334         if(m_iErrorState != 0)
02335         {
02336                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
02337                 LeaveCriticalSection(&m_csDevice);
02338                 return m_iErrorState;
02339         }
02340         do
02341         {       
02342                 m_iErrorState = readDevice(clRead);
02343                 if(m_iErrorState != 0)
02344                 {
02345                         warning("wrong 1. readDevice ErrorCode %i", m_iErrorState);
02346                         LeaveCriticalSection(&m_csDevice);
02347                         return m_iErrorState;
02348                 }
02349                 bRecieved = true;
02350                 if(clRead.m_uiMessageId != MSGID_SCHUNK_RECV + iModuleId)
02351                 {
02352                         debug(1,"getDataSCHUNK_FTS: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_SCHUNK_RECV + iModuleId );
02353                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02354                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02355                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02356                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02357                         bRecieved = false;
02358                 }
02359                 if(iChannelTypeId == 0)
02360                 {
02361                         if(clRead.m_aucMessageData[0] != CMDID_SCHUNK_GET_FTI + 1)
02362                         {
02363                                 debug(1,"getDataSCHUNK_FTS: wrong command ID %x, expected %x", clRead.m_aucMessageData[0], CMDID_SCHUNK_GET_FTI + 1);
02364                                 debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02365                                 debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02366                                 debug(2,"read MessageId %x", clRead.m_uiMessageId);
02367                                 debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02368                                 bRecieved = false;
02369                         }
02370                 }
02371                 else if(iChannelTypeId == 1)
02372                 {
02373                         if(clRead.m_aucMessageData[0] != CMDID_SCHUNK_GET_TRI + 1)
02374                         {
02375                                 debug(1,"getDataSCHUNK_FTS: wrong command ID %x, expected %x", clRead.m_aucMessageData[0], CMDID_SCHUNK_GET_TRI + 1);
02376                                 debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02377                                 debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02378                                 debug(2,"read MessageId %x", clRead.m_uiMessageId);
02379                                 debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02380                                 bRecieved = false;
02381                         }
02382                 }
02383                 else
02384                 {
02385                         if(clRead.m_aucMessageData[0] != CMDID_SCHUNK_GET_TEI + 1)
02386                         {
02387                                 debug(1,"getDataSCHUNK_FTS: wrong command ID %x, expected %x", clRead.m_aucMessageData[0], CMDID_SCHUNK_GET_TEI + 1);
02388                                 debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02389                                 debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02390                                 debug(2,"read MessageId %x", clRead.m_uiMessageId);
02391                                 debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02392                                 bRecieved = false;
02393                         }
02394                 }
02395         }
02396         while(!bRecieved);
02397         clData.aucData[0] = clRead.m_aucMessageData[1];
02398         clData.aucData[1] = clRead.m_aucMessageData[2];
02399         clData.aucData[2] = clRead.m_aucMessageData[3];
02400         clData.aucData[3] = clRead.m_aucMessageData[4];
02401         if(iChannelTypeId == 0)
02402         {
02403                 rafData[0] = clData.aiData[0] / 32.;
02404                 rafData[1] = clData.aiData[1] / 32.;
02405         }
02406         else if(iChannelTypeId == 1)
02407         {
02408                 rafData[0] = clData.aiData[0] / 4096000.;
02409                 rafData[1] = clData.aiData[1] / 4096000.;
02410         }
02411         else
02412         {
02413                 rafData[0] = clData.aiData[0];
02414                 rafData[1] = clData.aiData[1];
02415         }
02416         clData.aucData[0] = clRead.m_aucMessageData[5];
02417         clData.aucData[1] = clRead.m_aucMessageData[6];
02418         clData.aucData[2] = clRead.m_aucMessageData[7];
02419         if(iChannelTypeId == 0)
02420         {
02421                 rafData[2] = clData.aiData[0] / 32.;
02422         }
02423         else if(iChannelTypeId == 1)
02424         {
02425                 rafData[2] = clData.aiData[0] / 4096000.;
02426         }
02427         else
02428         {
02429                 rafData[2] = clData.aiData[0];
02430         }
02431 
02432         bRecieved = false;
02433         do
02434         {       
02435                 m_iErrorState = readDevice(clRead);
02436                 if(m_iErrorState != 0)
02437                 {
02438                         warning("wrong 2. readDevice ErrorCode %i", m_iErrorState);
02439                         LeaveCriticalSection(&m_csDevice);
02440                         return m_iErrorState;
02441                 }
02442                 bRecieved = true;
02443                 if(clRead.m_uiMessageId != MSGID_SCHUNK_RECV + iModuleId)
02444                 {
02445                         debug(1,"getDataSCHUNK_FTS: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_SCHUNK_RECV + iModuleId );
02446                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02447                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02448                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02449                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02450                         bRecieved = false;
02451                 }
02452                 if(clRead.m_aucMessageData[0] != 0x01)
02453                 {
02454                         debug(1,"getDataSCHUNK_FTS: wrong command ID %x, expected %x", clRead.m_aucMessageData[0], 0x01);
02455                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02456                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02457                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02458                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02459                         bRecieved = false;
02460                 }
02461         }
02462         while(!bRecieved);
02463         clData.aucData[3] = clRead.m_aucMessageData[1];
02464         if(iChannelTypeId == 0)
02465         {
02466                 rafData[3] = clData.aiData[1] / 1024.;
02467         }
02468         else if(iChannelTypeId == 1)
02469         {
02470                 rafData[3] = clData.aiData[1] / 65536.;
02471         }
02472         else
02473         {
02474                 rafData[3] = clData.aiData[1];
02475         }
02476         clData.aucData[0] = clRead.m_aucMessageData[2];
02477         clData.aucData[1] = clRead.m_aucMessageData[3];
02478         clData.aucData[2] = clRead.m_aucMessageData[4];
02479         clData.aucData[3] = clRead.m_aucMessageData[5];
02480         if(iChannelTypeId == 0)
02481         {
02482                 rafData[4] = clData.aiData[0] / 1024.;
02483                 rafData[5] = clData.aiData[1] / 1024.;
02484         }
02485         else if(iChannelTypeId == 1)
02486         {
02487                 rafData[4] = clData.aiData[0] / 65536.;
02488                 rafData[5] = clData.aiData[1] / 65536.;
02489         }
02490         else
02491         {
02492                 rafData[4] = clData.aiData[0];
02493                 rafData[5] = clData.aiData[1];
02494         }
02495         clData.aucData[0] = clRead.m_aucMessageData[6];
02496         clData.aucData[1] = clRead.m_aucMessageData[7];
02497 
02498         *piState = clData.aiData[0];
02499 
02500         LeaveCriticalSection(&m_csDevice);
02501         return m_iErrorState;
02502 }
02503 
02504 int CProtocolDevice::getDataMP55_IO(int iModuleId, float* pfData)
02505 {
02506         EnterCriticalSection(&m_csDevice);
02507         m_iErrorState = 0;
02508 
02509         bool bRecieved = false;
02510         static CProtocolMessage clWrite, clRead;
02511         static CProtocolData clData;
02512         if(m_bInitFlag == false)
02513         {
02514                 warning("device not initialized");
02515                 m_iErrorState = ERRID_DEV_NOTINITIALIZED;
02516                 return m_iErrorState;
02517         }
02518         if(iModuleId < 0 || iModuleId > MAX_MP55 )
02519         {
02520                 warning("bad MP55 module ID %i", iModuleId);
02521                 m_iErrorState = ERRID_DEV_WRONGMP55MODULEID;
02522                 LeaveCriticalSection(&m_csDevice);
02523                 return m_iErrorState;
02524         }
02525         *pfData = 0;
02526 
02527         clWrite.m_uiMessageId = MSGID_MP55_SEND + iModuleId;
02528         clWrite.m_bRTRFlag = false;
02529         clWrite.m_aucMessageData[0] = 0x40;
02530         clWrite.m_aucMessageData[1] = 0x01;
02531         clWrite.m_aucMessageData[2] = 0x30;
02532         clWrite.m_aucMessageData[3] = 0x01;
02533         clWrite.m_aucMessageData[4] = 0x00;
02534         clWrite.m_aucMessageData[5] = 0x00;
02535         clWrite.m_aucMessageData[6] = 0x00;
02536         clWrite.m_aucMessageData[7] = 0x00;
02537         clWrite.m_ucMessageLength = 8;
02538 
02539         m_iErrorState = writeDevice(clWrite);
02540         if(m_iErrorState != 0)
02541         {
02542                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
02543                 LeaveCriticalSection(&m_csDevice);
02544                 return m_iErrorState;
02545         }
02546         
02547         do
02548         {       
02549                 m_iErrorState = readDevice(clRead);
02550                 if(m_iErrorState != 0)
02551                 {
02552                         LeaveCriticalSection(&m_csDevice);
02553                         return m_iErrorState;
02554                 }
02555                 bRecieved = true;
02556                 if(clRead.m_uiMessageId != MSGID_MP55_RECV + iModuleId)
02557                 {
02558                         debug(1,"getDataMP55_IO: received CAN-ID %x, expected %x", clRead.m_uiMessageId, 0x580 + iModuleId);
02559                         bRecieved = false;
02560                 }
02561         }
02562         while(!bRecieved);
02563 
02564         clData.aucData[0] = clRead.m_aucMessageData[4];
02565         clData.aucData[1] = clRead.m_aucMessageData[5];
02566         clData.aucData[2] = clRead.m_aucMessageData[6];
02567         clData.aucData[3] = clRead.m_aucMessageData[7];
02568 
02569         *pfData = clData.fData;
02570 
02571         LeaveCriticalSection(&m_csDevice);
02572         return m_iErrorState;
02573 }
02574 
02575 int CProtocolDevice::getDataMP55_IO_fast(int iModuleId, float* pfData)
02576 {
02577         EnterCriticalSection(&m_csDevice);
02578         m_iErrorState = 0;
02579 
02580         bool bRecieved = false;
02581         static CProtocolMessage clWrite, clRead;
02582         static CProtocolData clData;
02583         if(m_bInitFlag == false)
02584         {
02585                 warning("device not initialized");
02586                 m_iErrorState = ERRID_DEV_NOTINITIALIZED;
02587                 return m_iErrorState;
02588         }
02589         if(iModuleId < 0 || iModuleId > MAX_MP55 )
02590         {
02591                 warning("bad MP55 module ID %i", iModuleId);
02592                 m_iErrorState = ERRID_DEV_WRONGMP55MODULEID;
02593                 LeaveCriticalSection(&m_csDevice);
02594                 return m_iErrorState;
02595         }
02596         *pfData = 0;
02597 
02598         // Send SYNC
02599         clWrite.m_uiMessageId = 0x80;
02600         clWrite.m_bRTRFlag = false;
02601         clWrite.m_aucMessageData[0] = iModuleId;
02602         clWrite.m_ucMessageLength = 1;
02603 
02604         m_iErrorState = writeDevice(clWrite);
02605 
02606         // Read PDO
02607         do
02608         {       
02609                 m_iErrorState = readDevice(clRead);
02610                 if(m_iErrorState != 0)
02611                 {
02612                         LeaveCriticalSection(&m_csDevice);
02613 //                      printf( "read PDO: %d\n", m_iErrorState );
02614                         return m_iErrorState;
02615                 }
02616                 bRecieved = true;
02617                 if(clRead.m_uiMessageId != 0x180 + iModuleId)
02618                 {
02619 //                      printf("getDataMP55_IO: received CAN-ID %x, expected %x, len= %d\n", clRead.m_uiMessageId, 0x180 + iModuleId, clRead.m_ucMessageLength);
02620 //                      for( int i = 0; i < clRead.m_ucMessageLength; i++ )
02621 //                              printf( "data[%d]=%x\n", i, clRead.m_aucMessageData[i] );
02622                         bRecieved = false;
02623                 }
02624                 Sleep( 1 );
02625         }
02626         while(!bRecieved);
02627 //      printf( "getData PDO: error state %x\n", m_iErrorState );
02628 //      printf( "getData PDO: received CAN-ID %x, expected %x\n", clRead.m_uiMessageId, 0x180 + iModuleId);
02629 
02630         clData.aucData[0] = clRead.m_aucMessageData[0];
02631         clData.aucData[1] = clRead.m_aucMessageData[1];
02632         clData.aucData[2] = clRead.m_aucMessageData[2];
02633         clData.aucData[3] = clRead.m_aucMessageData[3];
02634 
02635         //*pfData = ((float)clData.iData)/100000.0;
02636         *pfData = clData.fData;
02637 
02638         LeaveCriticalSection(&m_csDevice);
02639         return m_iErrorState;
02640 }
02641 
02642 int CProtocolDevice::getCanOpenRawAbsEnc(int iModuleId, short* piValue)
02643 {
02644         EnterCriticalSection(&m_csDevice);
02645         m_iErrorState = 0;
02646 
02647         bool bRecieved = false;
02648         static CProtocolMessage clWrite, clRead;
02649         static CProtocolData clData;
02650         if(m_bInitFlag == false)
02651         {
02652                 warning("device not initialized");
02653                 m_iErrorState = ERRID_DEV_NOTINITIALIZED;
02654                 return m_iErrorState;
02655         }
02656         if(iModuleId < 0 || iModuleId > MAX_MP55 )
02657         {
02658                 warning("bad CanOpen module ID %i", iModuleId);
02659                 m_iErrorState = ERRID_DEV_WRONGMP55MODULEID;
02660                 LeaveCriticalSection(&m_csDevice);
02661                 return m_iErrorState;
02662         }
02663         *piValue = 0;
02664 
02665         clWrite.m_uiMessageId = MSGID_MP55_SEND + iModuleId;
02666         clWrite.m_bRTRFlag = false;
02667         clWrite.m_aucMessageData[0] = 0x40;
02668         clWrite.m_aucMessageData[1] = 0x04;
02669         clWrite.m_aucMessageData[2] = 0x60;
02670         clWrite.m_aucMessageData[3] = 0x00;
02671         clWrite.m_aucMessageData[4] = 0x00;
02672         clWrite.m_aucMessageData[5] = 0x00;
02673         clWrite.m_aucMessageData[6] = 0x00;
02674         clWrite.m_aucMessageData[7] = 0x00;
02675         clWrite.m_ucMessageLength = 4;
02676 
02677         m_iErrorState = writeDevice(clWrite);
02678         if(m_iErrorState != 0)
02679         {
02680                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
02681                 LeaveCriticalSection(&m_csDevice);
02682                 return m_iErrorState;
02683         }
02684         
02685         do
02686         {       
02687                 m_iErrorState = readDevice(clRead);
02688                 if(m_iErrorState != 0)
02689                 {
02690                         printf( "wrong readDevice %d\n", m_iErrorState );
02691                         LeaveCriticalSection(&m_csDevice);
02692                         return m_iErrorState;
02693                 }
02694                 bRecieved = true;
02695                 if(clRead.m_uiMessageId != MSGID_MP55_RECV + iModuleId)
02696                 {
02697                         printf("getCanOpenRawAbsEnc: received CAN-ID %x, expected %x \n", clRead.m_uiMessageId, 0x580 + iModuleId);
02698                         bRecieved = false;
02699                 }
02700         }
02701         while(!bRecieved);
02702 
02703         clData.aucData[0] = clRead.m_aucMessageData[4];
02704         clData.aucData[1] = clRead.m_aucMessageData[5];
02705         clData.aucData[2] = clRead.m_aucMessageData[6];
02706         clData.aucData[3] = clRead.m_aucMessageData[7];
02707 
02708         *piValue = clData.aiData[0];
02709 
02710         LeaveCriticalSection(&m_csDevice);
02711         return m_iErrorState;
02712 }
02713 
02714 
02715 // ========================================================================== ;
02716 //                                                                            ;
02717 // ---- modify functions ---------------------------------------------------- ;
02718 //                                                                            ;
02719 // ========================================================================== ;
02720 
02721 int CProtocolDevice::setNullSCHUNK_FTC(int iModuleId, short* piState)
02722 {
02723         EnterCriticalSection(&m_csDevice);
02724         m_iErrorState = 0;
02725         bool bRecieved = false;
02726         static CProtocolMessage clWrite, clRead;
02727         static CProtocolData clData;
02728         if(m_bInitFlag == false)
02729         {
02730                 warning("device not initialized");
02731                 m_iErrorState = ERRID_DEV_NOTINITIALIZED;
02732                 return m_iErrorState;
02733         }
02734         if(iModuleId < 1 || iModuleId > MAX_SCHUNK )
02735         {
02736                 warning("bad SCHUNK module ID %i", iModuleId);
02737                 m_iErrorState = ERRID_DEV_WRONGSCHUNKMODULEID;
02738                 LeaveCriticalSection(&m_csDevice);
02739                 return m_iErrorState;
02740         }
02741 
02742         clWrite.m_uiMessageId = MSGID_SCHUNK_SEND + iModuleId;
02743         clWrite.m_aucMessageData[0] = CMDID_SCHUNK_SET_NULL;
02744         clWrite.m_ucMessageLength = 1;
02745 
02746         m_iErrorState = writeDevice(clWrite);
02747         if(m_iErrorState != 0)
02748         {
02749                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
02750                 LeaveCriticalSection(&m_csDevice);
02751                 return m_iErrorState;
02752         }
02753         do
02754         {       
02755                 m_iErrorState = readDevice(clRead);
02756                 if(m_iErrorState != 0)
02757                 {
02758                         warning("wrong 1. readDevice ErrorCode %i", m_iErrorState);
02759                         LeaveCriticalSection(&m_csDevice);
02760                         return m_iErrorState;
02761                 }
02762                 bRecieved = true;
02763                 if(clRead.m_uiMessageId != MSGID_SCHUNK_RECV + iModuleId)
02764                 {
02765                         debug(1,"setNullSCHUNK_FTS: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_SCHUNK_RECV + iModuleId );
02766                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02767                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02768                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02769                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02770                         bRecieved = false;
02771                 }
02772                 if(clRead.m_aucMessageData[0] != CMDID_SCHUNK_SET_NULL + 1)
02773                 {
02774                         debug(1,"setNullSCHUNK_FTS: wrong command ID %x, expected %x", clRead.m_aucMessageData[0], CMDID_SCHUNK_SET_NULL + 1);
02775                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
02776                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
02777                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
02778                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
02779                         bRecieved = false;
02780                 }
02781         }
02782         while(!bRecieved);
02783         if(clRead.m_aucMessageData[1] != 'O' || clRead.m_aucMessageData[2] != 'K')
02784         {
02785                 debug(1,"setNullSCHUNK_FTS: wrong answer '%c%c', expected 'OK'", clRead.m_aucMessageData[1], clRead.m_aucMessageData[2]);
02786         }
02787         clData.aucData[0] = clRead.m_aucMessageData[3];
02788         clData.aucData[1] = clRead.m_aucMessageData[4];
02789 
02790         *piState = clData.aiData[0];
02791         LeaveCriticalSection(&m_csDevice);
02792         return m_iErrorState;
02793 }
02794 
02795 int CProtocolDevice::setTaraMP55_IO(int iModuleId, float fTara)
02796 {
02797         EnterCriticalSection(&m_csDevice);
02798         m_iErrorState = 0;
02799 
02800         bool bRecieved = false;
02801         static CProtocolMessage clWrite, clRead;
02802         static CProtocolData clData;
02803 
02804         if(m_bInitFlag == false)
02805         {
02806                 warning("device not initialized");
02807                 m_iErrorState = ERRID_DEV_NOTINITIALIZED;
02808                 return m_iErrorState;
02809         }
02810         if(iModuleId < 0 || iModuleId > MAX_MP55 )
02811         {
02812                 warning("bad MP55 module ID %i", iModuleId);
02813                 m_iErrorState = ERRID_DEV_WRONGMP55MODULEID;
02814                 LeaveCriticalSection(&m_csDevice);
02815                 return m_iErrorState;
02816         }
02817 
02818         clData.iData = fTara * 1000.0;
02819 
02820         clWrite.m_uiMessageId = 0x600 + iModuleId;
02821         clWrite.m_bRTRFlag = false;
02822         clWrite.m_aucMessageData[0] = 0x23;
02823         clWrite.m_aucMessageData[1] = 0x80;
02824         clWrite.m_aucMessageData[2] = 0x21;
02825         clWrite.m_aucMessageData[3] = 0x01;
02826         clWrite.m_aucMessageData[4] = clData.aucData[0];
02827         clWrite.m_aucMessageData[5] = clData.aucData[1];
02828         clWrite.m_aucMessageData[6] = clData.aucData[2];
02829         clWrite.m_aucMessageData[7] = clData.aucData[3];
02830         clWrite.m_ucMessageLength = 8;
02831 
02832         m_iErrorState = writeDevice(clWrite);
02833         if(m_iErrorState != 0)
02834         {
02835                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
02836                 LeaveCriticalSection(&m_csDevice);
02837                 return m_iErrorState;
02838         }
02839         
02840         do
02841         {       
02842                 m_iErrorState = readDevice(clRead);
02843                 if(m_iErrorState != 0)
02844                 {
02845                         warning("wrong readDevice ErrorCode %i", m_iErrorState);
02846                         LeaveCriticalSection(&m_csDevice);
02847                         return m_iErrorState;
02848                 }
02849                 bRecieved = true;
02850                 if(clRead.m_uiMessageId != 0x580 + iModuleId)
02851                 {
02852                         debug(1,"setTaraMP55_FS: received CAN-ID %x, expected %x", clRead.m_uiMessageId, 0x580 + iModuleId);
02853                         bRecieved = false;
02854                 }
02855         }
02856         while(!bRecieved);
02857 
02858         LeaveCriticalSection(&m_csDevice);
02859         return m_iErrorState;
02860 }
02861 
02862 int CProtocolDevice::setInitMP55_IO_fast( int iModuleId )
02863 {
02864         EnterCriticalSection(&m_csDevice);
02865         m_iErrorState = 0;
02866 
02867         bool bRecieved = false;
02868         static CProtocolMessage clWrite, clRead;
02869         static CProtocolData clData;
02870 
02871         if(m_bInitFlag == false)
02872         {
02873                 warning("device not initialized");
02874                 m_iErrorState = ERRID_DEV_NOTINITIALIZED;
02875                 return m_iErrorState;
02876         }
02877         if(iModuleId < 0 || iModuleId > MAX_MP55 )
02878         {
02879                 warning("bad MP55 module ID %i", iModuleId);
02880                 m_iErrorState = ERRID_DEV_WRONGMP55MODULEID;
02881                 LeaveCriticalSection(&m_csDevice);
02882                 return m_iErrorState;
02883         }
02884 
02885         // Init MP55: Stop Operational Mode
02886         clWrite.m_uiMessageId = 0x000;
02887         clWrite.m_bRTRFlag = false;
02888         clWrite.m_aucMessageData[0] = 0x80;
02889         clWrite.m_aucMessageData[1] = 0x00;
02890         clWrite.m_ucMessageLength = 2;
02891 
02892         m_iErrorState = writeDevice(clWrite);
02893 
02894 //      printf( "written Start Operational\n" );
02895         Sleep( 20 );
02896 
02897         // Init MP55: Set TPDO on SYNC (object 1800)
02898         clWrite.m_uiMessageId = 0x600 + iModuleId;
02899         clWrite.m_bRTRFlag = false;
02900         clWrite.m_aucMessageData[0] = 0x2F;
02901         clWrite.m_aucMessageData[1] = 0x00;
02902         clWrite.m_aucMessageData[2] = 0x18;
02903         clWrite.m_aucMessageData[3] = 0x02;
02904         clWrite.m_aucMessageData[4] = 0x01;
02905         clWrite.m_aucMessageData[5] = 0x00;
02906         clWrite.m_aucMessageData[6] = 0x00;
02907         clWrite.m_aucMessageData[7] = 0x00;
02908         clWrite.m_ucMessageLength = 8;
02909 
02910         m_iErrorState = writeDevice(clWrite);
02911 
02912         int end = 0;
02913         do
02914         {       
02915                 m_iErrorState = readDevice(clRead);
02916                 bRecieved = true;
02917                 if(clRead.m_uiMessageId != 0x580 + iModuleId)
02918                 {
02919 //                      printf( "setTaraMP55_FS: received CAN-ID %x, expected %x\n", clRead.m_uiMessageId, 0x580 + iModuleId);
02920                         bRecieved = false;
02921                 }
02922                 else
02923                 {       if( clRead.m_aucMessageData[0] != 0x60 )
02924                                 bRecieved = false;
02925                         else 
02926                         {       if( clRead.m_aucMessageData[1] != 0x00 )
02927                                         bRecieved = false;
02928                                 else
02929                                 { if( clRead.m_aucMessageData[1] != 0x18 )
02930                                                 bRecieved = false;
02931                                 }
02932                         }       
02933                 }
02934                 end++;
02935         }
02936         while(!bRecieved && end < 10);
02937 
02938 //      printf( "setTara obj 1800: received CAN-ID %x, expected %x\n", clRead.m_uiMessageId, 0x580 + iModuleId);
02939 //      for( int i = 0; i < clRead.m_ucMessageLength; i++ )
02940 //              printf( "data[%d]=%x\n", i, clRead.m_aucMessageData[i] );
02941 
02942 
02943         // Init MP55: Set TPDO to one message (object 1801)
02944         clWrite.m_uiMessageId = 0x600 + iModuleId;
02945         clWrite.m_bRTRFlag = false;
02946         clWrite.m_aucMessageData[0] = 0x2F;
02947         clWrite.m_aucMessageData[1] = 0x01;
02948         clWrite.m_aucMessageData[2] = 0x18;
02949         clWrite.m_aucMessageData[3] = 0x02;
02950         clWrite.m_aucMessageData[4] = 0xFF;
02951         clWrite.m_aucMessageData[5] = 0x00;
02952         clWrite.m_aucMessageData[6] = 0x00;
02953         clWrite.m_aucMessageData[7] = 0x00;
02954         clWrite.m_ucMessageLength = 8;
02955 
02956         m_iErrorState = writeDevice(clWrite);
02957 
02958 //      printf( "written obj 1801\n" );
02959         Sleep( 10 );
02960         end = 0;
02961         do
02962         {       
02963                 m_iErrorState = readDevice(clRead);
02964                 bRecieved = true;
02965                 if(clRead.m_uiMessageId != 0x580 + iModuleId)
02966                 {
02967 //                      printf( "setTaraMP55_FS: received CAN-ID %x, expected %x\n", clRead.m_uiMessageId, 0x580 + iModuleId);
02968                         bRecieved = false;
02969                 }
02970                 else
02971                 {       if( clRead.m_aucMessageData[0] != 0x60 )
02972                                 bRecieved = false;
02973                         else 
02974                         {       if( clRead.m_aucMessageData[1] != 0x01 )
02975                                         bRecieved = false;
02976                                 else
02977                                 { if( clRead.m_aucMessageData[1] != 0x18 )
02978                                                 bRecieved = false;
02979                                 }
02980                         }       
02981                 }
02982                 end++;
02983         }
02984         while(!bRecieved && end < 10);
02985 
02986 //      printf( "setTara obj 1801: received CAN-ID %x, expected %x\n", clRead.m_uiMessageId, 0x580 + iModuleId);
02987 //      for( i = 0; i < clRead.m_ucMessageLength; i++ )
02988 //              printf( "data[%d]=%x\n", i, clRead.m_aucMessageData[i] );
02989 
02990         Sleep( 10 );
02991 
02992         // Init MP55: Set to Operational Mode
02993         clWrite.m_uiMessageId = 0x000;
02994         clWrite.m_bRTRFlag = false;
02995         clWrite.m_aucMessageData[0] = 0x01;
02996         clWrite.m_aucMessageData[1] = 0x00;
02997         clWrite.m_ucMessageLength = 2;
02998 
02999         m_iErrorState = writeDevice(clWrite);
03000 
03001 //      printf( "written Start Operational\n" );
03002         Sleep( 10 );
03003 
03004         LeaveCriticalSection(&m_csDevice);
03005         return m_iErrorState;
03006 }
03007 
03008 // ========================================================================== ;
03009 //                                                                            ;
03010 // ---- I/O functions ------------------------------------------------------- ;
03011 //                                                                            ;
03012 // ========================================================================== ;
03013 
03014 // ========================================================================== ;
03015 //                                                                            ;
03016 // ---- exec functions ------------------------------------------------------ ;
03017 //                                                                            ;
03018 // ========================================================================== ;
03019 
03020 int CProtocolDevice::initDLR_FTS()
03021 {
03022         EnterCriticalSection(&m_csDevice);
03023         m_iErrorState = 0;
03024         bool bRecieved = false;
03025         static CProtocolMessage clWrite, clRead;
03026 
03027         if(m_bInitFlag == false)
03028         {
03029                 warning("device not initialized");
03030                 m_iErrorState = ERRID_DEV_NOTINITIALIZED;
03031                 return m_iErrorState;
03032         }
03033         m_iErrorState = setMessageId(MSGID_DLR_INIT_ACK);
03034         if(m_iErrorState != 0)
03035         {
03036                 warning("wrong setMessageId");
03037                 LeaveCriticalSection(&m_csDevice);
03038                 return m_iErrorState;
03039         }               
03040         m_iErrorState = setMessageId(MSGID_DLR_DATA_ACK);
03041         if(m_iErrorState != 0)
03042         {
03043                 warning("wrong setMessageId");
03044                 LeaveCriticalSection(&m_csDevice);
03045                 return m_iErrorState;
03046         }               
03047         clWrite.m_uiMessageId = MSGID_DLR_INIT_0;
03048         clWrite.m_aucMessageData[0] = 0;
03049         clWrite.m_aucMessageData[1] = 0x4b;
03050         clWrite.m_aucMessageData[2] = 0x3;
03051         clWrite.m_aucMessageData[3] = 0x1;
03052         clWrite.m_aucMessageData[4] = 0x3;
03053         clWrite.m_aucMessageData[5] = 0;
03054         clWrite.m_ucMessageLength = 6;
03055 
03056         m_iErrorState = writeDevice(clWrite);
03057         if(m_iErrorState != 0)
03058         {
03059                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
03060                 LeaveCriticalSection(&m_csDevice);
03061                 return m_iErrorState;
03062         }
03063 
03064         do
03065         {       
03066                 m_iErrorState = readDevice(clRead);
03067                 if(m_iErrorState != 0)
03068                 {
03069                         warning("wrong MSGID_DLR_INIT_0 readDevice ErrorCode %i", m_iErrorState);
03070                         LeaveCriticalSection(&m_csDevice);
03071                         return m_iErrorState;
03072                 }
03073                 bRecieved = true;
03074                 if(clRead.m_uiMessageId != MSGID_DLR_INIT_ACK)
03075                 {
03076                         debug(1,"initDLR_FTS: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_DLR_INIT_ACK );
03077                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
03078                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
03079                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
03080                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
03081                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
03082                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
03083                         bRecieved = false;
03084                 }
03085         }
03086         while(!bRecieved);
03087 
03088         clWrite.m_uiMessageId = MSGID_DLR_INIT_1;
03089         clWrite.m_aucMessageData[0] = 0x40;
03090         clWrite.m_aucMessageData[1] = 0x10;
03091         clWrite.m_aucMessageData[2] = 0x5;
03092         clWrite.m_aucMessageData[3] = 0x1;
03093         clWrite.m_aucMessageData[4] = 0x9;
03094         clWrite.m_aucMessageData[5] = 0;
03095         clWrite.m_aucMessageData[6] = 0;
03096         clWrite.m_ucMessageLength = 7;
03097 
03098         m_iErrorState = writeDevice(clWrite);
03099         if(m_iErrorState != 0)
03100         {
03101                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
03102                 LeaveCriticalSection(&m_csDevice);
03103                 return m_iErrorState;
03104         }
03105 
03106         bRecieved = false;
03107         do
03108         {       
03109                 m_iErrorState = readDevice(clRead);
03110                 if(m_iErrorState != 0)
03111                 {
03112                         warning("wrong MSGID_DLR_INIT_1 readDevice ErrorCode %i", m_iErrorState);
03113                         LeaveCriticalSection(&m_csDevice);
03114                         return m_iErrorState;
03115                 }
03116                 bRecieved = true;
03117                 if(clRead.m_uiMessageId != MSGID_DLR_INIT_ACK)
03118                 {
03119                         debug(1,"initDLR_FTS: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_DLR_INIT_ACK );
03120                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
03121                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
03122                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
03123                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
03124                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
03125                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
03126                         bRecieved = false;
03127                 }
03128         }
03129         while(!bRecieved);
03130 
03131         clWrite.m_uiMessageId = MSGID_DLR_INIT_2;
03132         clWrite.m_aucMessageData[0] = 0;
03133         clWrite.m_aucMessageData[1] = 0x10;
03134         clWrite.m_aucMessageData[2] = 0x5;
03135         clWrite.m_aucMessageData[3] = 0x2;
03136         clWrite.m_aucMessageData[4] = 0x9;
03137         clWrite.m_aucMessageData[5] = 0x10;
03138         clWrite.m_aucMessageData[6] = 0x27;
03139         clWrite.m_ucMessageLength = 7;
03140 
03141         m_iErrorState = writeDevice(clWrite);
03142         if(m_iErrorState != 0)
03143         {
03144                 warning("wrong writeDevice ErrorCode %i", m_iErrorState);
03145                 LeaveCriticalSection(&m_csDevice);
03146                 return m_iErrorState;
03147         }
03148 
03149         bRecieved = false;
03150         do
03151         {       
03152                 m_iErrorState = readDevice(clRead);
03153                 if(m_iErrorState != 0)
03154                 {
03155                         warning("wrong MSGID_DLR_INIT_2 readDevice ErrorCode %i", m_iErrorState);
03156                         LeaveCriticalSection(&m_csDevice);
03157                         return m_iErrorState;
03158                 }
03159                 bRecieved = true;
03160                 if(clRead.m_uiMessageId != MSGID_DLR_INIT_ACK)
03161                 {
03162                         debug(1,"initDLR_FTS: received CAN-ID %x, expected %x", clRead.m_uiMessageId, MSGID_DLR_INIT_ACK );
03163                         debug(2,"write MessageId %x", clWrite.m_uiMessageId);
03164                         debug(2,"write CommandId %x", clWrite.m_aucMessageData[0]);
03165                         debug(2,"write ParameterId %x", clWrite.m_aucMessageData[1]);
03166                         debug(2,"read MessageId %x", clRead.m_uiMessageId);
03167                         debug(2,"read CommandId %x", clRead.m_aucMessageData[0]);
03168                         debug(2,"read ParameterId %x", clRead.m_aucMessageData[1]);
03169                         bRecieved = false;
03170                 }
03171         }
03172         while(!bRecieved);
03173 
03174         LeaveCriticalSection(&m_csDevice);
03175         return m_iErrorState;
03176 }
03177 
03178 int CProtocolDevice::printMessage(CProtocolMessage & rclProtocolMessage, bool read)
03179 {
03180 
03181         char readWrite[10];
03182         if (read)
03183           sprintf(readWrite,"read");
03184         else
03185           sprintf(readWrite,"write");
03186 
03187         if (rclProtocolMessage.m_ucMessageLength == 8)
03188         {
03189                 debug(2,"%s CAN message Id 0x%02x, Command Id 0x%02x, ParameterId 0x%02x, Data: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x",readWrite,
03190                                                                                 rclProtocolMessage.m_uiMessageId,
03191                                                                                 rclProtocolMessage.m_aucMessageData[0],
03192                                                                                 rclProtocolMessage.m_aucMessageData[1],
03193                                                                                 rclProtocolMessage.m_aucMessageData[2],
03194                                                                                 rclProtocolMessage.m_aucMessageData[3],
03195                                                                                 rclProtocolMessage.m_aucMessageData[4],
03196                                                                                 rclProtocolMessage.m_aucMessageData[5],
03197                                                                                 rclProtocolMessage.m_aucMessageData[6],
03198                                                                                 rclProtocolMessage.m_aucMessageData[7]); 
03199         }
03200         else if (rclProtocolMessage.m_ucMessageLength == 7)
03201         {
03202                 debug(2,"%s CAN message Id 0x%02x, Command Id 0x%02x, ParameterId 0x%02x, Data: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x",readWrite,
03203                                                                                 rclProtocolMessage.m_uiMessageId,
03204                                                                                 rclProtocolMessage.m_aucMessageData[0],
03205                                                                                 rclProtocolMessage.m_aucMessageData[1],
03206                                                                                 rclProtocolMessage.m_aucMessageData[2],
03207                                                                                 rclProtocolMessage.m_aucMessageData[3],
03208                                                                                 rclProtocolMessage.m_aucMessageData[4],
03209                                                                                 rclProtocolMessage.m_aucMessageData[5],
03210                                                                                 rclProtocolMessage.m_aucMessageData[6]); 
03211         }
03212         else if (rclProtocolMessage.m_ucMessageLength == 6)
03213         {
03214                 debug(2,"%s CAN message Id 0x%02x, Command Id 0x%02x, ParameterId 0x%02x, Data: 0x%02x 0x%02x 0x%02x 0x%02x",readWrite,
03215                                                                                 rclProtocolMessage.m_uiMessageId,
03216                                                                                 rclProtocolMessage.m_aucMessageData[0],
03217                                                                                 rclProtocolMessage.m_aucMessageData[1],
03218                                                                                 rclProtocolMessage.m_aucMessageData[2],
03219                                                                                 rclProtocolMessage.m_aucMessageData[3],
03220                                                                                 rclProtocolMessage.m_aucMessageData[4],
03221                                                                                 rclProtocolMessage.m_aucMessageData[5]); 
03222         }
03223         else if (rclProtocolMessage.m_ucMessageLength == 5)
03224         {
03225                 debug(2,"%s CAN message Id 0x%02x, Command Id 0x%02x, ParameterId 0x%02x, Data: 0x%02x 0x%02x 0x%02x",readWrite,
03226                                                                                 rclProtocolMessage.m_uiMessageId,
03227                                                                                 rclProtocolMessage.m_aucMessageData[0],
03228                                                                                 rclProtocolMessage.m_aucMessageData[1],
03229                                                                                 rclProtocolMessage.m_aucMessageData[2],
03230                                                                                 rclProtocolMessage.m_aucMessageData[3],
03231                                                                                 rclProtocolMessage.m_aucMessageData[4]); 
03232         }
03233         else if (rclProtocolMessage.m_ucMessageLength == 4)
03234         {
03235                 debug(2,"%s CAN message Id 0x%02x, Command Id 0x%02x, ParameterId 0x%02x, Data: 0x%02x 0x%02x",readWrite,
03236                                                                                 rclProtocolMessage.m_uiMessageId,
03237                                                                                 rclProtocolMessage.m_aucMessageData[0],
03238                                                                                 rclProtocolMessage.m_aucMessageData[1],
03239                                                                                 rclProtocolMessage.m_aucMessageData[2],
03240                                                                                 rclProtocolMessage.m_aucMessageData[3]);
03241         }
03242         else if (rclProtocolMessage.m_ucMessageLength == 3)
03243         {
03244                 debug(2,"%s CAN message Id 0x%02x, Command Id 0x%02x, ParameterId 0x%02x, Data: 0x%02x",readWrite,
03245                                                                                 rclProtocolMessage.m_uiMessageId,
03246                                                                                 rclProtocolMessage.m_aucMessageData[0],
03247                                                                                 rclProtocolMessage.m_aucMessageData[1],
03248                                                                                 rclProtocolMessage.m_aucMessageData[2]);
03249         }
03250         else if (rclProtocolMessage.m_ucMessageLength == 2)
03251         {
03252                 debug(2,"%s CAN message Id 0x%02x, Command Id 0x%02x, ParameterId 0x%02x",readWrite,
03253                                                                                  rclProtocolMessage.m_uiMessageId,
03254                                                                                  rclProtocolMessage.m_aucMessageData[0],
03255                                                                                  rclProtocolMessage.m_aucMessageData[1]);
03256         }
03257 
03258         return 0;
03259 
03260 
03261 }


schunk_libm5api
Author(s): Florian Weisshardt
autogenerated on Mon Oct 6 2014 07:30:34