Skip to content

Commit

Permalink
modules: add chat module
Browse files Browse the repository at this point in the history
  • Loading branch information
rmackay9 committed Dec 9, 2023
1 parent f37c415 commit ee423ef
Show file tree
Hide file tree
Showing 5 changed files with 704 additions and 0 deletions.
86 changes: 86 additions & 0 deletions MAVProxy/modules/mavproxy_chat/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
'''
AI Chat Module
Randy Mackay, December 2023
This module allows MAVProxy to interface with OpenAI Assitants
'''

from MAVProxy.modules.lib import mp_module
from MAVProxy.modules.lib import mp_settings
from MAVProxy.modules.lib.mp_settings import MPSetting
from MAVProxy.modules.lib import mp_util
from MAVProxy.modules.lib.wx_loader import wx
from MAVProxy.modules.mavproxy_chat import chat_window
from threading import Thread
from pymavlink import mavutil
import time

if mp_util.has_wxpython:
from MAVProxy.modules.lib.mp_menu import MPMenuItem
from MAVProxy.modules.lib.mp_menu import MPMenuSubMenu

class chat(mp_module.MPModule):
def __init__(self, mpstate):

# call parent class
super(chat, self).__init__(mpstate, "chat", "OpenAI chat support")

# register module and commands
self.add_command('chat', self.cmd_chat, "chat module", ["show"])

# add user settable settings
self.chat_settings = mp_settings.MPSettings(
[ ('verbose', bool, False),
])

# keep reference to mpstate
self.mpstate = mpstate

# init mavlink message counters
self.packets_mytarget = 0
self.packets_othertarget = 0

# add menu to map and console
if mp_util.has_wxpython:
menu = MPMenuSubMenu('Chat',
items=[
MPMenuItem('Show', 'show', 'show chat input window'),
])
map = self.module('map')
if map is not None:
map.add_menu(menu)
console = self.module('console')
if console is not None:
console.add_menu(menu)

# create chat window
self.chat_window = chat_window.chat_window(self.mpstate)

# show help on command line options
def usage(self):
return "Usage: chat <show>"

# control behaviour of the module
def cmd_chat(self, args):
if len(args) == 0:
print(self.usage())
elif args[0] == "show":
self.show()
else:
print(self.usage())

# show chat input window
def show(self):
self.chat_window.show()

# handle incoming mavlink packets
def mavlink_packet(self, m):
if m.get_type() == 'GLOBAL_POSITION_INT':
if self.settings.target_system == 0 or self.settings.target_system == m.get_srcSystem():
self.packets_mytarget += 1
else:
self.packets_othertarget += 1

# initialise module
def init(mpstate):
return chat(mpstate)
Loading

0 comments on commit ee423ef

Please sign in to comment.