Cheetah Software
1.0
Main Page
Namespaces
Classes
Files
File List
File Members
rt_sbus.c
Go to the documentation of this file.
1
//#include <stdio.h>
2
//#include <stdint.h>
3
//#include <stdlib.h>
4
//#include <string.h>
5
//#include <pthread.h>
6
//#include <errno.h>
7
//#include <fcntl.h>
8
//#include <time.h>
9
//#include <unistd.h>
10
//
11
//
12
//#define termios asmtermios
13
//
14
//#include <asm/termios.h>
15
//
16
//#undef termios
17
//
18
//#include <termios.h>
19
//
20
//#include <rt/rt_sbus.h>
21
//#include <rt/rt_serial.h>
22
//#include <rt/rt_interface_lcm.h>
23
//#include <cTypes.h>
24
//
25
// pthread_mutex_t sbus_data_m;
26
//
27
// uint16_t channels[18];
28
// uint16_t channel_data[18];
29
//
31
//#define K_SBUS_PORT_SIM "/dev/ttyUSB0"
33
//#define K_SBUS_PORT_MC "/dev/ttyS4"
34
//
35
//
36
// void unpack_sbus_data(uint8_t sbus_data[], uint16_t *channels) {
37
// if ((sbus_data[0] == 0xF) && (sbus_data[24] == 0x0)) {
38
// channels[0] = ((sbus_data[1]) | ((sbus_data[2] & 0x7) << 8));
39
// channels[1] = (sbus_data[2] >> 3) | ((sbus_data[3] & 0x3F) << 5);
40
// channels[2] = ((sbus_data[3] & 0xC0) >> 6) | (sbus_data[4] << 2) |
41
// ((sbus_data[5] & 0x1) << 10); channels[3] = ((sbus_data[5] & 0xFE) >> 1) |
42
// ((sbus_data[6] & 0xF) << 7); channels[4] = ((sbus_data[6] & 0xF0) >> 4) |
43
// ((sbus_data[7] & 0x7F) << 4); channels[5] = ((sbus_data[7] & 0x80) >> 7) |
44
// (sbus_data[8] << 1) | ((sbus_data[9] & 0x3) << 9); channels[6] =
45
// ((sbus_data[9] & 0xFC) >> 2) | ((sbus_data[10] & 0x1F) << 6); channels[7]
46
// = ((sbus_data[10] & 0xE0) >> 5) | (sbus_data[11] << 3);
47
//
48
// channels[8] = ((sbus_data[12]) | ((sbus_data[13] & 0x7) << 8));
49
// channels[9] = (sbus_data[13] >> 3) | ((sbus_data[14] & 0x3F) << 5);
50
// channels[10] = ((sbus_data[14] & 0xC0) >> 6) | (sbus_data[15] << 2) |
51
// ((sbus_data[16] & 0x1) << 10); channels[11] = ((sbus_data[16] & 0xFE) >>
52
// 1) | ((sbus_data[17] & 0xF) << 7); channels[12] = ((sbus_data[17] & 0xF0)
53
// >> 4) | ((sbus_data[18] & 0x7F) << 4); channels[13] = ((sbus_data[18] &
54
// 0x80) >> 7) | (sbus_data[19] << 1) | ((sbus_data[20] & 0x3) << 9);
55
// channels[14] = ((sbus_data[20] & 0xFC) >> 2) | ((sbus_data[21] & 0x1F) <<
56
// 6); channels[15] = ((sbus_data[21] & 0xE0) >> 5) | (sbus_data[22] << 3);
57
//
58
// channels[16] = (sbus_data[23] & 0x80) >> 7;
59
// channels[17] = (sbus_data[23] & 0x40) >> 6;
60
//
61
// pthread_mutex_lock(&sbus_data_m);
62
// for (int i = 0; i < 18; i++) {
63
// //printf("%d ", channels[i]);
64
// channel_data[i] = channels[i];
65
// }
66
// //printf("\n\n");
67
// pthread_mutex_unlock(&sbus_data_m);
68
//
69
//
70
// } else { printf("Bad Packet\n"); }
71
//}
72
//
73
// int read_sbus_data(int port, uint8_t *sbus_data) {
74
// uint8_t packet_full = 0;
75
// uint8_t read_byte[1] = {0};
76
// int timeout_counter = 0;
77
// //int n = read(fd1, read_buff, sizeof(read_buff));
78
// while ((!packet_full) && (timeout_counter < 50)) {
79
// timeout_counter++;
80
// // Read a byte //
81
// int n = read(port, read_byte, sizeof(read_byte));
82
// // Shift the buffer //
83
// for (int i = 0; i < 24; i++) {
84
// sbus_data[i] = sbus_data[i + 1];
85
// }
86
// sbus_data[24] = read_byte[0];
87
//
88
// // Check for the correct start and stop bytes ///
89
// if ((sbus_data[0] == 15) && (sbus_data[24] == 0)) {
90
// //unpack_sbus_data(sbus_data_buff, channels);
91
// packet_full = 1;
92
// }
93
// }
94
// return packet_full;
95
//}
96
//
97
// int read_sbus_channel(int channel) {
98
// pthread_mutex_lock(&sbus_data_m);
99
// int value = channel_data[channel];
100
// pthread_mutex_unlock(&sbus_data_m);
101
// return value;
102
//}
103
//
104
// int receive_sbus(int port) {
105
// uint16_t read_buff[25] = {0};
106
// int x = read_sbus_data(port, (uint8_t*)read_buff);
107
// if (x) {
108
// unpack_sbus_data((uint8_t*)read_buff, channels);
109
// } else {
110
// printf("SBUS tried read 50 bytes without seeing a packet\n");
111
// }
112
// return x;
113
//}
114
//
115
// int init_sbus(int is_simulator) {
116
// char *port1;
117
// if (is_simulator) { port1 = K_SBUS_PORT_SIM; }
118
// else { port1 = K_SBUS_PORT_MC; }
119
//
120
// if (pthread_mutex_init(&sbus_data_m, NULL) != 0) {
121
// printf("Failed to initialize sbus data mutex.\n");
122
// }
123
//
124
//
125
// int fd1 = open(port1, O_RDWR | O_NOCTTY | O_SYNC);
126
// if (fd1 < 0) {
127
// printf("Error opening %s: %s\n", port1, strerror(errno));
128
// } else {
129
// set_interface_attribs_custom_baud(fd1, 100000, 0, 0);
130
// }
131
// return fd1;
132
//}
home
dhkim
Public_Repository
Cheetah-Software
robot
src
rt
rt_sbus.c
Generated by
1.8.11