Files
MuditaOS/module-bsp/board/linux/cellular/linux_cellular.hpp

93 lines
2.5 KiB
C++

// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#ifndef PUREPHONE_LINUX_CELLULAR_HPP
#define PUREPHONE_LINUX_CELLULAR_HPP
#include "bsp/cellular/bsp_cellular.hpp"
#include <cstring>
#include <sys/epoll.h>
#include "termios.h"
#include <sys/ioctl.h>
#include "mutex.hpp"
namespace bsp
{
class LinuxCellular : public Cellular
{
private:
bool pv_SendingAllowed = true;
public:
LinuxCellular(const char *term, uint32_t portSpeed);
~LinuxCellular();
void PowerUp() override final;
void PowerDown() override final;
void Restart() override final;
uint32_t Wait(uint32_t timeout) override final;
ssize_t Read(void *buf, size_t nbytes) override final;
ssize_t Write(void *buf, size_t nbytes) override final;
void InformModemHostAsleep() override final;
void InformModemHostWakeup() override final;
void EnterSleep() override final;
void ExitSleep() override final;
void SetSpeed(uint32_t portSpeed);
void SetSendingAllowed(bool state) override final
{
pv_SendingAllowed = state;
}
bool GetSendingAllowed() override final
{
return pv_SendingAllowed;
}
void SelectAntenna(bsp::cellular::antenna antenna) override final;
bsp::cellular::antenna GetAntenna() override final;
private:
static constexpr speed_t baud_bits[] = {0,
B9600,
B19200,
B38400,
B57600,
B115200,
B230400,
B460800,
B921600,
B1500000,
B2000000,
B3000000,
B4000000};
static const uint32_t portBaudRate = 115200;
static const uint32_t MAX_EVENTS = 1;
int fd = -1;
int epoll_fd = -1;
struct epoll_event event, events[MAX_EVENTS];
cpp_freertos::MutexStandard serOutMutex;
};
} // namespace bsp
#endif // PUREPHONE_LINUX_CELLULAR_HPP