feat: implement slave handler and api
This commit is contained in:
parent
8d1b69d304
commit
16ca573610
4 changed files with 772 additions and 0 deletions
40
usage.py
Normal file
40
usage.py
Normal file
|
@ -0,0 +1,40 @@
|
|||
from i2c_handler import I2CSlaveHandler, Packet
|
||||
|
||||
class MyRobotHandler(I2CSlaveHandler):
|
||||
def process_packet(self, packet: Packet):
|
||||
"""
|
||||
Example: Override process_packet to perform actions based on packet command/type.
|
||||
"""
|
||||
cmd = packet[0]
|
||||
target = packet[1]
|
||||
speed = (packet[2] << 8) | packet[3]
|
||||
# Convert speed from unsigned to signed if needed
|
||||
if speed & 0x8000:
|
||||
speed -= 0x10000
|
||||
|
||||
print(f"Custom handler: Command 0x{cmd:02X}, Target 0x{target:02X}, Speed {speed}")
|
||||
|
||||
# Example: Perform a motor action for command 0x01
|
||||
if cmd == 0x01: # Set Motor Speed
|
||||
print(f"Setting motor {target} speed to {speed}")
|
||||
# TODO: Add your motor control code here
|
||||
|
||||
elif cmd == 0xFF: # Emergency Stop
|
||||
print("Emergency stop received!")
|
||||
# TODO: Add your emergency stop code here
|
||||
|
||||
else:
|
||||
print("Unknown command")
|
||||
|
||||
# Usage example
|
||||
def main():
|
||||
handler = MyRobotHandler(i2c_id=0, sda=0, scl=1, slave_addr=0x41)
|
||||
print("MyRobotHandler I2C slave started")
|
||||
try:
|
||||
handler.handle()
|
||||
except KeyboardInterrupt:
|
||||
handler.deinit()
|
||||
print("I2C slave stopped")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Add table
Add a link
Reference in a new issue