Skip to content

Commit

Permalink
Packet sequence and class id in payload
Browse files Browse the repository at this point in the history
  • Loading branch information
xgibert committed Mar 19, 2012
1 parent f9ecfd6 commit 0d43e2c
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 42 deletions.
36 changes: 3 additions & 33 deletions Makefile
Expand Up @@ -124,7 +124,6 @@ misc:
multimon:
cd $(MULTIMON); $(MAKE)

#static_h: $(MESSAGES_H) $(MESSAGES2_H) $(UBX_PROTOCOL_H) $(MTK_PROTOCOL_H) $(XSENS_PROTOCOL_H) $(DL_PROTOCOL_H) $(DL_PROTOCOL2_H)
static_h: $(MESSAGES_XML) $(UBX_PROTOCOL_H) $(MTK_PROTOCOL_H) $(XSENS_PROTOCOL_H)

usb_lib:
Expand All @@ -134,20 +133,6 @@ $(MESSAGES_XML) : $(MESSAGES_XML_CONF) tools
@echo BUILD $@
$(Q)PAPARAZZI_SRC=$(PAPARAZZI_SRC) PAPARAZZI_HOME=$(PAPARAZZI_HOME) $(TOOLS)/gen_messages_xml.out $(MESSAGES_XML_CONF) $(MESSAGES_FILES) $@ $(STATICINCLUDE)

#$(MESSAGES_H) : $(MESSAGES_XML) $(CONF_XML) tools
# $(Q)test -d $(STATICINCLUDE) || mkdir -p $(STATICINCLUDE)
# @echo BUILD $@
# $(Q)PAPARAZZI_SRC=$(PAPARAZZI_SRC) PAPARAZZI_HOME=$(PAPARAZZI_HOME) $(TOOLS)/gen_messages.out $< telemetry > /tmp/msg.h
# $(Q)mv /tmp/msg.h $@
# $(Q)chmod a+r $@

#$(MESSAGES2_H) : $(MESSAGES_XML) $(CONF_XML) tools
# $(Q)test -d $(STATICINCLUDE) || mkdir -p $(STATICINCLUDE)
# @echo BUILD $@
# $(Q)PAPARAZZI_SRC=$(PAPARAZZI_SRC) PAPARAZZI_HOME=$(PAPARAZZI_HOME) $(TOOLS)/gen_messages2.out $< telemetry > /tmp/msg2.h
# $(Q)mv /tmp/msg2.h $@
# $(Q)chmod a+r $@

$(UBX_PROTOCOL_H) : $(UBX_XML) tools
@echo BUILD $@
$(Q)PAPARAZZI_SRC=$(PAPARAZZI_SRC) PAPARAZZI_HOME=$(PAPARAZZI_HOME) $(TOOLS)/gen_ubx.out $< > /tmp/ubx.h
Expand All @@ -163,15 +148,6 @@ $(XSENS_PROTOCOL_H) : $(XSENS_XML) tools
$(Q)PAPARAZZI_SRC=$(PAPARAZZI_SRC) PAPARAZZI_HOME=$(PAPARAZZI_HOME) $(TOOLS)/gen_xsens.out $< > /tmp/xsens.h
$(Q)mv /tmp/xsens.h $@

#$(DL_PROTOCOL_H) : $(MESSAGES_XML) tools
# @echo BUILD $@
# $(Q)PAPARAZZI_SRC=$(PAPARAZZI_SRC) PAPARAZZI_HOME=$(PAPARAZZI_HOME) $(TOOLS)/gen_messages.out $< datalink > /tmp/dl.h
# $(Q)mv /tmp/dl.h $@

#$(DL_PROTOCOL2_H) : $(MESSAGES_XML) tools
# @echo BUILD $@
# $(Q)PAPARAZZI_SRC=$(PAPARAZZI_SRC) PAPARAZZI_HOME=$(PAPARAZZI_HOME) $(TOOLS)/gen_messages2.out $< datalink > /tmp/dl2.h
# $(Q)mv /tmp/dl2.h $@

include Makefile.ac

Expand Down Expand Up @@ -241,12 +217,10 @@ fast_deb:

clean:
$(Q)rm -fr dox build-stamp configure-stamp conf/%gconf.xml debian/files debian/paparazzi-base debian/paparazzi-bin
# $(Q)rm -f $(MESSAGES_H) $(MESSAGES2_H) $(UBX_PROTOCOL_H) $(MTK_PROTOCOL_H) $(DL_PROTOCOL_H)
$(Q)find . -mindepth 2 -name Makefile -exec sh -c 'echo "Cleaning {}"; $(MAKE) -C `dirname {}` $@' \;
$(Q)find . -name '*~' -exec rm -f {} \;
$(Q)rm -f paparazzi sw/simulator/launchsitl
$(Q)rm -f $(STATICINCLUDE)/*
$(Q)rm -f $(MESSAGES_XML_CONF)

cleanspaces:
find ./sw/airborne -name '*.[ch]' -exec sed -i {} -e 's/[ \t]*$$//' \;
Expand All @@ -263,6 +237,7 @@ dist_clean_irreversible: clean
rm -rf conf/maps_data conf/maps.xml
rm -rf conf/conf.xml conf/controlpanel.xml
rm -rf var
rm -f $(MESSAGES_XML_CONF)

ab_clean:
find sw/airborne -name '*~' -exec rm -f {} \;
Expand All @@ -284,16 +259,11 @@ sw/simulator/launchsitl:
cat src/$(@F) | sed s#OCAMLRUN#$(OCAMLRUN)# | sed s#OCAML#$(OCAML)# > $@
chmod a+x $@





gen_messages_macros: $(MACROS_TARGET)

#$(MACROS_TARGET) : $(MESSAGES_XML) $(CONF_XML) tools
$(MACROS_TARGET) :
$(MACROS_TARGET) : $(MESSAGES_XML_CONF) tools
@echo BUILD $@
$(Q)PAPARAZZI_SRC=$(PAPARAZZI_SRC) PAPARAZZI_HOME=$(PAPARAZZI_HOME) $(TOOLS)/gen_messages.out $(MESSAGES_XML) $(MACROS_CLASS) $(MACROS_ALIGN) > /tmp/msg.h
$(Q)PAPARAZZI_SRC=$(PAPARAZZI_SRC) PAPARAZZI_HOME=$(PAPARAZZI_HOME) $(TOOLS)/gen_messages.out $(MESSAGES_XML) $(MACROS_CLASS) $(MACROS_CLASS_ID) $(MACROS_ALIGN) > /tmp/msg.h
$(Q)mv /tmp/msg.h $@
$(Q)chmod a+r $@

5 changes: 3 additions & 2 deletions sw/airborne/firmwares/fixedwing/datalink.c
Expand Up @@ -66,8 +66,9 @@

#define MOfCm(_x) (((float)(_x))/100.)

#define SenderIdOfMsg(x) (x[0])
#define IdOfMsg(x) (x[1])
#define SenderIdOfMsg(x) (x[1])
#define IdOfClass(x) (x[2])
#define IdOfMsg(x) (x[3])

void dl_parse_msg(void) {
datalink_time = 0;
Expand Down
2 changes: 1 addition & 1 deletion sw/airborne/firmwares/rotorcraft/datalink.c
Expand Up @@ -43,7 +43,7 @@
#include "math/pprz_geodetic_int.h"
#include "subsystems/ins.h"

#define IdOfMsg(x) (x[1])
#define IdOfMsg(x) (x[3])

void dl_parse_msg(void) {

Expand Down
2 changes: 1 addition & 1 deletion sw/airborne/subsystems/datalink/pprz_transport.c
Expand Up @@ -26,6 +26,6 @@
#include "subsystems/datalink/pprz_transport.h"
#include "mcu_periph/uart.h"

uint8_t ck_a, ck_b;
uint8_t ck_a, ck_b, down_packet_seq;

struct pprz_transport pprz_tp;
2 changes: 2 additions & 0 deletions sw/airborne/subsystems/datalink/transport.h
Expand Up @@ -45,6 +45,8 @@ struct transport {
volatile bool_t msg_received;
// overrun and error flags
uint8_t ovrn, error;
// packet sequence
uint8_t packet_seq;
};

/** Transport link macros
Expand Down
1 change: 1 addition & 0 deletions sw/airborne/subsystems/datalink/xbee.c
Expand Up @@ -32,6 +32,7 @@

uint8_t xbee_cs;
uint8_t xbee_rssi;
uint8_t down_packet_seq;

struct xbee_transport xbee_tp;

Expand Down
15 changes: 15 additions & 0 deletions sw/lib/ocaml/convert.c
Expand Up @@ -82,6 +82,13 @@ c_sprint_int32(value s, value index, value x) {
return Val_unit;
}

value
c_sprint_int64(value s, value index, value x) {
int64_t *p = (int64_t*) (String_val(s) + Int_val(index));
*p = (int64_t)Int64_val(x);
return Val_unit;
}

value
c_int16_of_indexed_bytes(value s, value index)
{
Expand All @@ -105,3 +112,11 @@ c_int32_of_indexed_bytes(value s, value index)

return copy_int32(*x);
}

value
c_int64_of_indexed_bytes(value s, value index)
{
int64_t *x = (int64_t*)(String_val(s) + Int_val(index));

return copy_int64(*x);
}
10 changes: 5 additions & 5 deletions sw/tools/gen_messages_xml.ml
Expand Up @@ -231,19 +231,19 @@ module MakeCalls = struct
let make_target = "gen_messages_macros"
let make_options = ""

let make = fun class_name check_alignment ->
let make = fun class_name class_id check_alignment ->
let file = Env.paparazzi_home // "Makefile" in
let macros_target = var_include_path // ("messages_"^(String.lowercase class_name)^".h") in
let c = sprintf "make -f %s MACROS_TARGET=%s MACROS_CLASS=%s MACROS_ALIGN=%u %s %s" file macros_target class_name check_alignment make_options make_target in
let c = sprintf "make -f %s MACROS_TARGET=%s MACROS_CLASS=%s MACROS_CLASS_ID=%s MACROS_ALIGN=%u %s %s" file macros_target class_name class_id check_alignment make_options make_target in
let returned_code = Sys.command c in
if returned_code <> 0 then failwith (sprintf "Make command error (Error code: %d)" returned_code)


let generate_macros = fun classes ->
List.map (fun clas -> match (clas.g_type) with
| "datalink" -> prerr_endline ("\t Datalink Class -> Generate macros ("^clas.g_name^") [Check Alignment]"); make clas.g_name 1
| "uplink" -> prerr_endline ("\t Uplink Class -> Generate macros ("^clas.g_name^") [Check Alignment]"); make clas.g_name 1
| "downlink" -> prerr_endline ("\t Downlink Class -> Generate macros ("^clas.g_name^")"); make clas.g_name 0
| "datalink" -> prerr_endline ("\t Datalink Class -> Generate macros ("^clas.g_name^") [Check Alignment]"); make clas.g_name clas.g_id 1
| "uplink" -> prerr_endline ("\t Uplink Class -> Generate macros ("^clas.g_name^") [Check Alignment]"); make clas.g_name clas.g_id 1
| "downlink" -> prerr_endline ("\t Downlink Class -> Generate macros ("^clas.g_name^")"); make clas.g_name clas.g_id 0
| "ground" -> prerr_endline ("\t Ground Class -> Do nothing ("^clas.g_name^")")
| "airborne" -> prerr_endline ("\t Airborne Class -> Generate macros ("^clas.g_name^") ¡¡¡FIXME!!!")
| t -> failwith (sprintf "Invalid class type in generated file: %s" t)
Expand Down

0 comments on commit 0d43e2c

Please sign in to comment.