mirror of
https://github.com/bettse/seader.git
synced 2026-06-08 02:12:35 +00:00
Starting work on sending
This commit is contained in:
@@ -38,6 +38,7 @@ void seader_t_1_reset() {
|
||||
}
|
||||
|
||||
void seader_t_1_set_IFSD(Seader* seader) {
|
||||
FURI_LOG_D(TAG, "Setting IFSD to %02X", IFSD_VALUE);
|
||||
SeaderWorker* seader_worker = seader->worker;
|
||||
SeaderUartBridge* seader_uart = seader_worker->uart;
|
||||
uint8_t frame[5];
|
||||
@@ -68,7 +69,11 @@ void seader_t_1_IFSD_response(Seader* seader) {
|
||||
|
||||
frame_len = seader_add_lrc(frame, frame_len);
|
||||
|
||||
seader_ccid_XfrBlock(seader_uart, frame, frame_len);
|
||||
if(seader_worker->sam_comm_type == SeaderSamCommunicationTypeSec1210) {
|
||||
seader_ccid_XfrBlock(seader_uart, frame, frame_len);
|
||||
} else {
|
||||
seader_uart_send(seader_uart, frame, frame_len);
|
||||
}
|
||||
}
|
||||
|
||||
void seader_t_1_send_ack(Seader* seader) {
|
||||
@@ -86,7 +91,11 @@ void seader_t_1_send_ack(Seader* seader) {
|
||||
|
||||
//FURI_LOG_D(TAG, "Sending R-Block ACK: PCB: %02x", frame[1]);
|
||||
|
||||
seader_ccid_XfrBlock(seader_uart, frame, frame_len);
|
||||
if(seader_worker->sam_comm_type == SeaderSamCommunicationTypeSec1210) {
|
||||
seader_ccid_XfrBlock(seader_uart, frame, frame_len);
|
||||
} else {
|
||||
seader_uart_send(seader_uart, frame, frame_len);
|
||||
}
|
||||
}
|
||||
|
||||
BitBuffer* seader_t_1_tx_buffer;
|
||||
@@ -112,7 +121,11 @@ void seader_send_t1_chunk(Seader* seader, uint8_t PCB, uint8_t* chunk, size_t le
|
||||
frame_len = seader_add_lrc(frame, frame_len);
|
||||
|
||||
FURI_LOG_D(TAG, "seader_send_t1_chunk T=1 frame: PCB: %02x, LEN: %02x", PCB, len);
|
||||
seader_ccid_XfrBlock(seader_uart, frame, frame_len);
|
||||
if(seader_worker->sam_comm_type == SeaderSamCommunicationTypeSec1210) {
|
||||
seader_ccid_XfrBlock(seader_uart, frame, frame_len);
|
||||
} else {
|
||||
seader_uart_send(seader_uart, frame, frame_len);
|
||||
}
|
||||
free(frame);
|
||||
}
|
||||
|
||||
|
||||
@@ -137,11 +137,7 @@ size_t seader_uart_process_buffer_raw(Seader* seader, uint8_t* cmd, size_t cmd_l
|
||||
if(seader_worker->callback) {
|
||||
seader_worker->callback(SeaderWorkerEventSamPresent, seader_worker->context);
|
||||
}
|
||||
memset(cmd, 0, sizeof(SAM_ATR));
|
||||
cmd_len -= sizeof(SAM_ATR);
|
||||
if(cmd_len > 0) {
|
||||
memmove(cmd, cmd + sizeof(SAM_ATR), cmd_len);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
cmd++;
|
||||
@@ -241,6 +237,12 @@ SeaderUartBridge* seader_uart_enable(SeaderUartConfig* cfg, Seader* seader) {
|
||||
return seader_uart;
|
||||
}
|
||||
|
||||
void seader_uart_send(SeaderUartBridge* seader_uart, uint8_t* data, size_t len) {
|
||||
memcpy(seader_uart->tx_buf, data, len);
|
||||
seader_uart->tx_len = len;
|
||||
furi_thread_flags_set(furi_thread_get_id(seader_uart->tx_thread), WorkerEvtSamRx);
|
||||
}
|
||||
|
||||
int32_t seader_uart_tx_thread(void* context) {
|
||||
Seader* seader = (Seader*)context;
|
||||
SeaderUartBridge* seader_uart = seader->uart;
|
||||
|
||||
Reference in New Issue
Block a user