diff options
| author | JF <jf@codingfield.com> | 2021-04-21 18:19:57 (GMT) |
|---|---|---|
| committer | Gitea <gitea@fake.local> | 2021-04-21 18:19:57 (GMT) |
| commit | a80e782f267cd2424d22da23d809c0c6a8ff8761 (patch) | |
| tree | ca2bdb100ea98d361296a61352679f63a507f955 /src/drivers/Bma421.h | |
| parent | 24d3eea4fba05d774ace794eb8c9b21b8f2aa8c6 (diff) | |
| parent | fefb429fb4bf1020553900d9e514d3baa9040325 (diff) | |
Merge branch 'develop' of JF/PineTime into master
Diffstat (limited to 'src/drivers/Bma421.h')
| -rw-r--r-- | src/drivers/Bma421.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/drivers/Bma421.h b/src/drivers/Bma421.h new file mode 100644 index 0000000..da021cb --- /dev/null +++ b/src/drivers/Bma421.h @@ -0,0 +1,43 @@ +#pragma once +#include <drivers/Bma421_C/bma4_defs.h> + +namespace Pinetime { + namespace Drivers { + class TwiMaster; + class Bma421 { + public: + struct Values { + uint32_t steps; + int16_t x; + int16_t y; + int16_t z; + }; + Bma421(TwiMaster& twiMaster, uint8_t twiAddress); + Bma421(const Bma421&) = delete; + Bma421& operator=(const Bma421&) = delete; + Bma421(Bma421&&) = delete; + Bma421& operator=(Bma421&&) = delete; + + /// The chip freezes the TWI bus after the softreset operation. Softreset is separated from the + /// Init() method to allow the caller to uninit and then reinit the TWI device after the softreset. + void SoftReset(); + void Init(); + Values Process(); + void ResetStepCounter(); + + void Read(uint8_t registerAddress, uint8_t *buffer, size_t size); + void Write(uint8_t registerAddress, const uint8_t *data, size_t size); + + bool IsOk() const; + + private: + void Reset(); + + TwiMaster& twiMaster; + uint8_t deviceAddress = 0x18; + struct bma4_dev bma; + bool isOk = false; + bool isResetOk = false; + }; + } +}
\ No newline at end of file |
