Update device drivers

This commit is contained in:
fvanroie 2021-02-21 20:48:41 +01:00
parent cc4cc54c22
commit 748fe57334
10 changed files with 99 additions and 14 deletions

View File

@ -1,3 +1,6 @@
/* MIT License - Copyright (c) 2020 Francis Van Roie
For full license information read the LICENSE file in the project folder */
#include "device.h"
#if defined(LANBONL8)

View File

@ -39,6 +39,8 @@ class BaseDevice {
virtual void init()
{}
virtual void show_info()
{}
virtual void post_setup()
{}
virtual void loop()
@ -60,13 +62,21 @@ class BaseDevice {
return true;
}
virtual size_t get_free_max_block()
{}
{
return 0;
}
virtual size_t get_free_heap()
{}
{
return 0;
}
virtual uint8_t get_heap_fragmentation()
{}
{
return 0;
}
virtual uint16_t get_cpu_frequency()
{}
{
return 0;
}
};
} // namespace dev

View File

@ -1,3 +1,6 @@
/* MIT License - Copyright (c) 2020 Francis Van Roie
For full license information read the LICENSE file in the project folder */
#if defined(ESP32)
#include "Arduino.h"
@ -23,6 +26,13 @@ void Esp32Device::reboot()
ESP.restart();
}
void Esp32Device::show_info()
{
LOG_VERBOSE(TAG_DEV, F("Processor : ESP32"));
LOG_VERBOSE(TAG_DEV, F("CPU freq. : %i MHz"), get_cpu_frequency());
// LOG_VERBOSE(TAG_DEV, F("Voltage : %2.2f V"), ESP.getVcc() / 918.0); // 918 empirically determined
}
const char* Esp32Device::get_hostname()
{
return _hostname.c_str();

View File

@ -21,6 +21,7 @@ class Esp32Device : public BaseDevice {
_backlight_level = 100;
}
void reboot() override;
void show_info() override;
const char* get_hostname();
void set_hostname(const char*);

View File

@ -1,3 +1,6 @@
/* MIT License - Copyright (c) 2020 Francis Van Roie
For full license information read the LICENSE file in the project folder */
#include "lanbonl8.h"
#if defined(LANBONL8)

View File

@ -1,3 +1,6 @@
/* MIT License - Copyright (c) 2020 Francis Van Roie
For full license information read the LICENSE file in the project folder */
#include "m5stackcore2.h"
#if defined(M5STACK)

View File

@ -1,3 +1,6 @@
/* MIT License - Copyright (c) 2020 Francis Van Roie
For full license information read the LICENSE file in the project folder */
#if defined(ESP8266)
#include "Arduino.h"
@ -17,6 +20,13 @@ void Esp8266Device::reboot()
ESP.restart();
}
void Esp8266Device::show_info()
{
LOG_VERBOSE(TAG_DEV, F("Processor : ESP8266"));
LOG_VERBOSE(TAG_DEV, F("CPU freq. : %i MHz"), get_cpu_frequency());
LOG_VERBOSE(TAG_DEV, F("Voltage : %2.2f V"), ESP.getVcc() / 918.0); // 918 empirically determined
}
const char* Esp8266Device::get_hostname()
{
return _hostname.c_str();
@ -32,7 +42,7 @@ void Esp8266Device::set_backlight_pin(uint8_t pin)
/* Setup Backlight Control Pin */
if(pin >= 0) {
LOG_VERBOSE(TAG_GUI, F("Backlight : Pin %d"), pin);
pinMode(backlight_pin, OUTPUT);
pinMode(_backlight_pin, OUTPUT);
update_backlight();
}
}
@ -40,7 +50,7 @@ void Esp8266Device::set_backlight_pin(uint8_t pin)
void Esp8266Device::set_backlight_level(uint8_t level)
{
_backlight_level = level >= 0 ? level : 0;
_backlight_level = _backlight_level <= 100 ? backlight_level : 100;
_backlight_level = _backlight_level <= 100 ? _backlight_level : 100;
update_backlight();
}
@ -65,7 +75,7 @@ void Esp8266Device::update_backlight()
{
if(_backlight_pin == -1) return;
analogWrite(backlight_pin, _backlight_power ? map(_backlight_level, 0, 100, 0, 1023) : 0);
analogWrite(_backlight_pin, _backlight_power ? map(_backlight_level, 0, 100, 0, 1023) : 0);
}
size_t Esp8266Device::get_free_max_block()

View File

@ -16,13 +16,14 @@ class Esp8266Device : public BaseDevice {
public:
Esp8266Device()
{
hostname = "plate";
backlight_pin = TFT_BCKL;
backlight_power = 1;
backlight_level = 100;
_hostname = "plate";
_backlight_pin = TFT_BCKL;
_backlight_power = 1;
_backlight_level = 100;
}
void reboot() override;
void show_info() override;
const char* get_hostname();
void set_hostname(const char*);

View File

@ -1,3 +1,6 @@
/* MIT License - Copyright (c) 2020 Francis Van Roie
For full license information read the LICENSE file in the project folder */
#if defined(WINDOWS)
#include <cstdint>
@ -6,16 +9,39 @@
#include "hasp_win32.h"
#include "hasp_conf.h"
#include "hasp_debug.h"
#include "hasp/hasp_utilities.h"
#include "hasp_debug.h"
#include "display/monitor.h"
namespace dev {
static inline void native_cpuid(unsigned int* eax, unsigned int* ebx, unsigned int* ecx, unsigned int* edx)
{
/* ecx is often an input as well as an output. */
asm volatile("cpuid" : "=a"(*eax), "=b"(*ebx), "=c"(*ecx), "=d"(*edx) : "0"(*eax), "2"(*ecx) : "memory");
}
void Win32Device::reboot()
{}
void Win32Device::show_info()
{
unsigned int eax, ebx, ecx, edx;
eax = 0;
native_cpuid(&eax, &ebx, &ecx, &edx);
printf("EAX: %08X EBX: %08X ECX: %08X EDX: %08X\n", eax, ebx, ecx, edx);
char vendor[13];
memcpy(vendor, &ebx, 4);
memcpy(vendor + 4, &edx, 4);
memcpy(vendor + 8, &ecx, 4);
vendor[12] = '\0';
LOG_VERBOSE(0, F("Processor : %s"), vendor);
LOG_VERBOSE(0, F("CPU freq. : %i MHz"), get_cpu_frequency());
}
const char* Win32Device::get_hostname()
{
return _hostname.c_str();
@ -77,7 +103,10 @@ size_t Win32Device::get_free_max_block()
size_t Win32Device::get_free_heap(void)
{
return 0;
MEMORYSTATUSEX status;
status.dwLength = sizeof(status);
GlobalMemoryStatusEx(&status);
return status.ullAvailPhys;
}
uint8_t Win32Device::get_heap_fragmentation()

View File

@ -20,13 +20,28 @@ class Win32Device : public BaseDevice {
public:
Win32Device()
{
_hostname = "winplate";
char buffer[MAX_COMPUTERNAME_LENGTH + 1];
DWORD length = sizeof(buffer);
if(GetComputerNameExA((COMPUTER_NAME_FORMAT)ComputerNameNetBIOS, buffer, &length)) {
_hostname = buffer;
} else if(GetComputerNameExA((COMPUTER_NAME_FORMAT)ComputerNameDnsHostname, buffer, &length)) {
_hostname = buffer;
} else if(GetComputerNameExA((COMPUTER_NAME_FORMAT)ComputerNamePhysicalDnsHostname, buffer, &length)) {
_hostname = buffer;
} else if(GetComputerNameExA((COMPUTER_NAME_FORMAT)ComputerNamePhysicalDnsDomain, buffer, &length)) {
_hostname = buffer;
} else {
_hostname = "localhost";
}
// _backlight_pin = -1;
_backlight_power = 1;
_backlight_level = 100;
}
void reboot() override;
void show_info() override;
const char* get_hostname();
void set_hostname(const char*);