amiro-os / components / FileSystemInputOutput / FSIOPowerManagement.cpp @ b3d6a364
History | View | Annotate | Download (1.78 KB)
1 | 58fe0e0b | Thomas Schöpping | #include <amiro/FileSystemInputOutput/FSIOPowerManagement.hpp> |
---|---|---|---|
2 | |||
3 | using namespace amiro; |
||
4 | using namespace amiro::fileSystemIo; |
||
5 | |||
6 | msg_t |
||
7 | FSIOPowerManagement:: |
||
8 | getVcnl4020Offset (uint16_t *buffer, uint8_t idx) { |
||
9 | |||
10 | msg_t bytesWritten = 0;
|
||
11 | const uint8_t bufferSize = sizeof(uint16_t); |
||
12 | |||
13 | // Check if the vcnl index is in a valid range
|
||
14 | if (idx >= sizeof(PowerManagement_1_1::vcnl4020offset)) { |
||
15 | return WRONG_INDEX;
|
||
16 | } |
||
17 | |||
18 | // Get the data out of the memory
|
||
19 | switch (this->BSMV) { |
||
20 | case 0x01u: |
||
21 | // Set the pointer to the address
|
||
22 | chFileStreamSeek((BaseFileStream*)&at24c01, offsetof(FSIOPowerManagement::PowerManagement_1_1, vcnl4020offset[idx])); |
||
23 | if (this->bsmv >= 0x01u) { |
||
24 | bytesWritten = chSequentialStreamRead((BaseFileStream*)&at24c01, (uint8_t*) buffer, bufferSize); |
||
25 | } else {
|
||
26 | return NOT_IMPLEMENTED;
|
||
27 | } |
||
28 | break;
|
||
29 | } |
||
30 | |||
31 | if (bytesWritten != bufferSize) {
|
||
32 | return IO_ERROR;
|
||
33 | } else {
|
||
34 | return OK;
|
||
35 | } |
||
36 | } |
||
37 | |||
38 | msg_t |
||
39 | FSIOPowerManagement:: |
||
40 | setVcnl4020Offset (uint16_t buffer, uint8_t idx) { |
||
41 | |||
42 | msg_t bytesWritten = 0;
|
||
43 | const uint8_t bufferSize = sizeof(uint16_t); |
||
44 | |||
45 | // Check if the vcnl index is in a valid range
|
||
46 | if (idx >= sizeof(PowerManagement_1_1::vcnl4020offset)) { |
||
47 | return WRONG_INDEX;
|
||
48 | } |
||
49 | |||
50 | // Get the data out of the memory
|
||
51 | switch (this->BSMV) { |
||
52 | case 0x01u: |
||
53 | // Set the pointer to the address
|
||
54 | chFileStreamSeek((BaseFileStream*)&at24c01, offsetof(FSIOPowerManagement::PowerManagement_1_1, vcnl4020offset[idx])); |
||
55 | if (this->bsmv >= 0x01u) { |
||
56 | bytesWritten = chSequentialStreamWrite((BaseFileStream*)&at24c01, (const uint8_t*) &buffer, bufferSize);
|
||
57 | } else {
|
||
58 | return NOT_IMPLEMENTED;
|
||
59 | } |
||
60 | break;
|
||
61 | } |
||
62 | |||
63 | if (bytesWritten != bufferSize) {
|
||
64 | return IO_ERROR;
|
||
65 | } else {
|
||
66 | return OK;
|
||
67 | } |
||
68 | } |