mirror of
https://github.com/meshtastic/firmware.git
synced 2025-04-26 01:52:48 +00:00

* Make STM compile again and update toolchain. The binary is too big for the flash. WIP * Making progress with OSFS, still WIP * more progress, still too big. Adding RAK3172 to the equasion * Make STM compile again and update toolchain. The binary is too big for the flash. WIP * Making progress with OSFS, still WIP * more progress, still too big. Adding RAK3172 to the equasion * still too big * minimize build * trunk fmt * fix a couple of symbol clashes * trunk fmt * down to 101% with a release vs. debug build and omitting the flash strings * fix compilation * fix compilation once more * update protobufs linkage * - Toolchain updated - Fixed macro error * silence compiler warning note: do something about this assert... * new toolkit and fix Power.cpp * STM32WL make it fit (#4330) * Add option to exclude I2C parts The I2C hals and related code uses a significant amount of flash space and aren't required for a basic node. * Add option to disable Admin and NodeInfo modules Disabled by default in minimal build. This saves a significant amount of flash * Disable unused hals These use up significant flash * Add float support for printf for debugging Makes serial look nice for debugging * This breaks my build for some reason * These build flags can save a bit of flash * Don't disable NodeInfo and Admin modules in minimal build They fit in flash * Don't include printf float support by default Only useful for debugging --------- Co-authored-by: Adam Lawson <dev@goshawk22.uk> --------- Co-authored-by: Ben Meadors <benmmeadors@gmail.com> Co-authored-by: Adam Lawson <dev@goshawk22.uk>
62 lines
1.5 KiB
C++
62 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include "configuration.h"
|
|
#if !MESHTASTIC_EXCLUDE_I2C
|
|
|
|
#include <map>
|
|
#include <memory>
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#include <Wire.h>
|
|
|
|
#include "ScanI2C.h"
|
|
|
|
#include "../concurrency/Lock.h"
|
|
|
|
class ScanI2CTwoWire : public ScanI2C
|
|
{
|
|
public:
|
|
void scanPort(ScanI2C::I2CPort) override;
|
|
|
|
void scanPort(ScanI2C::I2CPort, uint8_t *, uint8_t) override;
|
|
|
|
ScanI2C::FoundDevice find(ScanI2C::DeviceType) const override;
|
|
|
|
TwoWire *fetchI2CBus(ScanI2C::DeviceAddress) const;
|
|
|
|
bool exists(ScanI2C::DeviceType) const override;
|
|
|
|
size_t countDevices() const override;
|
|
|
|
protected:
|
|
FoundDevice firstOfOrNONE(size_t, DeviceType[]) const override;
|
|
|
|
private:
|
|
typedef struct RegisterLocation {
|
|
DeviceAddress i2cAddress;
|
|
RegisterAddress registerAddress;
|
|
|
|
RegisterLocation(DeviceAddress deviceAddress, RegisterAddress registerAddress)
|
|
: i2cAddress(deviceAddress), registerAddress(registerAddress)
|
|
{
|
|
}
|
|
|
|
} RegisterLocation;
|
|
|
|
typedef uint8_t ResponseWidth;
|
|
|
|
std::map<ScanI2C::DeviceAddress, ScanI2C::DeviceType> foundDevices;
|
|
|
|
// note: prone to overwriting if multiple devices of a type are added at different addresses (rare?)
|
|
std::map<ScanI2C::DeviceType, ScanI2C::DeviceAddress> deviceAddresses;
|
|
|
|
concurrency::Lock lock;
|
|
|
|
void printATECCInfo() const;
|
|
|
|
uint16_t getRegisterValue(const RegisterLocation &, ResponseWidth) const;
|
|
|
|
DeviceType probeOLED(ScanI2C::DeviceAddress) const;
|
|
};
|
|
#endif |