working codez

This commit is contained in:
2016-05-16 02:25:21 +02:00
parent 8ecce09ba8
commit 4ecd54786a
3 changed files with 41 additions and 17 deletions
+3 -2
View File
@@ -3,6 +3,7 @@
#include "debug.h"
#include "com_fileio.h"
#include "dspin.h"
#include "blinky.h"
SBMP_Endpoint *dlnk_ep;
@@ -32,7 +33,7 @@ static void dlnk_rx_bridge(ComIface *iface)
{
uint8_t b;
STATUS_LED_Port->BSRR = STATUS_LED_Pin;
led_on(LED_SPARE);
while (com_rx(iface, &b)) {
SBMP_RxStatus st = sbmp_ep_receive(dlnk_ep, b);
@@ -44,7 +45,7 @@ static void dlnk_rx_bridge(ComIface *iface)
}
}
STATUS_LED_Port->BRR = STATUS_LED_Pin;
led_off(LED_SPARE);
}
/** Datalink Tx func */
+2 -2
View File
@@ -7,8 +7,8 @@
#include "main.h"
#include <sbmp.h>
#define DG_MOTOR_HOME 40
#define DG_MOTOR_GOTO 41
#define DG_MOTOR_START 30
#define DG_MOTOR_STOP 31
// wifi status & control
#define DG_SETMODE_AP 44 // request AP mode (AP button pressed)
+36 -13
View File
@@ -67,17 +67,27 @@ static void try_sbmp_hsk(void *unused)
}
/** Left button was pressed */
static void left_btn_click(void)
static void left_btn_down(void)
{
led_blink(LED_BUSY, 100);
dSPIN_Move(FWD, STEPS_360 / 4); // rotate by 90deg
dSPIN_Run(REV, STEPS_360*2);
}
/** Right button was pressed */
static void right_btn_click(void)
static void right_btn_down(void)
{
led_blink(LED_ERROR, 100);
dSPIN_Move(REV, STEPS_360 / 4); // rotate by -90deg
dSPIN_Run(FWD, STEPS_360*2);
}
/** Left button was pressed */
static void left_btn_up(void)
{
dSPIN_Soft_Stop();
}
/** Right button was pressed */
static void right_btn_up(void)
{
dSPIN_Soft_Stop();
}
/** Datagram rx on SBMP (extern declated in datalink.h) */
@@ -87,14 +97,25 @@ void dlnk_rx(SBMP_Datagram *dg)
PayloadParser pp = pp_start(dg->payload, dg->length);
int32_t speed;
uint8_t fwd;
led_blink(LED_BUSY, 50);
switch (dg->type) {
case DG_MOTOR_HOME:
dSPIN_Go_Home();
case DG_MOTOR_START:
fwd = (bool) pp_u8(&pp);
speed = pp_u32(&pp);
if (speed > 6144*3) {
speed = 6144*3;
}
dSPIN_Run(fwd ? FWD : REV, speed);
break;
case DG_MOTOR_GOTO:;
int32_t pos = pp_i32(&pp);
dSPIN_Go_To(pos);
case DG_MOTOR_STOP:
dSPIN_Soft_Stop();
break;
}
}
@@ -112,13 +133,15 @@ static void conf_buttons(void)
// button A
debo.GPIOx = BUTTON_A_Port;
debo.pin = BUTTON_A_Pin;
debo.rising_cb = left_btn_click;
debo.rising_cb = left_btn_down;
debo.falling_cb = left_btn_up;
debo_register_pin(&debo);
// Button B
debo.GPIOx = BUTTON_B_Port;
debo.pin = BUTTON_B_Pin;
debo.rising_cb = right_btn_click;
debo.rising_cb = right_btn_down;
debo.falling_cb = right_btn_up;
debo_register_pin(&debo);
add_periodic_task(debo_periodic_task, NULL, 10, true);