/home/fwph/code/wurde/modules/sickLaser/sick.h

Go to the documentation of this file.
00001 #ifndef SICK_H
00002 #define SICK_H
00003 
00004 #define LASER_BUFFER_SIZE                100000
00005 
00006 #define CRC16_GEN_POL                    0x8005
00007 #define CRC16_GEN_POL0                   0x80
00008 #define CRC16_GEN_POL1                   0x05
00009 
00010 #define LMS_PASSWORD                     "SICK_LMS"
00011 #define PLS_PASSWORD                     "SICK_PLS"
00012 
00013 #define BUFFER_SIZE                      16000
00014 #define MAX_COMMAND_SIZE                 8196
00015 #define MAX_NAME_LENGTH                  256
00016 
00017 #define MAX_TIME_FOR_CLEAR               0.2
00018 #define MAX_TIME_FOR_DATA                0.3
00019 #define MAX_TIME_FOR_ACK                 0.1
00020 #define MAX_TIME_FOR_ANSWER              0.1
00021 #define MAX_TIME_FOR_SENSOR_DATA         0.5
00022 #define MAX_TIME_FOR_CONFIG              3.0
00023 #define MAX_TIME_FOR_GETTING_CONF        0.3
00024 #define MAX_TIME_FOR_TESTING_BAUDRATE    1.0
00025 
00026 #define INI                              -1
00027 #define TIO                              0
00028 #define STX                              0x02
00029 #define UKN                              0x05
00030 #define ACK                              0x06
00031 #define DLE                              0x10
00032 #define NAK                              0x15
00033 #define LID                              0x80
00034 
00035 #define RES_1_00_DEGREE                  0
00036 #define RES_0_50_DEGREE                  1 
00037 #define RES_0_25_DEGREE                  2
00038 
00039 #ifndef TIOCGETP 
00040 #define TIOCGETP                         0x5481
00041 #define TIOCSETP                         0x5482
00042 #define RAW                              1
00043 #define CBREAK                           64
00044 #endif
00045 
00046 #ifdef __cplusplus
00047 extern "C" {
00048 #endif
00049 
00050 typedef enum { PLS, LMS } laser_model_t;
00051 typedef enum { CM, MM, DM } range_res_t;
00052 typedef enum { RANGE80M, RANGE160M, RANGE320M } range_dist_t;
00053 typedef enum { N, E, O } parity_t;
00054 
00055 typedef struct {
00056   int                fd;
00057   laser_model_t      type;
00058   char               *ttyport;
00059   int                baudrate;
00060   parity_t           parity;
00061   unsigned char      passwd[8];
00062   int                databits;
00063   int                stopbits;
00064   int                hwf;
00065   int                swf;
00066   int                laser_num;
00067 } laser_device_t, *laser_device_p;
00068 
00069 typedef struct {
00070   char device_name[MAX_NAME_LENGTH];
00071   laser_model_t type;
00072   range_res_t range_res;
00073   range_dist_t range_dist;
00074   unsigned char password[8];
00075   int laser_num;
00076   int detect_baudrate, use_highspeed;
00077   int start_baudrate, set_baudrate;
00078   int databits, stopbits;
00079   parity_t parity;
00080   int swf, hwf;
00081   int angle_range, angle_resolution;
00082   int num_values;
00083 } laser_settings_t;
00084 
00085 typedef struct {
00086   laser_settings_t settings;
00087   laser_device_t dev;
00088 
00089   int numvalues;
00090   double *range;
00091   float *raw;
00092   int *glare, *wfv, *sfv;
00093   unsigned char *buffer;
00094   long int buffer_position, processed_mark, packet_offset, packet_length;
00095   int new_reading;
00096   double timestamp;
00097 } sick_laser_t, *sick_laser_p;
00098 
00099 int  sick_start_laser(sick_laser_p laser);
00100 void sick_stop_laser(sick_laser_p laser);
00101 void sick_handle_laser(sick_laser_p laser);
00102 
00103 #ifdef __cplusplus
00104 }
00105 #endif
00106 
00107 #endif

Generated on Thu Feb 1 15:31:52 2007 for WURDE by  doxygen 1.5.1