mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-08-21 22:13:12 -07:00
Send one Feedback History Packet per Event (#41)
This commit is contained in:
parent
7a7c86e63c
commit
778e0564c9
1 changed files with 19 additions and 21 deletions
|
@ -123,10 +123,24 @@ static bool controller_state_equals_for_feedback_history(ChiakiControllerState *
|
||||||
&& a->r2_state == b->r2_state;
|
&& a->r2_state == b->r2_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void feedback_sender_send_history_packet(ChiakiFeedbackSender *feedback_sender)
|
||||||
|
{
|
||||||
|
uint8_t buf[0x300];
|
||||||
|
size_t buf_size = sizeof(buf);
|
||||||
|
ChiakiErrorCode err = chiaki_feedback_history_buffer_format(&feedback_sender->history_buf, buf, &buf_size);
|
||||||
|
if(err != CHIAKI_ERR_SUCCESS)
|
||||||
|
{
|
||||||
|
CHIAKI_LOGE(feedback_sender->log, "Feedback Sender failed to format history buffer");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//CHIAKI_LOGD(feedback_sender->log, "Feedback History:");
|
||||||
|
//chiaki_log_hexdump(feedback_sender->log, CHIAKI_LOG_DEBUG, buf, buf_size);
|
||||||
|
chiaki_takion_send_feedback_history(feedback_sender->takion, feedback_sender->history_seq_num++, buf, buf_size);
|
||||||
|
}
|
||||||
|
|
||||||
static void feedback_sender_send_history(ChiakiFeedbackSender *feedback_sender)
|
static void feedback_sender_send_history(ChiakiFeedbackSender *feedback_sender)
|
||||||
{
|
{
|
||||||
// TODO: Is it legal to have more than one new event per packet?
|
|
||||||
size_t new_events_count = 0;
|
|
||||||
ChiakiControllerState *state_prev = &feedback_sender->controller_state_prev;
|
ChiakiControllerState *state_prev = &feedback_sender->controller_state_prev;
|
||||||
ChiakiControllerState *state_now = &feedback_sender->controller_state;
|
ChiakiControllerState *state_now = &feedback_sender->controller_state;
|
||||||
uint64_t buttons_prev = state_prev->buttons;
|
uint64_t buttons_prev = state_prev->buttons;
|
||||||
|
@ -146,7 +160,7 @@ static void feedback_sender_send_history(ChiakiFeedbackSender *feedback_sender)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
chiaki_feedback_history_buffer_push(&feedback_sender->history_buf, &event);
|
chiaki_feedback_history_buffer_push(&feedback_sender->history_buf, &event);
|
||||||
new_events_count++;
|
feedback_sender_send_history_packet(feedback_sender);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,7 +171,7 @@ static void feedback_sender_send_history(ChiakiFeedbackSender *feedback_sender)
|
||||||
if(err == CHIAKI_ERR_SUCCESS)
|
if(err == CHIAKI_ERR_SUCCESS)
|
||||||
{
|
{
|
||||||
chiaki_feedback_history_buffer_push(&feedback_sender->history_buf, &event);
|
chiaki_feedback_history_buffer_push(&feedback_sender->history_buf, &event);
|
||||||
new_events_count++;
|
feedback_sender_send_history_packet(feedback_sender);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CHIAKI_LOGE(feedback_sender->log, "Feedback Sender failed to format button history event for L2");
|
CHIAKI_LOGE(feedback_sender->log, "Feedback Sender failed to format button history event for L2");
|
||||||
|
@ -170,27 +184,11 @@ static void feedback_sender_send_history(ChiakiFeedbackSender *feedback_sender)
|
||||||
if(err == CHIAKI_ERR_SUCCESS)
|
if(err == CHIAKI_ERR_SUCCESS)
|
||||||
{
|
{
|
||||||
chiaki_feedback_history_buffer_push(&feedback_sender->history_buf, &event);
|
chiaki_feedback_history_buffer_push(&feedback_sender->history_buf, &event);
|
||||||
new_events_count++;
|
feedback_sender_send_history_packet(feedback_sender);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
CHIAKI_LOGE(feedback_sender->log, "Feedback Sender failed to format button history event for R2");
|
CHIAKI_LOGE(feedback_sender->log, "Feedback Sender failed to format button history event for R2");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!new_events_count) // TODO: also send on timeout sometimes?
|
|
||||||
return;
|
|
||||||
|
|
||||||
uint8_t buf[0x300];
|
|
||||||
size_t buf_size = sizeof(buf);
|
|
||||||
ChiakiErrorCode err = chiaki_feedback_history_buffer_format(&feedback_sender->history_buf, buf, &buf_size);
|
|
||||||
if(err != CHIAKI_ERR_SUCCESS)
|
|
||||||
{
|
|
||||||
CHIAKI_LOGE(feedback_sender->log, "Feedback Sender failed to format history buffer");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//CHIAKI_LOGD(feedback_sender->log, "Feedback History:");
|
|
||||||
//chiaki_log_hexdump(feedback_sender->log, CHIAKI_LOG_DEBUG, buf, buf_size);
|
|
||||||
chiaki_takion_send_feedback_history(feedback_sender->takion, feedback_sender->history_seq_num++, buf, buf_size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool state_cond_check(void *user)
|
static bool state_cond_check(void *user)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue