serial.c was divided into 2 layers, split_scom.c and serial.c. The upper layer split_scomm.c is called from matrix.c. The lower layer serial.c accesses the hardware.pull/3608/head
							parent
							
								
									4b945ac358
								
							
						
					
					
						commit
						8804993a89
					
				@ -1,3 +1,4 @@
 | 
				
			||||
SRC += rev2/matrix.c \
 | 
				
			||||
	   rev2/split_util.c \
 | 
				
			||||
	   ws2812.c
 | 
				
			||||
SRC += rev2/matrix.c
 | 
				
			||||
SRC += rev2/split_util.c
 | 
				
			||||
SRC += rev2/split_scomm.c
 | 
				
			||||
SRC += ws2812.c
 | 
				
			||||
 | 
				
			||||
@ -0,0 +1,36 @@
 | 
				
			||||
#ifdef USE_SERIAL
 | 
				
			||||
#include <stdbool.h>
 | 
				
			||||
#include <stdint.h>
 | 
				
			||||
#include <stddef.h>
 | 
				
			||||
#include <split_scomm.h>
 | 
				
			||||
#include "serial.h"
 | 
				
			||||
 | 
				
			||||
uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0};
 | 
				
			||||
uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0};
 | 
				
			||||
uint8_t volatile status0 = 0;
 | 
				
			||||
 | 
				
			||||
SSTD_t transactions[] = {
 | 
				
			||||
    { (uint8_t *)&status0,
 | 
				
			||||
      sizeof(serial_master_buffer), (uint8_t *)serial_master_buffer,
 | 
				
			||||
      sizeof(serial_slave_buffer), (uint8_t *)serial_slave_buffer
 | 
				
			||||
    }
 | 
				
			||||
};
 | 
				
			||||
 | 
				
			||||
void serial_master_init(void)
 | 
				
			||||
{
 | 
				
			||||
    soft_serial_initiator_init(transactions);
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
void serial_slave_init(void)
 | 
				
			||||
{
 | 
				
			||||
    soft_serial_target_init(transactions);
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
// 0 => no error
 | 
				
			||||
// 1 => slave did not respond
 | 
				
			||||
// 2 => checksum error
 | 
				
			||||
int serial_update_buffers(int master_update)
 | 
				
			||||
{
 | 
				
			||||
    return soft_serial_transaction(0);
 | 
				
			||||
}
 | 
				
			||||
#endif /* USE_SERIAL */
 | 
				
			||||
@ -0,0 +1,15 @@
 | 
				
			||||
#ifndef SPLIT_COMM_H
 | 
				
			||||
#define SPLIT_COMM_H
 | 
				
			||||
 | 
				
			||||
// Buffers for master - slave communication
 | 
				
			||||
#define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
 | 
				
			||||
#define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2
 | 
				
			||||
 | 
				
			||||
extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH];
 | 
				
			||||
extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH];
 | 
				
			||||
 | 
				
			||||
void serial_master_init(void);
 | 
				
			||||
void serial_slave_init(void);
 | 
				
			||||
int serial_update_buffers(int master_changed);
 | 
				
			||||
 | 
				
			||||
#endif /* SPLIT_COMM_H */
 | 
				
			||||
					Loading…
					
					
				
		Reference in new issue