mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-19 00:43:54 +08:00
Merge pull request #116 from commaai/revert-114-new_panda_code
Revert "Pulled in new panda firmware and updated boardd to support the changes."
old-commit-hash: 68485aa4e4
This commit is contained in:
@@ -205,7 +205,7 @@ struct CanData {
|
||||
address @0 :UInt32;
|
||||
busTime @1 :UInt16;
|
||||
dat @2 :Data;
|
||||
src @3 :UInt8;
|
||||
src @3 :Int8;
|
||||
}
|
||||
|
||||
struct ThermalData {
|
||||
|
||||
2
panda
2
panda
Submodule panda updated: 27a8af1107...5409c51041
@@ -31,16 +31,11 @@ pthread_mutex_t usb_lock;
|
||||
|
||||
bool spoofing_started = false;
|
||||
bool fake_send = false;
|
||||
bool loopback_can = false;
|
||||
|
||||
// double the FIFO size
|
||||
#define RECV_SIZE (0x1000)
|
||||
#define TIMEOUT 0
|
||||
|
||||
#define SAFETY_NOOUTPUT 0x0000
|
||||
#define SAFETY_HONDA 0x0001
|
||||
#define SAFETY_ALLOUTPUT 0x1337
|
||||
|
||||
bool usb_connect() {
|
||||
int err;
|
||||
|
||||
@@ -53,36 +48,22 @@ bool usb_connect() {
|
||||
err = libusb_claim_interface(dev_handle, 0);
|
||||
if (err != 0) { return false; }
|
||||
|
||||
if(loopback_can) {
|
||||
libusb_control_transfer(dev_handle, 0xc0, 0xe5, 1, 0, NULL, 0, TIMEOUT);
|
||||
}
|
||||
|
||||
// power off ESP
|
||||
libusb_control_transfer(dev_handle, 0xc0, 0xd9, 0, 0, NULL, 0, TIMEOUT);
|
||||
|
||||
// forward CAN1 to CAN3...soon
|
||||
//libusb_control_transfer(dev_handle, 0xc0, 0xdd, 1, 2, NULL, 0, TIMEOUT);
|
||||
|
||||
|
||||
// set UART modes for Honda Accord
|
||||
for (int uart = 2; uart <= 3; uart++) {
|
||||
// 9600 baud
|
||||
libusb_control_transfer(dev_handle, 0x40, 0xe1, uart, 9600, NULL, 0, TIMEOUT);
|
||||
libusb_control_transfer(dev_handle, 0xc0, 0xe1, uart, 9600, NULL, 0, TIMEOUT);
|
||||
// even parity
|
||||
libusb_control_transfer(dev_handle, 0x40, 0xe2, uart, 1, NULL, 0, TIMEOUT);
|
||||
libusb_control_transfer(dev_handle, 0xc0, 0xe2, uart, 1, NULL, 0, TIMEOUT);
|
||||
// callback 1
|
||||
libusb_control_transfer(dev_handle, 0x40, 0xe3, uart, 1, NULL, 0, TIMEOUT);
|
||||
libusb_control_transfer(dev_handle, 0xc0, 0xe3, uart, 1, NULL, 0, TIMEOUT);
|
||||
}
|
||||
|
||||
// TODO: Boardd should be able to set the baud rate
|
||||
int baud = 500000;
|
||||
libusb_control_transfer(dev_handle, 0x40, 0xde, 0, 0,
|
||||
(unsigned char *)&baud, sizeof(baud), TIMEOUT); // CAN1
|
||||
libusb_control_transfer(dev_handle, 0x40, 0xde, 1, 0,
|
||||
(unsigned char *)&baud, sizeof(baud), TIMEOUT); // CAN2
|
||||
|
||||
// TODO: Boardd should be able to be told which safety model to use
|
||||
libusb_control_transfer(dev_handle, 0x40, 0xdc, SAFETY_HONDA, 0, NULL, 0, TIMEOUT);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -109,7 +90,7 @@ void can_recv(void *s) {
|
||||
|
||||
// do recv
|
||||
pthread_mutex_lock(&usb_lock);
|
||||
|
||||
|
||||
do {
|
||||
err = libusb_bulk_transfer(dev_handle, 0x81, (uint8_t*)data, RECV_SIZE, &recv, TIMEOUT);
|
||||
if (err != 0) { handle_usb_issue(err, __func__); }
|
||||
@@ -146,13 +127,13 @@ void can_recv(void *s) {
|
||||
canData[i].setBusTime(data[i*4+1] >> 16);
|
||||
int len = data[i*4+1]&0xF;
|
||||
canData[i].setDat(kj::arrayPtr((uint8_t*)&data[i*4+2], len));
|
||||
canData[i].setSrc((data[i*4+1] >> 4) & 0xff);
|
||||
canData[i].setSrc((data[i*4+1] >> 4) & 0xf);
|
||||
}
|
||||
|
||||
// send to can
|
||||
auto words = capnp::messageToFlatArray(msg);
|
||||
auto bytes = words.asBytes();
|
||||
zmq_send(s, bytes.begin(), bytes.size(), 0);
|
||||
zmq_send(s, bytes.begin(), bytes.size(), 0);
|
||||
}
|
||||
|
||||
void can_health(void *s) {
|
||||
@@ -200,7 +181,7 @@ void can_health(void *s) {
|
||||
// send to health
|
||||
auto words = capnp::messageToFlatArray(msg);
|
||||
auto bytes = words.asBytes();
|
||||
zmq_send(s, bytes.begin(), bytes.size(), 0);
|
||||
zmq_send(s, bytes.begin(), bytes.size(), 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -335,10 +316,6 @@ int main() {
|
||||
fake_send = true;
|
||||
}
|
||||
|
||||
if(getenv("BOARDD_LOOPBACK")){
|
||||
loopback_can = true;
|
||||
}
|
||||
|
||||
// init libusb
|
||||
err = libusb_init(&ctx);
|
||||
assert(err == 0);
|
||||
@@ -380,3 +357,4 @@ int main() {
|
||||
libusb_close(dev_handle);
|
||||
libusb_exit(ctx);
|
||||
}
|
||||
|
||||
|
||||
@@ -18,10 +18,6 @@ except Exception:
|
||||
|
||||
# TODO: rewrite in C to save CPU
|
||||
|
||||
SAFETY_NOOUTPUT = 0
|
||||
SAFETY_HONDA = 1
|
||||
SAFETY_ALLOUTPUT = 0x1337
|
||||
|
||||
# *** serialization functions ***
|
||||
def can_list_to_can_capnp(can_msgs, msgtype='can'):
|
||||
dat = messaging.new_message()
|
||||
@@ -98,7 +94,6 @@ def can_init():
|
||||
if device.getVendorID() == 0xbbaa and device.getProductID() == 0xddcc:
|
||||
handle = device.open()
|
||||
handle.claimInterface(0)
|
||||
handle.controlWrite(0x40, 0xdc, SAFETY_HONDA, 0, b'')
|
||||
|
||||
if handle is None:
|
||||
print "CAN NOT FOUND"
|
||||
@@ -195,3 +190,4 @@ def main(gctx=None):
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
"""Run boardd with the BOARDD_LOOPBACK envvar before running this test."""
|
||||
|
||||
import os
|
||||
import random
|
||||
import zmq
|
||||
import time
|
||||
|
||||
from selfdrive.boardd.boardd import can_list_to_can_capnp
|
||||
from selfdrive.messaging import drain_sock, pub_sock, sub_sock
|
||||
from selfdrive.services import service_list
|
||||
|
||||
def get_test_string():
|
||||
return b"test"+os.urandom(10)
|
||||
|
||||
BUS = 0
|
||||
|
||||
def main():
|
||||
context = zmq.Context()
|
||||
|
||||
rcv = sub_sock(context, service_list['can'].port) # port 8006
|
||||
snd = pub_sock(context, service_list['sendcan'].port) # port 8017
|
||||
time.sleep(0.3) # wait to bind before send/recv
|
||||
|
||||
for _ in range(10):
|
||||
at = random.randint(1024, 2000)
|
||||
st = get_test_string()[0:8]
|
||||
snd.send(can_list_to_can_capnp([[at, 0, st, 0]], msgtype='sendcan').to_bytes())
|
||||
time.sleep(0.1)
|
||||
res = drain_sock(rcv, True)
|
||||
assert len(res) == 1
|
||||
|
||||
res = res[0].can
|
||||
assert len(res) == 2
|
||||
|
||||
msg0, msg1 = res
|
||||
|
||||
assert msg0.dat == st
|
||||
assert msg1.dat == st
|
||||
|
||||
assert msg0.address == at
|
||||
assert msg1.address == at
|
||||
|
||||
assert msg0.src == 0x80 | BUS
|
||||
assert msg1.src == BUS
|
||||
|
||||
print("Success")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user