From 6a6fef9090b3f46034eeb9a350713fe42f4be1f3 Mon Sep 17 00:00:00 2001 From: moonglow Date: Tue, 16 Feb 2021 15:54:51 +0300 Subject: [PATCH] +add PCAN X6 definitions --- Makefile | 3 +++ Src/pcanpro_fd_protocol.c | 16 +++++++++++++++- Src/pcanpro_usbd.c | 6 +++--- Src/pcanpro_usbd.h | 2 +- Src/usbd_desc.c | 5 +++++ 5 files changed, 27 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 816a278..335db12 100644 --- a/Makefile +++ b/Makefile @@ -162,6 +162,9 @@ pro_fd: fd: $(MAKE) BOARD=fd DEBUG=0 OPT=-Os PROTO=Src/pcanpro_fd_protocol.c BOARD_FLAGS='-DPCAN_FD=1 -DINCLUDE_LIN_INTERFACE=0' elf hex bin +pcan_x6: + $(MAKE) BOARD=pcan_x6 DEBUG=0 OPT=-Os PROTO=Src/pcanpro_fd_protocol.c BOARD_FLAGS='-DPCAN_X6=1 -DINCLUDE_LIN_INTERFACE=0' elf hex bin + ####################################### # build the application diff --git a/Src/pcanpro_fd_protocol.c b/Src/pcanpro_fd_protocol.c index a1c8d19..a4c911b 100644 --- a/Src/pcanpro_fd_protocol.c +++ b/Src/pcanpro_fd_protocol.c @@ -135,14 +135,28 @@ uint8_t pcan_protocol_device_setup( USBD_HandleTypeDef *pdev, USBD_SetupReqTyped .size_of = sizeof( struct pcan_usbfd_fw_info ), .type = 2, .hw_type = 1, +#if ( PCAN_X6 == 1 ) + .bl_version = { 1, 1, 0 }, + .hw_version = 3, +#else .bl_version = { 2, 1, 0 }, /* bootloader v > 2 support massstorage mode */ .hw_version = 2, +#endif .fw_version = { 3, 2, 0 }, .dev_id[0] = 0xFFFFFFFF, .dev_id[1] = 0xFFFFFFFF, .ser_no = 0xFFFFFFFF, .flags = 0x00000000, - .unk = { 0x01, 0x81, 0x02, 0x03, 0x82, 0x00, 0x00, 0x00 } + .unk = { + 0x01, /* cmd_out */ + 0x81, /* cmd_in */ + 0x02, /* write */ + 0x03, /* write */ + 0x82, /* read */ + 0x00, + 0x00, + 0x00 + } }; /* windows/linux has different struct size */ fwi.size_of = req->wLength; diff --git a/Src/pcanpro_usbd.c b/Src/pcanpro_usbd.c index d237813..d4977cd 100644 --- a/Src/pcanpro_usbd.c +++ b/Src/pcanpro_usbd.c @@ -16,7 +16,7 @@ struct t_pcanpro_description USB_ENDPOINT_DESCRIPTOR ep2_i0; USB_ENDPOINT_DESCRIPTOR ep3_i0; USB_ENDPOINT_DESCRIPTOR ep4_i0; -#if ( PCAN_PRO ) || ( PCAN_PRO_FD ) +#if ( PCAN_PRO ) || ( PCAN_PRO_FD ) || ( PCAN_X6) USB_ENDPOINT_DESCRIPTOR ep5_i0; USB_ENDPOINT_DESCRIPTOR ep6_i0; #endif @@ -75,7 +75,7 @@ __ALIGN_BEGIN static struct t_pcanpro_description pcanpro_dev __ALIGN_END = .bDescriptorType = USB_INTERFACE_DESCRIPTOR_TYPE, .bInterfaceNumber = 0, .bAlternateSetting = 0, -#if ( PCAN_PRO ) || ( PCAN_PRO_FD ) +#if ( PCAN_PRO ) || ( PCAN_PRO_FD ) || ( PCAN_X6) .bNumEndpoints = 6, #else .bNumEndpoints = 4, @@ -121,7 +121,7 @@ __ALIGN_BEGIN static struct t_pcanpro_description pcanpro_dev __ALIGN_END = .wMaxPacketSize = 64,/* FS: 64, HS: 512 */ .bInterval = 0, }, -#if ( PCAN_PRO ) || ( PCAN_PRO_FD ) +#if ( PCAN_PRO ) || ( PCAN_PRO_FD ) || ( PCAN_X6) .ep5_i0 = { .bLength = sizeof( USB_ENDPOINT_DESCRIPTOR ), diff --git a/Src/pcanpro_usbd.h b/Src/pcanpro_usbd.h index 08fb20d..d89de31 100644 --- a/Src/pcanpro_usbd.h +++ b/Src/pcanpro_usbd.h @@ -18,7 +18,7 @@ #define PCAN_USB_EP_MSGIN_CH2 0x83 -#if ( PCAN_PRO_FD ) || ( PCAN_FD ) +#if ( PCAN_PRO_FD ) || ( PCAN_FD ) || ( PCAN_X6) #define PCAN_DATA_PACKET_SIZE (256) #define PCAN_CMD_PACKET_SIZE (128) #elif ( PCAN_PRO ) diff --git a/Src/usbd_desc.c b/Src/usbd_desc.c index 848ad61..80911bf 100644 --- a/Src/usbd_desc.c +++ b/Src/usbd_desc.c @@ -21,6 +21,11 @@ #define USBD_PRODUCT_STRING_HS "PCAN-USB-PRO" #define USBD_INTERFACE_CAN_STRING_HS "PCAN-USB-PRO CAN Device" #define USBD_INTERFACE_LIN_STRING_HS "PCAN-USB-PRO LIN Device" +#elif PCAN_X6 +#define USBD_PID_HS 0x0014 +#define USBD_PRODUCT_STRING_HS "PCAN-USB X6" +#define USBD_INTERFACE_CAN_STRING_HS "PCAN-USB X6 CAN Device" +#define USBD_INTERFACE_LIN_STRING_HS "PCAN-USB X6 LIN Device" #else #error Oops #endif