APM:Libraries
UART_OSD.cpp
Go to the documentation of this file.
1 /*
2  (c) 2017 night_ghost@ykoctpa.ru
3 
4  * UART_OSD.cpp --- AP_HAL_F4Light OSD implementation via fake UART
5  *
6  */
7 
8 #include <AP_HAL/AP_HAL.h>
9 
10 #if CONFIG_HAL_BOARD == HAL_BOARD_F4LIGHT && defined(BOARD_OSD_NAME) && defined(BOARD_OSD_CS_PIN)
11 
12 #include "UART_OSD.h"
13 
14 #include "SPIDevice.h"
15 
16 #include <stdio.h>
17 #include <unistd.h>
18 #include <stdlib.h>
19 #include <errno.h>
20 #include <fcntl.h>
21 
22 #include <gpio_hal.h>
23 
24 #include "osd/osd.h"
25 
26 using namespace F4Light;
27 using namespace OSDns;
28 
30  _initialized(false),
31  _blocking(true)
32 {
33 }
34 
35 void UART_OSD::begin(uint32_t baud) {
36  (void)baud;
37 
38  if(_initialized) return;
39 
41  _initialized = true;
42 }
43 
44 
45 uint32_t UART_OSD::available() {
46  return OSDns::osd_available();
47 }
48 
49 int16_t UART_OSD::read() {
50  if (available() <= 0) return -1;
51  return OSDns::osd_getc();
52 }
53 
54 uint32_t UART_OSD::txspace() {
55  return OSDns::osd_txspace();
56 }
57 
58 size_t UART_OSD::write(uint8_t c) {
59 
60  if (!_initialized) {
61  return 0;
62  }
63 
64  OSDns::osd_putc(c);
65 
66  return 1;
67 }
68 
69 size_t UART_OSD::write(const uint8_t *buffer, size_t size)
70 {
71  size_t n = 0;
72  while (size--) {
73  n += write(*buffer++);
74  }
75  return n;
76 }
77 
78 #endif // CONFIG_HAL_BOARD
void osd_putc(uint8_t c)
static uint8_t buffer[SRXL_FRAMELEN_MAX]
Definition: srxl.cpp:56
ssize_t write(int fd, const void *buf, size_t count)
POSIX Write count bytes from *buf to fileno fd.
Definition: posix.c:1169
int16_t osd_getc()
static AP_HAL::OwnPtr< F4Light::SPIDevice > _get_device(const char *name)
Definition: SPIDevice.cpp:429
-*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*-
ssize_t read(int fd, void *buf, size_t count)
POSIX read count bytes from *buf to fileno fd.
Definition: posix.c:995
int16_t osd_available()
uint32_t osd_txspace()
#define BOARD_OSD_NAME
Definition: board.h:146
void osd_begin(AP_HAL::OwnPtr< F4Light::SPIDevice > spi)