mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-09-02 06:03:43 +08:00
57 lines
2.0 KiB
Python
Executable File
57 lines
2.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import cereal.messaging as messaging
|
|
from openpilot.common.params import Params
|
|
from openpilot.common.swaglog import cloudlog
|
|
from openpilot.system.micd import SAMPLE_RATE, SAMPLE_BUFFER
|
|
|
|
FEEDBACK_MAX_DURATION = 10.0
|
|
FEEDBACKD_SERVICES = ('rawAudioData', 'bookmarkButton', 'visionSpeedLimitBookmark')
|
|
|
|
|
|
def main():
|
|
params_memory = Params(memory=True)
|
|
pm = messaging.PubMaster(['userBookmark', 'audioFeedback'])
|
|
sm = messaging.SubMaster(list(FEEDBACKD_SERVICES))
|
|
should_record_audio = False
|
|
block_num = 0
|
|
last_wheel_bookmark_counter = params_memory.get_int("WheelButtonBookmarkCounter")
|
|
|
|
while True:
|
|
sm.update()
|
|
bookmark_requests = 0
|
|
|
|
if should_record_audio and sm.updated['rawAudioData']:
|
|
raw_audio = sm['rawAudioData']
|
|
msg = messaging.new_message('audioFeedback', valid=True)
|
|
msg.audioFeedback.audio.data = raw_audio.data
|
|
msg.audioFeedback.audio.sampleRate = raw_audio.sampleRate
|
|
msg.audioFeedback.blockNum = block_num
|
|
block_num += 1
|
|
if (block_num * SAMPLE_BUFFER / SAMPLE_RATE) >= FEEDBACK_MAX_DURATION:
|
|
bookmark_requests += 1 # send bookmark at end of audio segment
|
|
should_record_audio = False
|
|
cloudlog.info("10-second recording completed - stopping audio feedback")
|
|
pm.send('audioFeedback', msg)
|
|
|
|
if sm.updated['bookmarkButton']:
|
|
cloudlog.info("Bookmark button pressed!")
|
|
bookmark_requests += 1
|
|
|
|
if sm.updated['visionSpeedLimitBookmark']:
|
|
cloudlog.info("Vision speed limit bookmark requested!")
|
|
bookmark_requests += 1
|
|
|
|
wheel_bookmark_counter = params_memory.get_int("WheelButtonBookmarkCounter")
|
|
if wheel_bookmark_counter > last_wheel_bookmark_counter:
|
|
bookmark_requests += wheel_bookmark_counter - last_wheel_bookmark_counter
|
|
last_wheel_bookmark_counter = wheel_bookmark_counter
|
|
cloudlog.info("Wheel button bookmark requested!")
|
|
|
|
for _ in range(bookmark_requests):
|
|
msg = messaging.new_message('userBookmark', valid=True)
|
|
pm.send('userBookmark', msg)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|