mirror of
https://github.com/candle-usb/candleLight_fw.git
synced 2025-02-04 06:12:55 +08:00
port fix for issue #15
This commit is contained in:
parent
f38ddcacf5
commit
73dfc741c8
39
src/main.c
39
src/main.c
@ -101,8 +101,8 @@ int main(void)
|
|||||||
struct gs_host_frame *frame = queue_pop_front(q_from_host);
|
struct gs_host_frame *frame = queue_pop_front(q_from_host);
|
||||||
if (frame != 0) { // send can message from host
|
if (frame != 0) { // send can message from host
|
||||||
if (can_send(&hCAN, frame)) {
|
if (can_send(&hCAN, frame)) {
|
||||||
// Echo sent frame back to host
|
// Echo sent frame back to host
|
||||||
frame->timestamp_us = timer_get();
|
frame->timestamp_us = timer_get();
|
||||||
send_to_host_or_enqueue(frame);
|
send_to_host_or_enqueue(frame);
|
||||||
|
|
||||||
led_indicate_trx(&hLED, led_2);
|
led_indicate_trx(&hLED, led_2);
|
||||||
@ -117,23 +117,26 @@ int main(void)
|
|||||||
|
|
||||||
if (can_is_rx_pending(&hCAN)) {
|
if (can_is_rx_pending(&hCAN)) {
|
||||||
struct gs_host_frame *frame = queue_pop_front(q_frame_pool);
|
struct gs_host_frame *frame = queue_pop_front(q_frame_pool);
|
||||||
if ((frame != 0) && can_receive(&hCAN, frame)) {
|
if (frame != 0)
|
||||||
received_count++;
|
{
|
||||||
|
if (can_receive(&hCAN, frame)) {
|
||||||
|
received_count++;
|
||||||
|
|
||||||
frame->timestamp_us = timer_get();
|
frame->timestamp_us = timer_get();
|
||||||
frame->echo_id = 0xFFFFFFFF; // not a echo frame
|
frame->echo_id = 0xFFFFFFFF; // not a echo frame
|
||||||
frame->channel = 0;
|
frame->channel = 0;
|
||||||
frame->flags = 0;
|
frame->flags = 0;
|
||||||
frame->reserved = 0;
|
frame->reserved = 0;
|
||||||
|
|
||||||
send_to_host_or_enqueue(frame);
|
send_to_host_or_enqueue(frame);
|
||||||
|
|
||||||
led_indicate_trx(&hLED, led_1);
|
led_indicate_trx(&hLED, led_1);
|
||||||
|
}
|
||||||
} else {
|
else
|
||||||
queue_push_back(q_frame_pool, frame);
|
{
|
||||||
|
queue_push_back(q_frame_pool, frame);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t can_err = can_get_error_status(&hCAN);
|
uint32_t can_err = can_get_error_status(&hCAN);
|
||||||
@ -227,15 +230,15 @@ bool send_to_host_or_enqueue(struct gs_host_frame *frame)
|
|||||||
|
|
||||||
void send_to_host()
|
void send_to_host()
|
||||||
{
|
{
|
||||||
struct gs_host_frame *frame = queue_pop_front(q_to_host);
|
struct gs_host_frame *frame = queue_pop_front(q_to_host);
|
||||||
|
|
||||||
if(!frame)
|
if(!frame)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (USBD_GS_CAN_SendFrame(&hUSB, frame) == USBD_OK) {
|
if (USBD_GS_CAN_SendFrame(&hUSB, frame) == USBD_OK) {
|
||||||
queue_push_back(q_frame_pool, frame);
|
queue_push_back(q_frame_pool, frame);
|
||||||
} else {
|
} else {
|
||||||
queue_push_front(q_to_host, frame);
|
queue_push_front(q_to_host, frame);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user