Skip to content

Commit 057120d

Browse files
committed
update
1 parent d944689 commit 057120d

20 files changed

Lines changed: 1062 additions & 714 deletions

CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ set(CMAKE_C_STANDARD 17)
55

66
set(PROJECT mv)
77

8-
set(BUILDFOR "apple" CACHE STRING "what to build for: apple or pico")
8+
set(BUILDFOR "apple" CACHE STRING "what to build for: apple, linux or pico")
99

1010
if (BUILDFOR STREQUAL "apple" OR BUILDFOR STREQUAL "linux")
1111
# PROJECT_VERSION_MAJOR year
@@ -19,7 +19,7 @@ if (BUILDFOR STREQUAL "apple" OR BUILDFOR STREQUAL "linux")
1919
string(PREPEND CMAKE_EXE_LINKER_FLAGS " -Wl ")
2020
set(PROJECT_TARGET_PLATFORM "Unix")
2121
elseif(BUILDFOR STREQUAL "pico")
22-
set(PICO_BOARD pico) # pico or pico_w or pico2
22+
set(PICO_BOARD pico_w) # pico or pico_w or pico2
2323
set(PICO_SDK_PATH "$ENV{HOME}/github/pico-sdk")
2424
set(ENV{PATH} "$ENV{HOME}/github/gcc-arm/bin:$ENV{PATH}")
2525
set(PICO_SDK_PATH "${PICO_SDK_PATH}" CACHE PATH "Path to the PICO SDK")
@@ -39,8 +39,8 @@ else()
3939
message(FATAL_ERROR "No BUILDFOR given")
4040
endif()
4141

42-
string (APPEND CMAKE_CXX_FLAGS_RELEASE " -O3 ")
43-
string (APPEND CMAKE_C_FLAGS_RELEASE " -O3 ")
42+
# string (APPEND CMAKE_CXX_FLAGS_RELEASE " -O3 ")
43+
# string (APPEND CMAKE_C_FLAGS_RELEASE " -O3 ")
4444

4545

4646
if(PROJECT_IS_TOP_LEVEL)

examples/pico/CMakeLists.txt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,14 @@ list(APPEND examples
44

55
LIST(APPEND pico_libs
66
pico_stdlib
7-
hardware_spi
8-
hardware_i2c)
7+
# hardware_spi
8+
# hardware_i2c
9+
hardware_dma
10+
hardware_gpio
11+
hardware_clocks
12+
hardware_uart
13+
pico_cyw43_arch_none
14+
)
915

1016
foreach(app ${examples})
1117
add_executable(${app} ${app}.cpp)

examples/pico/dummy.cpp

Lines changed: 66 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,87 @@
11

2-
#include <stdio.h>
3-
#include "pico/stdlib.h"
2+
// #include "hardware/i2c.h"
43
#include "pico/binary_info.h"
5-
#include "hardware/i2c.h"
4+
#include "pico/stdlib.h"
65
#include "tusb.h"
76
#include <mv.h>
7+
#include <stdio.h>
88

9+
#include "pico/cyw43_arch.h"
10+
11+
constexpr uint32_t DD0_PIN = 2;
12+
constexpr uint32_t DD1_PIN = 3;
13+
constexpr uart_pins_t UART0PINS = uart0_pins[1];
14+
constexpr uart_pins_t UART1PINS = uart1_pins[0];
15+
16+
// UART -----------------------------------------------------------
17+
pico_uart_set(UART0PINS);
18+
pico_uart_set(UART1PINS);
19+
bi_decl(bi_1pin_with_func(DD0_PIN, GPIO_FUNC_SIO));
920

1021
int main() {
1122
// Enable UART so we can print status output
1223
stdio_init_all();
24+
// stdio_usb_init(); // do this in cmake right now
25+
// pico_stdio_uart(); // do this in cmake right now
1326

27+
// wait for usb serial connection
1428
while (!tud_cdc_connected()) {
15-
printf("w");
1629
sleep_ms(500);
1730
}
1831

32+
cyw43_arch_init();
33+
34+
// Protocol1::PacketDecoder dec;
35+
1936
ServoPort s;
37+
uint32_t baud = s.open(UART0PINS,DD0_PIN);
2038

21-
uint8_t data[] = {1,2,3,4,5,6,7,8,9,0};
22-
s.write(data, 10);
23-
s.read(data, 10);
24-
s.write(data, 10);
25-
s.read(data, 10);
26-
s.write(data, 10);
27-
s.read(data, 10);
28-
s.write(data, 10);
29-
s.read(data, 10);
30-
s.write(data, 10);
31-
s.read(data, 10);
32-
s.write(data, 10);
33-
s.read(data, 10);
39+
ServoPort ss;
40+
uint32_t baud2 = ss.open(UART1PINS,DD1_PIN);
41+
42+
mvpkt_t serv = AX12::makeMovePacket(1,140.0f);
43+
s.write(serv);
3444

3545
while (1) {
36-
printf(".");
46+
printf("ServoPort at: %d %d\n", (int)baud, (int)baud2);
47+
48+
mvpkt_t outpkt = Protocol1::makePingPacket();
49+
50+
s.write(outpkt);
51+
s.write(outpkt);
52+
s.write(outpkt);
53+
s.write(outpkt);
54+
s.write(outpkt);
55+
56+
s.write(outpkt);
57+
s.write(outpkt);
58+
s.write(outpkt);
59+
s.write(outpkt);
60+
s.write(outpkt);
61+
62+
mvpkt_t inpkt = ss.read();
63+
if (inpkt.size() > 0) {
64+
// printf("inpkt size: %d\n", (int)inpkt.size());
65+
// for (const uint8_t &b: inpkt) printf("%d,", (int)b);
66+
// printf("\n");
67+
mvpkts_t recv;
68+
bool ok = Protocol1::parsePacket(inpkt, recv);
69+
printf("messages found UART 1: %s %d\n", ok ? "ok" : "bad", (int)recv.size());
70+
}
71+
else printf("*** inpkt no data on UART 1 ***\n");
72+
73+
74+
mvpkt_t inpkt2 = s.read();
75+
if (inpkt2.size() > 0) {
76+
// printf("inpkt2 size: %d\n", (int)inpkt2.size());
77+
// for (const uint8_t &b: inpkt2) printf("%d,", (int)b);
78+
// printf("\n");
79+
mvpkts_t recv2;
80+
bool ok = Protocol1::parsePacket(inpkt2, recv2);
81+
printf("messages found UART 0: %s %d\n", ok ? "ok" : "bad", (int)recv2.size());
82+
}
83+
else printf("*** inpkt2 no data on UART 0 ***\n");
84+
3785
sleep_ms(1000);
3886
}
3987
}

examples/unix/misc.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ using namespace std;
1313

1414
int main() {
1515

16-
AX12 servo;
17-
SerialPort serial;
16+
// AX12 servo;
17+
ServoPort serial;
1818
// // string port = "/dev/tty.usbserial-A904MISU";
1919
string port =
2020
"/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A904MISU-if00-port0";
21-
serial.begin(port);
21+
serial.init(port);
2222

2323
// vector<uint16_t> steps {0,511};
2424
//
@@ -118,21 +118,21 @@ int main() {
118118

119119
if (1) {
120120
srand(time(0));
121-
mvpkt_t mv = servo.makeMovePacket(1, rand() % 1023);
121+
mvpkt_t mv = makeMovePacket(1, rand() % 1023);
122122
serial.write(mv);
123-
delay(500);
123+
sleep_ms(500);
124124
}
125125
// Protocol1 pc;
126126
// mvpkt_t p = pc.make_read_packet(1, 32, 2);
127127
// pprint(p);
128128
// return 0;
129129

130130
// mvpkt_t pkt = servo.read_goal_speed_packet(1);
131-
mvpkt_t pkt = servo.makePingPacket(1);
131+
mvpkt_t pkt = makePingPacket(1);
132132
// pprint(pkt);
133133
int num = serial.write(pkt);
134134
cout << ">> sent: " << num << endl;
135-
delay(500);
135+
sleep_ms(500);
136136
int ret = serial.read();
137137
printf(">> read: %d\n", ret);
138138
// mvpkt_t ans = serial.buffer2packet(ret);

examples/unix/move.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,17 @@ using namespace std;
1313

1414
int main() {
1515

16-
AX12 servo;
17-
SerialPort serial;
16+
// AX12 servo;
17+
ServoPort serial;
1818
// string port = "/dev/tty.usbserial-A904MISU";
1919
string port =
2020
"/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A904MISU-if00-port0";
21-
serial.begin(port);
21+
serial.init(port);
2222

2323
vector<uint16_t> steps{0, 511, 1023, 511};
2424

2525
for (const auto &p : steps) {
26-
mvpkt_t mv = servo.makeMovePacket(1, p);
26+
mvpkt_t mv = AX12::makeMovePacket(1, p);
2727
// pprint(mv);
2828
printf(">> Wrote: %d ", serial.write(mv));
2929
// pprint(mv);

examples/unix/path.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,20 @@ using namespace std;
1313

1414
int main() {
1515

16-
AX12 servo;
17-
SerialPort serial;
16+
// AX12 servo;
17+
ServoPort serial;
1818
// string port = "/dev/tty.usbserial-A904MISU";
1919
string port =
2020
"/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A904MISU-if00-port0";
21-
serial.begin(port);
21+
serial.init(port);
2222

2323
// vector<uint16_t> path {511, 0, 1023, 0, 1023, 0, 1023, 511};
2424
vector<uint16_t> path{511, 34, 100, 300, 564, 758, 1000,
2525
700, 12, 50, 450, 890, 511};
2626
uint16_t last = 511;
2727

2828
for (const auto &p : path) {
29-
mvpkt_t mv = servo.makeMovePacket(1, p);
29+
mvpkt_t mv = AX12::makeMovePacket(1, p);
3030
serial.write(mv);
3131

3232
/*
@@ -41,7 +41,7 @@ int main() {
4141
int d = 0;
4242
if (p >= last) d = int(1000.0 * (p - last) / 1207.14);
4343
else d = int(1000.0 * (last - p) / 1207.14);
44-
delay(d);
44+
sleep_ms(d);
4545
last = p;
4646
}
4747

examples/unix/ping.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,18 @@
1010
#include <mv.h>
1111

1212
using namespace std;
13+
using namespace Protocol1;
1314

1415
int main() {
1516

16-
AX12 servo;
17-
SerialPort serial;
17+
// AX12 servo;
18+
ServoPort serial;
1819
// string port = "/dev/tty.usbserial-A904MISU";
19-
string port = "/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A904MISU-if00-port0";
20-
serial.begin(port);
20+
string port =
21+
"/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A904MISU-if00-port0";
22+
serial.init(port);
2123

22-
mvpkt_t ping = servo.makePingPacket();
24+
mvpkt_t ping = makePingPacket();
2325
// pprint(ping);
2426
serial.write(ping);
2527

examples/unix/read.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ using namespace std;
1313

1414
int main() {
1515

16-
AX12 servo;
17-
SerialPort serial;
16+
// AX12 servo;
17+
ServoPort serial;
1818
// // string port = "/dev/tty.usbserial-A904MISU";
1919
string port =
2020
"/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A904MISU-if00-port0";
21-
serial.begin(port);
21+
serial.init(port);
2222

2323
if (0) {
2424
srand(time(0));
25-
mvpkt_t mv = servo.makeMovePacket(1, rand() % 1023);
25+
mvpkt_t mv = AX12::makeMovePacket(1, rand() % 1023);
2626
serial.write(mv);
2727
delay(500);
2828
}
@@ -32,7 +32,7 @@ int main() {
3232
// return 0;
3333

3434
// mvpkt_t pkt = servo.read_goal_speed_packet(1);
35-
mvpkt_t pkt = servo.makeReadPacket(1, AX::GOAL_SPEED, 2);
35+
mvpkt_t pkt = AX12::makeReadPacket(1, AX::GOAL_SPEED, 2);
3636
// pprint(pkt);
3737
int num = serial.write(pkt);
3838
cout << ">> sent: " << num << endl;

examples/unix/sync_write.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,18 @@
1010
#include <mv.h>
1111

1212
using namespace std;
13+
using namespace Protocol1;
1314

1415
int main() {
1516

16-
AX12 servo;
17-
SerialPort serial;
17+
// AX12 servo;
18+
ServoPort serial;
1819
// string port = "/dev/tty.usbserial-A904MISU";
1920
string port =
2021
"/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A904MISU-if00-port0";
21-
serial.begin(port);
22+
serial.init(port);
2223

23-
mvpkt_t t = servo.makeTorquePacket(1, false);
24+
mvpkt_t t = AX12::makeTorquePacket(1, false);
2425
serial.write(t);
2526

2627
vector<uint16_t> angles{0, 233, 765, 457, 986, 234, 511};
@@ -29,7 +30,7 @@ int main() {
2930
for (const auto &v : angles) {
3031
vector<ServoMoveSpeed_t> ss{
3132
{1, v, 0}, {2, 100, 0}, {3, 100, 0}, {4, 100, 0}};
32-
mvpkt_t mv = servo.makeMovePacket(ss);
33+
mvpkt_t mv = AX12::makeMovePacket(ss);
3334
// pprint(mv);
3435
serial.write(mv);
3536

format.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
#!/bin/zsh
22

3-
clang-format -style=file:../dotfiles/clang-format.yml -i src/**/*.hpp src/**/*.h examples/**/*.cpp test/**/*.cpp
3+
FILE=~/github/dotfiles/clang-format.yml
4+
5+
clang-format -style=file:${FILE} -i src/**/*.hpp src/**/*.h examples/**/*.cpp test/**/*.cpp

0 commit comments

Comments
 (0)