-
Notifications
You must be signed in to change notification settings - Fork 215
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
aop: Support Ambient Light Sensor (ALS) endpoint
``` [syslog] * [ALSCT720.cpp:967]updateDynamicIntegrationParameters allAbove=0, anyBelow=1, threshold hit=0, lev > 02:0x50000000000005 (TYPE=0x5, INDEX=0x5) < 24:0x85000000000000 [als.als] Report REPORT/0xc4 #0 [als.als] Container: unk0 = 0xEC sequence = 4 timestamp = 0x0000000019352268 red = 11 green = 18 blue = 11 clear = 40 lux = 7.277451038360596 unk_zero = 0 status = 3 gain = 256 unk3 = 68 unk4 = 35 unk5 = 17874 integration_time = 378080 < 02:0x50000000000006 [syslog] * [ALSCT720.cpp:454]handleInterrupt: result: 0 (status=0x3) > 02:0x50000000000006 (TYPE=0x5, INDEX=0x6) ``` Signed-off-by: Eileen Yoon <[email protected]>
- Loading branch information
Showing
2 changed files
with
194 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
#!/usr/bin/env python3 | ||
# SPDX-License-Identifier: MIT | ||
import sys, pathlib | ||
sys.path.append(str(pathlib.Path(__file__).resolve().parents[1])) | ||
|
||
import struct | ||
from construct import * | ||
|
||
from m1n1.setup import * | ||
from m1n1.hw.dart import DART | ||
from m1n1.fw.aop.client import AOPClient | ||
from m1n1.fw.aop.ipc import * | ||
|
||
# aop nodes have no clocks described in adt for j293. it does it itself | ||
p.pmgr_adt_clocks_enable("/arm-io/aop") | ||
p.pmgr_adt_clocks_enable("/arm-io/dart-aop") | ||
|
||
dart = DART.from_adt(u, "/arm-io/dart-aop", | ||
iova_range=(u.adt["/arm-io/dart-aop"].vm_base, 0x1000000000)) | ||
dart.initialize() | ||
|
||
aop = AOPClient(u, "/arm-io/aop", dart) | ||
aop.update_bootargs({ | ||
'p0CE': 0x20000, | ||
'laCn': 0x0, | ||
'tPOA': 0x1, | ||
"gila": 0x80, | ||
}) | ||
aop.verbose = 4 | ||
|
||
p.dapf_init_all() | ||
aop.asc.OUTBOX_CTRL.val = 0x20001 # (FIFOCNT=0x0, OVERFLOW=0, EMPTY=1, FULL=0, RPTR=0x0, WPTR=0x0, ENABLE=1) | ||
|
||
aop.start() | ||
for epno in [0x20, 0x21, 0x22, 0x24, 0x25, 0x26, 0x27, 0x28]: | ||
aop.start_ep(epno) | ||
aop.work_for(0.3) | ||
alsep = aop.als | ||
alsep.VERBOSE = True | ||
|
||
def start(): | ||
#ret = alsep.roundtrip(GetProperty(key=AOPPropKey.MANUFACTURER)) | ||
#print(ret.rets.value.decode("ascii")) # FireFish2 | ||
ret = alsep.send_notify(GetProperty(key=AOPPropKey.MANUFACTURER)) | ||
ret = alsep.send_notify(ALSSetPropertyVerbosity(level=0xffffffff)) # retcode: 0 | ||
# [syslog] * [ALSAOPDriver.cpp:267]setProperty Setting log level = -1 | ||
|
||
dump = """ | ||
00000000 09 00 00 10 00 00 00 00 02 24 00 00 00 00 00 00 |.........$......| | ||
00000010 00 00 00 00 00 00 00 00 99 00 00 00 02 10 04 00 |................| | ||
00000020 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |$...............| | ||
00000030 00 00 00 00 0b 00 00 00 01 02 00 00 00 ad ab 0a |................| | ||
00000040 00 01 91 00 9a 59 fa 00 64 00 64 00 08 08 08 04 |.....Y..d.d.....| | ||
00000050 09 63 eb ff ff d4 0e 00 00 c7 ce ff ff 23 2e 00 |.c...........#..| | ||
00000060 00 a2 08 cd 14 d6 5f 77 05 00 00 00 00 00 02 00 |......_w........| | ||
00000070 80 aa 7e 53 7f 10 84 d9 7e 68 7f 68 7f b3 7f f1 |..~S....~h.h....| | ||
00000080 7d 00 00 00 00 00 03 5b 7e 56 7e 00 80 ca 83 e0 |}......[~V~.....| | ||
00000090 7e 79 7f 00 80 8d 80 f1 7f 00 00 00 00 00 02 f3 |~y..............| | ||
000000a0 7c 00 80 38 7f 88 83 0b 7f 05 7f b9 7f b9 7f 0f ||..8............| | ||
000000b0 7e 00 00 00 00 00 06 75 7e 38 7f 69 7f bf 83 f2 |~......u~8.i....| | ||
000000c0 7e 16 7f 4e 7f 33 7f 1f 7d |~..N.3..} | | ||
""" | ||
ret = alsep.send_notify(ALSSetPropertyCalibration(value=chexundump(dump)[0x38:])) | ||
# [syslog] * [ALSCT720.cpp:1138]loadALSCalibrationData: ALS sensor is calibrated | ||
# retcode: 0xe00002bc | ||
|
||
ret = alsep.send_notify(ALSSetPropertyInterval(interval=200000)) | ||
# [syslog] * [ALSCT720.cpp:690]configureSensor - Configure sensor with gain 8 and integration time 197380 | ||
# [syslog] * [ALSCT720.cpp:708]setSensorEnabled - Enabling the sensor. | ||
|
||
if 0: # test that on/off works | ||
aop.work_for(0.5) | ||
ret = alsep.send_notify(ALSSetPropertyInterval(interval=0)) | ||
# [syslog] * [ALSCT720.cpp:598]setProperty: set report interval 0, _wakeHintMode = 0 | ||
# [syslog] * [ALSCT720.cpp:735]setSensorEnabled - Disabling the sensor. | ||
ret = alsep.send_notify(ALSSetPropertyInterval(interval=200000)) | ||
|
||
while True: | ||
aop.work() | ||
|
||
try: | ||
start() | ||
except KeyboardInterrupt: | ||
pass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters