Skip to content
Snippets Groups Projects
Commit 642e19c6 authored by Lucia Thais De Oliveira Gude's avatar Lucia Thais De Oliveira Gude
Browse files

bluetooth functionality

parent e662330a
Branches
No related tags found
No related merge requests found
......@@ -27,6 +27,7 @@ M.getline = function()
local pos = string.find(code, "/n")
if pos then
local firstMessage = string.sub(code, 1, pos-1)
code = string.sub(code, pos, #code)
return firstMessage
else
return ""
......
......@@ -6,7 +6,8 @@ local velocidad
local ledRing
local laser
local device
local udp = nil
--local udp = nil
local ble = nil
local next = next
--Variables del estado de la ejecución
......@@ -149,12 +150,15 @@ init_interprete = function()
--Inicio dispositivos
if(ipCliente ~= 1) then
local socket = require("__socket")
udp = assert(socket.udp())
udp:setoption('broadcast', true)
assert(udp:setsockname("192.168.4.1", 2016))
end
--if(ipCliente ~= 1) then
--local socket = require("__socket")
--udp = assert(socket.udp())
--udp:setoption('broadcast', true)
--assert(udp:setsockname("192.168.4.1", 2016))
--end
ble = require("ble_net")
ledRing = require('led_ring')
omni = require('omni')
if(requires_odometry == '1') then
......@@ -388,9 +392,11 @@ end
SWITCH_ESTADO = function(estado)
estado_actual = estado
if(ipCliente ~= 1) then
udp:sendto('ESTADO*' .. estado, ipCliente, 2016)
end
--if(ipCliente ~= 1) then
--udp:sendto('ESTADO*' .. estado, ipCliente, 2016)
--end
ble.send('ESTADO*' .. estado)
end
IS_ESTADO = function(estado)
......
......@@ -5,9 +5,14 @@ if(patas_arriba) then
end
--Inicio wifi
local wifi = require('wifi_net')
wifi.init()
ipCliente = 1
--local wifi = require('wifi_net')
--wifi.init()
--Start bluetooth
local ble = require('ble_net')
ble.init()
--ipCliente = 1
local colorSensor = require('color')
local loop_interval = nvs.read("vpl","loop_interval", 150)
......@@ -20,11 +25,12 @@ local get_code = function (clientGetCode)
io.output(file)
while true do
local data, err, partial = clientGetCode:receive('*l')
--local data, err, partial = clientGetCode:receive('*l')
local data = ble.getline()
if(err == 'closed') then
break
end
--if(err == 'closed') then
--break
--end
if(data == 'CMD_END_CODE') then
io.close(file)
......@@ -96,45 +102,53 @@ local function split(s, delimiter)
end
--Servidor receptor de comandos:
local sock = require ('socket')
local servidor = sock.tcp()
servidor:bind('192.168.4.1', 2018)
servidor:listen(1)
--local sock = require ('socket')
--local servidor = sock.tcp()
--servidor:bind('192.168.4.1', 2018)
--servidor:listen(1)
local cmdExecuted = 'CMD_EXECUTED\n'
if(patas_arriba) then
while true do
local client = servidor:accept()
local dat, er, part = client:receive('*l')
print('data: ', dat)
--local client = servidor:accept()
--local dat, er, part = client:receive('*l')
--print('data: ', dat)
local dat = ble.getline()
local dataSplit = split(dat, '*')
--Me quedo la ip del primer client
if(ipCliente == 1) then
ipCliente = split(client:getpeername(), ' ')[1]
end
--if(ipCliente == 1) then
--ipCliente = split(client:getpeername(), ' ')[1]
--end
--Escucho comandos solamente del primer client
if(ipCliente == split(client:getpeername(), ' ')[1]) then
--if(ipCliente == split(client:getpeername(), ' ')[1]) then
if(dataSplit[1] == 'CMD_RUN_PROGRAM') then
init_interprete()
client:send(cmdExecuted)
--client:send(cmdExecuted)
--Send by bluetooth cmdExecuted
ble.send(cmdExecuted)
run_vpl_program()
elseif (dataSplit[1] == 'CMD_GET_CODE') then
get_code(client)
client:send(cmdExecuted)
--client:send(cmdExecuted)
--Send by bluetooth cmdExecuted
ble.send(cmdExecuted)
elseif (dataSplit[1] == 'CMD_CALIBRATE_COLOR') then
ledRing.clear()
calibrateColor(dataSplit[2])
client:send(cmdExecuted)
--client:send(cmdExecuted)
--Send by bluetooth cmdExecuted
ble.send(cmdExecuted)
ledRing.set_all(255,255,255,true)
elseif (dataSplit[1] == 'CMD_WRITE_NVS') then
nvs.write(dataSplit[2], dataSplit[3], dataSplit[4])
client:send(cmdExecuted)
end
else
client:send('ERR_MULTIPLE_CLIENTS\n')
--client:send(cmdExecuted)
--Send by bluetooth cmdExecuted
ble.send(cmdExecuted)
end
--else
--client:send('ERR_MULTIPLE_CLIENTS\n')
--end
end
else
......
......@@ -46,8 +46,10 @@ M.laser_ring = require('laser_ring')
M.led_ring = require'led_ring'
--- WiFi UDP network susbsystem. This points to @{wifi_net}
M.wifi_net = require('wifi_net')
M.wifi_net.init()
--M.wifi_net = require('wifi_net')
--M.wifi_net.init()
M.ble_net = require('ble_net')
M.ble_net.init()
local filter = nvs.read("laser", "filter", nil) or nil
......@@ -63,9 +65,9 @@ local laser_ring_publisher = function (d1,d2,d3,d4,d5,d6)
measure_cb(d1,d2,d3,d4,d5,d6)
local sens_str = nil
if (filter == nil) then
sens_str = LASER_CMD .. DELIMITER .. implode(DELIMITER, M.laser_ring.raw_d)
sens_str = LASER_CMD .. DELIMITER .. table.concat(M.laser_ring.raw_d, DELIMITER)
else
sens_str = LASER_CMD .. DELIMITER .. implode(DELIMITER, M.laser_ring.norm_d)
sens_str = LASER_CMD .. DELIMITER .. table.concat(M.laser_ring.norm_d, DELIMITER)
end
M.wifi_net.broadcast(sens_str)
end
......@@ -83,7 +85,7 @@ M.color.color_cb.append(color_cb)
--M.laser_ring.enable(true)
--M.color.enable(true)
print 'Robot started:'
print ('robot started. used mem:'..math.floor(collectgarbage("count")*1024))
thread.list(false, false, true)
return M
......@@ -16,14 +16,40 @@ TEST_DIR="source/tests"
# Array of source files
declare -a LOCAL_FILES=(
$AHSM_DIR/ahsm.lua
$AHSM_DIR/tools/debug_plain.lua
$AHSM_DIR/tools/to_dot.lua
$MODULES_DIR/autorun.lua
$MODULES_DIR/cb_list.lua
$MODULES_DIR/color.lua
$MODULES_DIR/laser_ring.lua
$MODULES_DIR/led_ring.lua
$MODULES_DIR/main_ahsm.lua
$MODULES_DIR/omni.lua
$MODULES_DIR/proximity.lua
$MODULES_DIR/robot.lua
$MODULES_DIR/wifi_net.lua
$TEST_DIR/states/test.lua
$MODULES_AHSM_DIR/onoff.lua
$MODULES_AHSM_DIR/colorway.lua
$MODULES_AHSM_DIR/color.lua
$MODULES_AHSM_DIR/onremoteoff.lua
$MODULES_AHSM_DIR/distance.lua
$MODULES_AHSM_DIR/remotecontrol.lua
$MODULES_AHSM_DIR/ciceaapp.lua
$MODULES_AHSM_DIR/beagleboneapp.lua
$TEST_DIR/test_color_display.lua
$TEST_DIR/test_laser_ring.lua
$TEST_DIR/test_omni.lua
$TEST_DIR/test_wifi.lua
$TEST_DIR/test_ahsm.lua
$TEST_DIR/test_color.lua
$TEST_DIR/test_led_ring.lua
$TEST_DIR/test_proximity.lua
$TEST_DIR/calibrate_color.lua
$TEST_DIR/test_uart_console.lua
$TEST_DIR/test_ble.lua
$TEST_DIR/test_blecli.lua
$MODULES_DIR/interprete_vpl.lua
$MODULES_DIR/recibe_comandos.lua
$MODULES_DIR/utils.lua
......@@ -39,14 +65,40 @@ $MODULES_DIR/udp_utils.lua
# Array of destination files
declare -a REMOTE_FILES=(
ahsm.lua
debug_plain.lua
to_dot.lua
autorun.lua
cb_list.lua
color.lua
laser_ring.lua
led_ring.lua
main_ahsm.lua
omni.lua
proximity.lua
robot.lua
wifi_net.lua
states/test.lua
states/onoff.lua
states/colorway.lua
states/color.lua
states/onremoteoff.lua
states/distance.lua
states/remotecontrol.lua
states/ciceaapp.lua
states/beagleboneapp.lua
test_color_display.lua
test_laser_ring.lua
test_omni.lua
test_wifi.lua
test_ahsm.lua
test_color.lua
test_led_ring.lua
test_proximity.lua
calibrate_color.lua
test_uart_console.lua
test_ble.lua
test_blecli.lua
interprete_vpl.lua
recibe_comandos.lua
utils.lua
......@@ -84,7 +136,7 @@ if [ ! -f $TMP_FILE ]; then
for i in `seq 0 $LENGTH`; do
echo Copying ${LOCAL_FILES[$i]} ........
wcc -p COM8 -up ${LOCAL_FILES[$i]} ${REMOTE_FILES[$i]}
wcc -p /dev/ttyUSB0 -up ${LOCAL_FILES[$i]} ${REMOTE_FILES[$i]}
echo; echo
done
......@@ -96,7 +148,7 @@ else
echo
echo FILE ${LOCAL_FILES[$i]} WAS MODIFIED SINCE LAST RUN OF THIS SCRIPT, IT WILL BE COPIED
wcc -p COM8 -up ${LOCAL_FILES[$i]} ${REMOTE_FILES[$i]}
wcc -p /dev/ttyUSB0 -up ${LOCAL_FILES[$i]} ${REMOTE_FILES[$i]}
echo
fi
......@@ -107,5 +159,3 @@ fi
touch $TMP_FILE
echo Modules Updated
read
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment