You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			42 lines
		
	
	
		
			1018 B
		
	
	
	
		
			C++
		
	
			
		
		
	
	
			42 lines
		
	
	
		
			1018 B
		
	
	
	
		
			C++
		
	
| #include "serial.h"
 | |
| 
 | |
| Serial::Serial(ComPort port, BaudRate baud_rate, DataBits data_bits,
 | |
|                StopBits stop_bits, Parity parity)
 | |
|     : port(port) {
 | |
|   // initialize FIFO mode, no irqs for sending, irq if first byte was received
 | |
| 
 | |
|   // line control, select r/w of divisor latch register
 | |
|   writeReg(LINE_CONTROL_REGISTER, DIVISOR_LATCH_ACCESS_BIT);
 | |
| 
 | |
|   // TODO: Implement here the correct handling of input arguments
 | |
|   (void)baud_rate;
 | |
|   (void)data_bits;
 | |
|   (void)stop_bits;
 | |
|   (void)parity;
 | |
| 
 | |
|   // FIFO: Enable & clear buffers
 | |
|   writeReg(FIFO_CONTROL_REGISTER,
 | |
|            ENABLE_FIFO | CLEAR_RECEIVE_FIFO | CLEAR_TRANSMIT_FIFO);
 | |
| 
 | |
|   // Modem Control: OUT2 (0000 1000) must be set for interrupt
 | |
|   writeReg(MODEM_CONTROL_REGISTER, OUT_2);
 | |
| }
 | |
| 
 | |
| void Serial::writeReg(RegisterIndex reg, char out) {
 | |
|   // TODO: Implement
 | |
|   (void)reg;
 | |
|   (void)out;
 | |
| }
 | |
| 
 | |
| char Serial::readReg(RegisterIndex reg) {
 | |
|   // TODO: Implement
 | |
|   (void)reg;
 | |
|   return '\0';
 | |
| }
 | |
| 
 | |
| int Serial::write(char out) {
 | |
|   // TODO: Implement
 | |
|   (void)out;
 | |
|   return 0;
 | |
| }
 |