Test for data scanning of RPLidar A2M8

Committer:
villemejane
Date:
Thu Mar 25 10:11:59 2021 +0000
Revision:
0:439469932304
Test for data scanning of RPLidar A2M8

Who changed what in which revision?

UserRevisionLine numberNew contents of line
villemejane 0:439469932304 1 #ifndef __include_rplidar_h__
villemejane 0:439469932304 2 #define __include_rplidar_h__
villemejane 0:439469932304 3
villemejane 0:439469932304 4 #include "mbed.h"
villemejane 0:439469932304 5 #define LIDAR_MODE_STOP 0x25
villemejane 0:439469932304 6 #define LIDAR_MODE_RESET 0x40
villemejane 0:439469932304 7 #define LIDAR_MODE_SCAN 0x20
villemejane 0:439469932304 8 #define LIDAR_MODE_FORCE 0x21
villemejane 0:439469932304 9 #define LIDAR_MODE_INFO 0x50
villemejane 0:439469932304 10 #define LIDAR_MODE_HEALTH 0x52
villemejane 0:439469932304 11 #define LIDAR_MODE_RATE 0x59
villemejane 0:439469932304 12
villemejane 0:439469932304 13 #define NB_BYTE_INFO_REQ 7
villemejane 0:439469932304 14 #define NB_BYTE_INFO_RESP 20
villemejane 0:439469932304 15 #define NB_BYTE_RATE_REQ 7
villemejane 0:439469932304 16 #define NB_BYTE_RATE_RESP 4
villemejane 0:439469932304 17 #define NB_BYTE_HEALTH_REQ 7
villemejane 0:439469932304 18 #define NB_BYTE_HEALTH_RESP 3
villemejane 0:439469932304 19 #define NB_BYTE_FORCE_REQ 7
villemejane 0:439469932304 20 #define NB_BYTE_FORCE_RESP 5
villemejane 0:439469932304 21 #define NB_BYTE_SCAN_REQ 7
villemejane 0:439469932304 22
villemejane 0:439469932304 23 extern char pc_debug_data[128];
villemejane 0:439469932304 24
villemejane 0:439469932304 25 extern UnbufferedSerial lidar;
villemejane 0:439469932304 26 extern UnbufferedSerial pc;
villemejane 0:439469932304 27 extern DigitalOut debug_data;
villemejane 0:439469932304 28 extern DigitalOut debug_out;
villemejane 0:439469932304 29 extern DigitalOut data_ok;
villemejane 0:439469932304 30 extern DigitalOut data_ok_q;
villemejane 0:439469932304 31 extern int data_nb;
villemejane 0:439469932304 32 extern int data_scan_nb;
villemejane 0:439469932304 33 extern char received_data[];
villemejane 0:439469932304 34 extern char mode;
villemejane 0:439469932304 35 extern char scan_ok;
villemejane 0:439469932304 36 extern int distance_scan[];
villemejane 0:439469932304 37 extern int distance_scan_old[];
villemejane 0:439469932304 38 extern char tour_ok;
villemejane 0:439469932304 39 extern char trame_ok;
villemejane 0:439469932304 40 extern struct lidar_data ld_current;
villemejane 0:439469932304 41
villemejane 0:439469932304 42 /* Data Structure of lidar */
villemejane 0:439469932304 43 struct lidar_data{
villemejane 0:439469932304 44 int quality;
villemejane 0:439469932304 45 int angle;
villemejane 0:439469932304 46 int distance;
villemejane 0:439469932304 47 };
villemejane 0:439469932304 48
villemejane 0:439469932304 49 /*********************************************************************** GENERAL FUNCTIONS */
villemejane 0:439469932304 50
villemejane 0:439469932304 51 /** Print int value and its name
villemejane 0:439469932304 52 */
villemejane 0:439469932304 53 void print_int(const char *name, int ki);
villemejane 0:439469932304 54 /** Print data from serial communication
villemejane 0:439469932304 55 */
villemejane 0:439469932304 56 void print_data(const char *name, char *datai, int sizedata);
villemejane 0:439469932304 57 /** Wait seconds
villemejane 0:439469932304 58 */
villemejane 0:439469932304 59 void wait_s(float sec);
villemejane 0:439469932304 60
villemejane 0:439469932304 61 /** Find max in an integer array
villemejane 0:439469932304 62 */
villemejane 0:439469932304 63 void findMax(int *int_data, int size, int *value, int *indice);
villemejane 0:439469932304 64
villemejane 0:439469932304 65 /************************************************************************* LIDAR FUNCTIONS */
villemejane 0:439469932304 66
villemejane 0:439469932304 67 /** IT_lidar
villemejane 0:439469932304 68 interrupt function on serial receiving
villemejane 0:439469932304 69 */
villemejane 0:439469932304 70 void IT_lidar(void);
villemejane 0:439469932304 71
villemejane 0:439469932304 72 /** Reset request
villemejane 0:439469932304 73 send command to core reset of the lidar
villemejane 0:439469932304 74 this action took 2ms
villemejane 0:439469932304 75 */
villemejane 0:439469932304 76 void sendResetReq(void);
villemejane 0:439469932304 77
villemejane 0:439469932304 78 /** Health request
villemejane 0:439469932304 79 get device health information
villemejane 0:439469932304 80 */
villemejane 0:439469932304 81 void getHealthLidar(void);
villemejane 0:439469932304 82
villemejane 0:439469932304 83 /** Info request
villemejane 0:439469932304 84 get device information
villemejane 0:439469932304 85 model / firmware _ LSB / MSB / Hardware / SerialNumber (15 octets)
villemejane 0:439469932304 86 */
villemejane 0:439469932304 87 void getInfoLidar(void);
villemejane 0:439469932304 88
villemejane 0:439469932304 89 /** Sample Rate
villemejane 0:439469932304 90 get sample rate
villemejane 0:439469932304 91 */
villemejane 0:439469932304 92 void getSampleRate(void);
villemejane 0:439469932304 93
villemejane 0:439469932304 94 /** Start Scan
villemejane 0:439469932304 95 start standard scan
villemejane 0:439469932304 96 */
villemejane 0:439469932304 97 void startScan(void);
villemejane 0:439469932304 98
villemejane 0:439469932304 99 /** Stop Scan
villemejane 0:439469932304 100 stop standard scan
villemejane 0:439469932304 101 */
villemejane 0:439469932304 102 void stopScan(void);
villemejane 0:439469932304 103
villemejane 0:439469932304 104 #endif /* #ifndef __include_rplidar_h__ */