port fix for issue #15

This commit is contained in:
Hubert Denkmair 2019-10-29 20:53:19 +01:00
parent f38ddcacf5
commit 73dfc741c8

View File

@ -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);
} }
} }