Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
3d9771403e
|
@ -90,8 +90,8 @@ powertrace_print(char *str)
|
||||||
all_lpm = energest_type_time(ENERGEST_TYPE_LPM);
|
all_lpm = energest_type_time(ENERGEST_TYPE_LPM);
|
||||||
all_transmit = energest_type_time(ENERGEST_TYPE_TRANSMIT);
|
all_transmit = energest_type_time(ENERGEST_TYPE_TRANSMIT);
|
||||||
all_listen = energest_type_time(ENERGEST_TYPE_LISTEN);
|
all_listen = energest_type_time(ENERGEST_TYPE_LISTEN);
|
||||||
all_idle_transmit = compower_idle_activity.transmit - last_idle_transmit;
|
all_idle_transmit = compower_idle_activity.transmit;
|
||||||
all_idle_listen = compower_idle_activity.listen - last_idle_listen;
|
all_idle_listen = compower_idle_activity.listen;
|
||||||
|
|
||||||
cpu = all_cpu - last_cpu;
|
cpu = all_cpu - last_cpu;
|
||||||
lpm = all_lpm - last_lpm;
|
lpm = all_lpm - last_lpm;
|
||||||
|
@ -267,7 +267,7 @@ input_sniffer(void)
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
output_sniffer(void)
|
output_sniffer(int mac_status)
|
||||||
{
|
{
|
||||||
add_packet_stats(OUTPUT);
|
add_packet_stats(OUTPUT);
|
||||||
}
|
}
|
||||||
|
@ -293,7 +293,7 @@ input_printsniffer(void)
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
output_printsniffer(void)
|
output_printsniffer(int mac_status)
|
||||||
{
|
{
|
||||||
static int seqno = 0;
|
static int seqno = 0;
|
||||||
sniffprint("O", seqno++);
|
sniffprint("O", seqno++);
|
||||||
|
|
|
@ -114,7 +114,7 @@ input_sniffer(void)
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
output_sniffer(void)
|
output_sniffer(int mac_status)
|
||||||
{
|
{
|
||||||
if(sniff_for_attributes) {
|
if(sniff_for_attributes) {
|
||||||
sniff_attributes_output(SNIFFER_ATTRIBUTES_OUTPUT);
|
sniff_attributes_output(SNIFFER_ATTRIBUTES_OUTPUT);
|
||||||
|
|
|
@ -329,7 +329,10 @@ schedule_powercycle_fixed(struct rtimer *t, rtimer_clock_t fixed_time)
|
||||||
static void
|
static void
|
||||||
powercycle_turn_radio_off(void)
|
powercycle_turn_radio_off(void)
|
||||||
{
|
{
|
||||||
|
#if CONTIKIMAC_CONF_COMPOWER
|
||||||
uint8_t was_on = radio_is_on;
|
uint8_t was_on = radio_is_on;
|
||||||
|
#endif /* CONTIKIMAC_CONF_COMPOWER */
|
||||||
|
|
||||||
if(we_are_sending == 0) {
|
if(we_are_sending == 0) {
|
||||||
off();
|
off();
|
||||||
#if CONTIKIMAC_CONF_COMPOWER
|
#if CONTIKIMAC_CONF_COMPOWER
|
||||||
|
@ -633,35 +636,35 @@ send_packet(mac_callback_t mac_callback, void *mac_callback_ptr)
|
||||||
}
|
}
|
||||||
packetbuf_set_attr(PACKETBUF_ATTR_MAC_ACK, 1);
|
packetbuf_set_attr(PACKETBUF_ATTR_MAC_ACK, 1);
|
||||||
|
|
||||||
if(WITH_CONTIKIMAC_HEADER) {
|
#if WITH_CONTIKIMAC_HEADER
|
||||||
hdrlen = packetbuf_totlen();
|
hdrlen = packetbuf_totlen();
|
||||||
if(packetbuf_hdralloc(sizeof(struct hdr)) == 0) {
|
if(packetbuf_hdralloc(sizeof(struct hdr)) == 0) {
|
||||||
/* Failed to allocate space for contikimac header */
|
/* Failed to allocate space for contikimac header */
|
||||||
PRINTF("contikimac: send failed, too large header\n");
|
PRINTF("contikimac: send failed, too large header\n");
|
||||||
return MAC_TX_ERR_FATAL;
|
return MAC_TX_ERR_FATAL;
|
||||||
}
|
|
||||||
chdr = packetbuf_hdrptr();
|
|
||||||
chdr->id = CONTIKIMAC_ID;
|
|
||||||
chdr->len = hdrlen;
|
|
||||||
|
|
||||||
/* Create the MAC header for the data packet. */
|
|
||||||
hdrlen = NETSTACK_FRAMER.create();
|
|
||||||
if(hdrlen == 0) {
|
|
||||||
/* Failed to send */
|
|
||||||
PRINTF("contikimac: send failed, too large header\n");
|
|
||||||
packetbuf_hdr_remove(sizeof(struct hdr));
|
|
||||||
return MAC_TX_ERR_FATAL;
|
|
||||||
}
|
|
||||||
hdrlen += sizeof(struct hdr);
|
|
||||||
} else {
|
|
||||||
/* Create the MAC header for the data packet. */
|
|
||||||
hdrlen = NETSTACK_FRAMER.create();
|
|
||||||
if(hdrlen == 0) {
|
|
||||||
/* Failed to send */
|
|
||||||
PRINTF("contikimac: send failed, too large header\n");
|
|
||||||
return MAC_TX_ERR_FATAL;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
chdr = packetbuf_hdrptr();
|
||||||
|
chdr->id = CONTIKIMAC_ID;
|
||||||
|
chdr->len = hdrlen;
|
||||||
|
|
||||||
|
/* Create the MAC header for the data packet. */
|
||||||
|
hdrlen = NETSTACK_FRAMER.create();
|
||||||
|
if(hdrlen == 0) {
|
||||||
|
/* Failed to send */
|
||||||
|
PRINTF("contikimac: send failed, too large header\n");
|
||||||
|
packetbuf_hdr_remove(sizeof(struct hdr));
|
||||||
|
return MAC_TX_ERR_FATAL;
|
||||||
|
}
|
||||||
|
hdrlen += sizeof(struct hdr);
|
||||||
|
#else
|
||||||
|
/* Create the MAC header for the data packet. */
|
||||||
|
hdrlen = NETSTACK_FRAMER.create();
|
||||||
|
if(hdrlen == 0) {
|
||||||
|
/* Failed to send */
|
||||||
|
PRINTF("contikimac: send failed, too large header\n");
|
||||||
|
return MAC_TX_ERR_FATAL;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Make sure that the packet is longer or equal to the shortest
|
/* Make sure that the packet is longer or equal to the shortest
|
||||||
|
|
|
@ -765,7 +765,7 @@ uncompress_hdr_hc06(uint16_t ip_len)
|
||||||
SICSLOWPAN_IP_BUF->vtc = 0x60 | ((*hc06_ptr >> 2) & 0x0f);
|
SICSLOWPAN_IP_BUF->vtc = 0x60 | ((*hc06_ptr >> 2) & 0x0f);
|
||||||
SICSLOWPAN_IP_BUF->tcflow = ((*hc06_ptr << 6) & 0xC0) | ((*hc06_ptr >> 2) & 0x30);
|
SICSLOWPAN_IP_BUF->tcflow = ((*hc06_ptr << 6) & 0xC0) | ((*hc06_ptr >> 2) & 0x30);
|
||||||
SICSLOWPAN_IP_BUF->flow = 0;
|
SICSLOWPAN_IP_BUF->flow = 0;
|
||||||
hc06_ptr += 3;
|
hc06_ptr += 1;
|
||||||
} else {
|
} else {
|
||||||
/* Traffic class is compressed */
|
/* Traffic class is compressed */
|
||||||
SICSLOWPAN_IP_BUF->vtc = 0x60;
|
SICSLOWPAN_IP_BUF->vtc = 0x60;
|
||||||
|
|
|
@ -474,6 +474,11 @@ uip_connect(uip_ipaddr_t *ripaddr, u16_t rport)
|
||||||
conn->snd_nxt[2] = iss[2];
|
conn->snd_nxt[2] = iss[2];
|
||||||
conn->snd_nxt[3] = iss[3];
|
conn->snd_nxt[3] = iss[3];
|
||||||
|
|
||||||
|
conn->rcv_nxt[0] = 0;
|
||||||
|
conn->rcv_nxt[1] = 0;
|
||||||
|
conn->rcv_nxt[2] = 0;
|
||||||
|
conn->rcv_nxt[3] = 0;
|
||||||
|
|
||||||
conn->initialmss = conn->mss = UIP_TCP_MSS;
|
conn->initialmss = conn->mss = UIP_TCP_MSS;
|
||||||
|
|
||||||
conn->len = 1; /* TCP length of the SYN is one. */
|
conn->len = 1; /* TCP length of the SYN is one. */
|
||||||
|
|
|
@ -63,6 +63,8 @@ compower_accumulate(struct compower_activity *e)
|
||||||
static uint32_t last_listen, last_transmit;
|
static uint32_t last_listen, last_transmit;
|
||||||
uint32_t listen, transmit;
|
uint32_t listen, transmit;
|
||||||
|
|
||||||
|
energest_flush();
|
||||||
|
|
||||||
listen = energest_type_time(ENERGEST_TYPE_LISTEN);
|
listen = energest_type_time(ENERGEST_TYPE_LISTEN);
|
||||||
e->listen += listen - last_listen;
|
e->listen += listen - last_listen;
|
||||||
last_listen = listen;
|
last_listen = listen;
|
||||||
|
|
|
@ -36,6 +36,10 @@
|
||||||
#ifndef BOARD_FREESCALE_NCB_H
|
#ifndef BOARD_FREESCALE_NCB_H
|
||||||
#define BOARD_FREESCALE_NCB_H
|
#define BOARD_FREESCALE_NCB_H
|
||||||
|
|
||||||
|
#define GPIO_LED_RED GPIO_23
|
||||||
|
#define GPIO_LED_GREEN GPIO_24
|
||||||
|
#define GPIO_LED_BLUE GPIO_25
|
||||||
|
|
||||||
#define LED_RED 23
|
#define LED_RED 23
|
||||||
#define LED_GREEN 24
|
#define LED_GREEN 24
|
||||||
#define LED_BLUE 25
|
#define LED_BLUE 25
|
||||||
|
|
|
@ -55,6 +55,10 @@
|
||||||
#define BUTTON2_OUT (0x1ULL << 22)
|
#define BUTTON2_OUT (0x1ULL << 22)
|
||||||
#define BUTTON2_IN (0x1ULL << 26)
|
#define BUTTON2_IN (0x1ULL << 26)
|
||||||
|
|
||||||
|
#define GPIO_LED_RED GPIO_12
|
||||||
|
#define GPIO_LED_GREEN GPIO_21
|
||||||
|
#define GPIO_LED_BLUE GPIO_35
|
||||||
|
|
||||||
#define LED_RED 12
|
#define LED_RED 12
|
||||||
#define LED_GREEN 21
|
#define LED_GREEN 21
|
||||||
#define LED_BLUE 35
|
#define LED_BLUE 35
|
||||||
|
|
|
@ -36,6 +36,10 @@
|
||||||
#ifndef BOARD_REDBEE_DEV_H
|
#ifndef BOARD_REDBEE_DEV_H
|
||||||
#define BOARD_REDBEE_DEV_H
|
#define BOARD_REDBEE_DEV_H
|
||||||
|
|
||||||
|
#define GPIO_LED_RED GPIO_23
|
||||||
|
#define GPIO_LED_GREEN GPIO_24
|
||||||
|
#define GPIO_LED_BLUE GPIO_25
|
||||||
|
|
||||||
#define LED_RED 23
|
#define LED_RED 23
|
||||||
#define LED_GREEN 24
|
#define LED_GREEN 24
|
||||||
#define LED_BLUE 25
|
#define LED_BLUE 25
|
||||||
|
|
|
@ -36,6 +36,10 @@
|
||||||
#ifndef BOARD_REDBEE_R1_H
|
#ifndef BOARD_REDBEE_R1_H
|
||||||
#define BOARD_REDBEE_R1_H
|
#define BOARD_REDBEE_R1_H
|
||||||
|
|
||||||
|
#define GPIO_LED_RED GPIO_08
|
||||||
|
#define GPIO_LED_GREEN GPIO_09
|
||||||
|
#define GPIO_LED_BLUE GPIO_10
|
||||||
|
|
||||||
#define LED_RED 8
|
#define LED_RED 8
|
||||||
#define LED_GREEN 9
|
#define LED_GREEN 9
|
||||||
#define LED_BLUE 10
|
#define LED_BLUE 10
|
||||||
|
|
|
@ -36,6 +36,10 @@
|
||||||
#ifndef BOARD_REDBEE_USB_H
|
#ifndef BOARD_REDBEE_USB_H
|
||||||
#define BOARD_REDBEE_USB_H
|
#define BOARD_REDBEE_USB_H
|
||||||
|
|
||||||
|
#define GPIO_LED_RED GPIO_23
|
||||||
|
#define GPIO_LED_GREEN GPIO_24
|
||||||
|
#define GPIO_LED_BLUE GPIO_25
|
||||||
|
|
||||||
#define LED_RED 23
|
#define LED_RED 23
|
||||||
#define LED_GREEN 24
|
#define LED_GREEN 24
|
||||||
#define LED_BLUE 25
|
#define LED_BLUE 25
|
||||||
|
|
|
@ -72,6 +72,10 @@
|
||||||
#define CPL_TIMEOUT (2*128*CLK_PER_BYTE)
|
#define CPL_TIMEOUT (2*128*CLK_PER_BYTE)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef MACA_INSERT_ACK
|
||||||
|
#define MACA_INSERT_ACK 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#define reg(x) (*(volatile uint32_t *)(x))
|
#define reg(x) (*(volatile uint32_t *)(x))
|
||||||
|
|
||||||
int count_packets(void);
|
int count_packets(void);
|
||||||
|
@ -534,6 +538,32 @@ void add_to_rx(volatile packet_t *p) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void insert_at_rx_head(volatile packet_t *p) {
|
||||||
|
safe_irq_disable(MACA);
|
||||||
|
|
||||||
|
BOUND_CHECK(p);
|
||||||
|
|
||||||
|
if(!p) { PRINTF("insert_at_rx_head passed packet 0\n\r"); return; }
|
||||||
|
p->offset = 1; /* first byte is the length */
|
||||||
|
if(rx_head == 0) {
|
||||||
|
/* start a new queue if empty */
|
||||||
|
rx_end = p;
|
||||||
|
rx_end->left = 0; rx_end->right = 0;
|
||||||
|
rx_head = rx_end;
|
||||||
|
} else {
|
||||||
|
rx_head->right = p;
|
||||||
|
p->left = rx_head;
|
||||||
|
rx_head = p; rx_head->left = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// print_packets("insert at rx head");
|
||||||
|
irq_restore();
|
||||||
|
if(bit_is_set(*NIPEND, INT_NUM_MACA)) { *INTFRC = (1 << INT_NUM_MACA); }
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void decode_status(void) {
|
void decode_status(void) {
|
||||||
volatile uint32_t code;
|
volatile uint32_t code;
|
||||||
|
|
||||||
|
@ -620,7 +650,7 @@ void maca_isr(void) {
|
||||||
dma_rx->rx_time = *MACA_TIMESTAMP;
|
dma_rx->rx_time = *MACA_TIMESTAMP;
|
||||||
|
|
||||||
/* check if received packet needs an ack */
|
/* check if received packet needs an ack */
|
||||||
if(dma_rx->data[1] & 0x20) {
|
if(prm_mode == AUTOACK && (dma_rx->data[1] & 0x20)) {
|
||||||
/* this wait is necessary to auto-ack */
|
/* this wait is necessary to auto-ack */
|
||||||
volatile uint32_t wait_clk;
|
volatile uint32_t wait_clk;
|
||||||
wait_clk = *MACA_CLK + 200;
|
wait_clk = *MACA_CLK + 200;
|
||||||
|
@ -652,6 +682,21 @@ void maca_isr(void) {
|
||||||
/* PRINTF("maca action complete %d\n\r", get_field(*MACA_CONTROL,SEQUENCE)); */
|
/* PRINTF("maca action complete %d\n\r", get_field(*MACA_CONTROL,SEQUENCE)); */
|
||||||
if(last_post == TX_POST) {
|
if(last_post == TX_POST) {
|
||||||
tx_head->status = get_field(*MACA_STATUS,CODE);
|
tx_head->status = get_field(*MACA_STATUS,CODE);
|
||||||
|
#if MACA_INSERT_ACK
|
||||||
|
if(tx_head->status == SUCCESS) {
|
||||||
|
static volatile packet_t *ack_p;
|
||||||
|
if(ack_p = get_free_packet()) {
|
||||||
|
ack_p->length = 3;
|
||||||
|
ack_p->offset = 1;
|
||||||
|
ack_p->data[0] = 3;
|
||||||
|
ack_p->data[1] = 0x02;
|
||||||
|
ack_p->data[2] = 0;
|
||||||
|
ack_p->data[3] = *MACA_TXSEQNR;
|
||||||
|
insert_at_rx_head(ack_p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if(maca_tx_callback != 0) { maca_tx_callback(tx_head); }
|
if(maca_tx_callback != 0) { maca_tx_callback(tx_head); }
|
||||||
dma_tx = 0;
|
dma_tx = 0;
|
||||||
free_tx_head();
|
free_tx_head();
|
||||||
|
|
|
@ -78,11 +78,14 @@ void uart1_init(uint16_t inc, uint16_t mod, uint8_t samp) {
|
||||||
|
|
||||||
if(samp == UCON_SAMP_16X)
|
if(samp == UCON_SAMP_16X)
|
||||||
set_bit(*UART1_UCON,UCON_SAMP);
|
set_bit(*UART1_UCON,UCON_SAMP);
|
||||||
*GPIO_FUNC_SEL0 = ( (0x01 << (14*2)) | (0x01 << (15*2)) ); /* set GPIO15-14 to UART (UART1 TX and RX)*/
|
|
||||||
|
/* set GPIO15-14 to UART (UART1 TX and RX)*/
|
||||||
|
GPIO->FUNC_SEL.GPIO_14 = 1;
|
||||||
|
GPIO->FUNC_SEL.GPIO_15 = 1;
|
||||||
|
|
||||||
/* interrupt when there are this number or more bytes free in the TX buffer*/
|
/* interrupt when there are this number or more bytes free in the TX buffer*/
|
||||||
*UART1_UTXCON = 16;
|
*UART1_UTXCON = 16;
|
||||||
u1_tx_head = 0; u1_tx_tail = 0;
|
u1_tx_head = 0; u1_tx_tail = 0;
|
||||||
|
|
||||||
/* enable UART1 interrupts in the interrupt controller */
|
/* enable UART1 interrupts in the interrupt controller */
|
||||||
enable_irq(UART1);
|
enable_irq(UART1);
|
||||||
|
|
|
@ -127,8 +127,8 @@ while(1) {
|
||||||
my $i = 1;
|
my $i = 1;
|
||||||
while(read(FILE, $c, 1)) {
|
while(read(FILE, $c, 1)) {
|
||||||
$i++;
|
$i++;
|
||||||
usleep($first_delay) if ( $s == 0 );
|
usleep($first_delay) if ( $s == 0 ) && ($first_delay != 0);
|
||||||
usleep($second_delay) if ( $s == 1 );
|
usleep($second_delay) if ( $s == 1 ) && ($second_delay != 0);
|
||||||
$ob->write($c);
|
$ob->write($c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,10 +33,14 @@
|
||||||
* Machine dependent MSP430 SLIP routines for UART0.
|
* Machine dependent MSP430 SLIP routines for UART0.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "contiki-conf.h"
|
||||||
|
|
||||||
|
#ifdef __IAR_SYSTEMS_ICC__
|
||||||
|
#include <io430.h>
|
||||||
|
#else
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#endif
|
||||||
#include "contiki.h"
|
|
||||||
|
|
||||||
#include "dev/slip.h"
|
#include "dev/slip.h"
|
||||||
#include "dev/uart0.h"
|
#include "dev/uart0.h"
|
||||||
|
|
|
@ -163,13 +163,12 @@ endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FLASHER = $(CONTIKI)/tools/stm32w/stm32w_flasher/stm32w_flasher
|
||||||
FLASHER = $(CONTIKI)/tools/stm32w/stm32w_flasher/linux/stm32w_flasher
|
|
||||||
|
|
||||||
# Check if we are running under Windows
|
# Check if we are running under Windows
|
||||||
ifdef OS
|
ifdef OS
|
||||||
ifneq (,$(findstring Windows,$(OS)))
|
ifneq (,$(findstring Windows,$(OS)))
|
||||||
FLASHER = $(CONTIKI)/tools/stm32w/stm32w_flasher/win/stm32w_flasher
|
FLASHER = $(CONTIKI)/tools/stm32w/stm32w_flasher/stm32w_flasher.exe
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -1,122 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2007, Swedish Institute of Computer Science.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* 3. Neither the name of the Institute nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
* This file is part of the Contiki operating system.
|
|
||||||
*
|
|
||||||
* $Id: example-meshconn.c,v 1.3 2010/01/14 14:32:22 joxe Exp $
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \file
|
|
||||||
* A brief description of what this file is.
|
|
||||||
* \author
|
|
||||||
* Adam Dunkels <adam@sics.se>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "contiki.h"
|
|
||||||
#include "net/rime.h"
|
|
||||||
#include "net/rime/meshconn.h"
|
|
||||||
|
|
||||||
#include "dev/button-sensor.h"
|
|
||||||
|
|
||||||
#include "dev/leds.h"
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
static struct meshconn_conn meshconn;
|
|
||||||
/*---------------------------------------------------------------------------*/
|
|
||||||
PROCESS(test_meshconn_process, "Meshconnconn test");
|
|
||||||
AUTOSTART_PROCESSES(&test_meshconn_process);
|
|
||||||
/*---------------------------------------------------------------------------*/
|
|
||||||
static void
|
|
||||||
connected(struct meshconn_conn *c)
|
|
||||||
{
|
|
||||||
printf("connected\n");
|
|
||||||
}
|
|
||||||
static void
|
|
||||||
closed(struct meshconn_conn *c)
|
|
||||||
{
|
|
||||||
printf("closed\n");
|
|
||||||
}
|
|
||||||
static void
|
|
||||||
reset(struct meshconn_conn *c)
|
|
||||||
{
|
|
||||||
printf("reset\n");
|
|
||||||
}
|
|
||||||
static void
|
|
||||||
timedout(struct meshconn_conn *c)
|
|
||||||
{
|
|
||||||
printf("timedout\n");
|
|
||||||
}
|
|
||||||
static void
|
|
||||||
recv(struct meshconn_conn *c)
|
|
||||||
{
|
|
||||||
printf("Data received from %.*s (%d)\n",
|
|
||||||
packetbuf_datalen(), (char *)packetbuf_dataptr(), packetbuf_datalen());
|
|
||||||
|
|
||||||
/* meshconn_send(&meshconn, from);*/
|
|
||||||
}
|
|
||||||
|
|
||||||
const static struct meshconn_callbacks callbacks = { connected,
|
|
||||||
recv,
|
|
||||||
closed,
|
|
||||||
timedout,
|
|
||||||
reset };
|
|
||||||
/*---------------------------------------------------------------------------*/
|
|
||||||
PROCESS_THREAD(test_meshconn_process, ev, data)
|
|
||||||
{
|
|
||||||
PROCESS_EXITHANDLER(meshconn_close(&meshconn);)
|
|
||||||
PROCESS_BEGIN();
|
|
||||||
|
|
||||||
meshconn_open(&meshconn, 128, &callbacks);
|
|
||||||
|
|
||||||
while(1) {
|
|
||||||
rimeaddr_t addr;
|
|
||||||
static struct etimer et;
|
|
||||||
|
|
||||||
etimer_set(&et, CLOCK_SECOND * 4);
|
|
||||||
PROCESS_WAIT_EVENT_UNTIL(etimer_expired(&et) ||
|
|
||||||
(ev == sensors_event && data == &button_sensor));
|
|
||||||
|
|
||||||
printf("Button\n");
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Send a message containing "Hej" (3 characters) to node number
|
|
||||||
* 6.
|
|
||||||
*/
|
|
||||||
|
|
||||||
addr.u8[0] = 53;
|
|
||||||
addr.u8[1] = 0;
|
|
||||||
meshconn_connect(&meshconn, addr);
|
|
||||||
|
|
||||||
packetbuf_copyfrom("Hej", 3);
|
|
||||||
meshconn_send(&meshconn, &addr);
|
|
||||||
}
|
|
||||||
PROCESS_END();
|
|
||||||
}
|
|
||||||
/*---------------------------------------------------------------------------*/
|
|
|
@ -473,7 +473,7 @@ if ((rtime%STAMPS)==0) {
|
||||||
#endif
|
#endif
|
||||||
rtime+=1;
|
rtime+=1;
|
||||||
|
|
||||||
#if PINGS
|
#if PINGS && UIP_CONF_IPV6
|
||||||
extern void raven_ping6(void);
|
extern void raven_ping6(void);
|
||||||
if ((rtime%PINGS)==1) {
|
if ((rtime%PINGS)==1) {
|
||||||
PRINTA("**Ping\n");
|
PRINTA("**Ping\n");
|
||||||
|
@ -481,7 +481,7 @@ if ((rtime%PINGS)==1) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ROUTES
|
#if ROUTES && UIP_CONF_IPV6
|
||||||
if ((rtime%ROUTES)==2) {
|
if ((rtime%ROUTES)==2) {
|
||||||
|
|
||||||
extern uip_ds6_nbr_t uip_ds6_nbr_cache[];
|
extern uip_ds6_nbr_t uip_ds6_nbr_cache[];
|
||||||
|
|
|
@ -33,8 +33,9 @@
|
||||||
|
|
||||||
#include "contiki.h"
|
#include "contiki.h"
|
||||||
#include "net/rime.h"
|
#include "net/rime.h"
|
||||||
#include "dev/sd/sd.h"
|
#include "dev/sd.h"
|
||||||
|
|
||||||
|
#include <io.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
#include "contiki.h"
|
#include "contiki.h"
|
||||||
#include "msb430-uart1.h"
|
#include "msb430-uart1.h"
|
||||||
#include "sd-arch.h"
|
#include "sd-arch.h"
|
||||||
|
#include <io.h>
|
||||||
|
|
||||||
#define SPI_IDLE 0xff
|
#define SPI_IDLE 0xff
|
||||||
|
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
#include "sd.h"
|
#include "sd.h"
|
||||||
#include "sd-arch.h"
|
#include "sd-arch.h"
|
||||||
|
|
||||||
|
#include <io.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#define DEBUG 0
|
#define DEBUG 0
|
||||||
|
|
|
@ -85,6 +85,7 @@
|
||||||
#define USE_32KHZ_XTAL 0
|
#define USE_32KHZ_XTAL 0
|
||||||
|
|
||||||
#define BLOCKING_TX 1
|
#define BLOCKING_TX 1
|
||||||
|
#define MACA_AUTOACK 1
|
||||||
#define NULLRDC_CONF_802154_AUTOACK_HW 1
|
#define NULLRDC_CONF_802154_AUTOACK_HW 1
|
||||||
|
|
||||||
#define USE_WDT 0
|
#define USE_WDT 0
|
||||||
|
|
|
@ -436,7 +436,7 @@ main(void)
|
||||||
PRINTF("setting short mac 0x%04x\n\r", *MACA_MAC16ADDR);
|
PRINTF("setting short mac 0x%04x\n\r", *MACA_MAC16ADDR);
|
||||||
PRINTF("setting long mac 0x%08x_%08x\n\r", *MACA_MAC64HI, *MACA_MAC64LO);
|
PRINTF("setting long mac 0x%08x_%08x\n\r", *MACA_MAC64HI, *MACA_MAC64LO);
|
||||||
|
|
||||||
#if NULLRDC_CONF_802154_AUTOACK_HW
|
#if MACA_AUTOACK
|
||||||
set_prm_mode(AUTOACK);
|
set_prm_mode(AUTOACK);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,9 @@
|
||||||
/* Platform TMOTE_SKY */
|
/* Platform TMOTE_SKY */
|
||||||
#define TMOTE_SKY 1
|
#define TMOTE_SKY 1
|
||||||
|
|
||||||
|
#define PLATFORM_HAS_LEDS 1
|
||||||
|
#define PLATFORM_HAS_BUTTON 1
|
||||||
|
|
||||||
/* CPU target speed in Hz */
|
/* CPU target speed in Hz */
|
||||||
#define F_CPU 3900000uL /*2457600uL*/
|
#define F_CPU 3900000uL /*2457600uL*/
|
||||||
|
|
||||||
|
|
BIN
tools/stm32w/stm32w_flasher/CompositeForSTM32W.bin
Normal file
BIN
tools/stm32w/stm32w_flasher/CompositeForSTM32W.bin
Normal file
Binary file not shown.
BIN
tools/stm32w/stm32w_flasher/JlinkARM.DLL
Normal file
BIN
tools/stm32w/stm32w_flasher/JlinkARM.DLL
Normal file
Binary file not shown.
26
tools/stm32w/stm32w_flasher/README
Normal file
26
tools/stm32w/stm32w_flasher/README
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
STM32W Flasher 2.0.0b2 for Linux
|
||||||
|
|
||||||
|
A programmer for development boards based on STM32W108 microcontroller.
|
||||||
|
It works with the following boards (with FT232R or STM32F103 as USB-serial converter):
|
||||||
|
MB850, MB851, MB950, MB951, MB954
|
||||||
|
|
||||||
|
|
||||||
|
- Installation
|
||||||
|
|
||||||
|
Installation is not required.
|
||||||
|
Hal package has to be present in your system.
|
||||||
|
|
||||||
|
|
||||||
|
- Usage
|
||||||
|
|
||||||
|
Run the program with -h option for usage info.
|
||||||
|
|
||||||
|
|
||||||
|
- Notes
|
||||||
|
|
||||||
|
This program may require root privileges when programming boards with
|
||||||
|
FT232R chip.
|
||||||
|
In Ubuntu, if you want to flash using Make, type 'sudo -s' before that.
|
||||||
|
|
||||||
|
This version of STM32W Flasher does not support jlink yet.
|
||||||
|
|
BIN
tools/stm32w/stm32w_flasher/_ctypes.pyd
Normal file
BIN
tools/stm32w/stm32w_flasher/_ctypes.pyd
Normal file
Binary file not shown.
BIN
tools/stm32w/stm32w_flasher/_socket.pyd
Normal file
BIN
tools/stm32w/stm32w_flasher/_socket.pyd
Normal file
Binary file not shown.
BIN
tools/stm32w/stm32w_flasher/_ssl.pyd
Normal file
BIN
tools/stm32w/stm32w_flasher/_ssl.pyd
Normal file
Binary file not shown.
Binary file not shown.
|
@ -1,22 +0,0 @@
|
||||||
STM32W Flasher 1.1.0b1 for Linux
|
|
||||||
|
|
||||||
A programmer for MB851 development boards based on STM32W108 microcontroller.
|
|
||||||
|
|
||||||
- Installation
|
|
||||||
|
|
||||||
Installation is not required.
|
|
||||||
Hal package has to be present in your system.
|
|
||||||
|
|
||||||
|
|
||||||
- Usage
|
|
||||||
|
|
||||||
Run the program with -h option for usage info.
|
|
||||||
|
|
||||||
|
|
||||||
- Notes
|
|
||||||
|
|
||||||
This program may require root privileges.
|
|
||||||
In Ubuntu, if you want to flash using Make, type 'sudo -s' before that.
|
|
||||||
|
|
||||||
This version of STM32W Flasher does not support jlink yet.
|
|
||||||
|
|
Binary file not shown.
BIN
tools/stm32w/stm32w_flasher/main_rfbl.s37
Normal file
BIN
tools/stm32w/stm32w_flasher/main_rfbl.s37
Normal file
Binary file not shown.
BIN
tools/stm32w/stm32w_flasher/pyexpat.pyd
Normal file
BIN
tools/stm32w/stm32w_flasher/pyexpat.pyd
Normal file
Binary file not shown.
Binary file not shown.
BIN
tools/stm32w/stm32w_flasher/select.pyd
Normal file
BIN
tools/stm32w/stm32w_flasher/select.pyd
Normal file
Binary file not shown.
BIN
tools/stm32w/stm32w_flasher/stm32w_flasher
Executable file
BIN
tools/stm32w/stm32w_flasher/stm32w_flasher
Executable file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
tools/stm32w/stm32w_flasher/win32pipe.pyd
Normal file
BIN
tools/stm32w/stm32w_flasher/win32pipe.pyd
Normal file
Binary file not shown.
|
@ -938,7 +938,7 @@ bool validIPAddr(const char * ip_addr, int prefix_len)
|
||||||
char tmp_addr[INET6_ADDRSTRLEN], tmp2_addr[INET6_ADDRSTRLEN];
|
char tmp_addr[INET6_ADDRSTRLEN], tmp2_addr[INET6_ADDRSTRLEN];
|
||||||
char * substr;
|
char * substr;
|
||||||
|
|
||||||
strncpy(tmp_addr, br_prefix, INET6_ADDRSTRLEN);
|
strncpy(tmp_addr, ip_addr, INET6_ADDRSTRLEN);
|
||||||
|
|
||||||
strtok(tmp_addr,"/");
|
strtok(tmp_addr,"/");
|
||||||
|
|
||||||
|
@ -985,7 +985,7 @@ main(int argc, char **argv)
|
||||||
osVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
osVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||||
GetVersionEx(&osVersionInfo);
|
GetVersionEx(&osVersionInfo);
|
||||||
|
|
||||||
while((c = getopt(argc, argv, "B:D:hs:c:ra:p:v:tb:")) != -1) {
|
while((c = getopt(argc, argv, "B:D:hs:c:ra:p:vtb:")) != -1) {
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case 'B':
|
case 'B':
|
||||||
baudrate = atoi(optarg);
|
baudrate = atoi(optarg);
|
||||||
|
|
Binary file not shown.
|
@ -33,6 +33,9 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Below define allows importing saved output into Wireshark as "Raw IP" packet type */
|
||||||
|
#define WIRESHARK_IMPORT_FORMAT 1
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
@ -250,15 +253,17 @@ serial_to_tun(FILE *inslip, int outfd)
|
||||||
if (timestamp) stamptime();
|
if (timestamp) stamptime();
|
||||||
printf("Packet from SLIP of length %d - write TUN\n", inbufptr);
|
printf("Packet from SLIP of length %d - write TUN\n", inbufptr);
|
||||||
if (verbose>4) {
|
if (verbose>4) {
|
||||||
|
#if WIRESHARK_IMPORT_FORMAT
|
||||||
|
printf("0000");
|
||||||
|
for(i = 0; i < inbufptr; i++) printf(" %02x",uip.inbuf[i]);
|
||||||
|
#else
|
||||||
printf(" ");
|
printf(" ");
|
||||||
for(i = 0; i < inbufptr; i++) {
|
for(i = 0; i < inbufptr; i++) {
|
||||||
printf("%02x", uip.inbuf[i]);
|
printf("%02x", uip.inbuf[i]);
|
||||||
if((i & 3) == 3) {
|
if((i & 3) == 3) printf(" ");
|
||||||
printf(" ");
|
if((i & 15) == 15) printf("\n ");
|
||||||
}
|
|
||||||
if((i & 15) == 15)
|
|
||||||
printf("\n ");
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -383,15 +388,17 @@ write_to_serial(int outfd, void *inbuf, int len)
|
||||||
if (timestamp) stamptime();
|
if (timestamp) stamptime();
|
||||||
printf("Packet from TUN of length %d - write SLIP\n", len);
|
printf("Packet from TUN of length %d - write SLIP\n", len);
|
||||||
if (verbose>4) {
|
if (verbose>4) {
|
||||||
|
#if WIRESHARK_IMPORT_FORMAT
|
||||||
|
printf("0000");
|
||||||
|
for(i = 0; i < len; i++) printf(" %02x", p[i]);
|
||||||
|
#else
|
||||||
printf(" ");
|
printf(" ");
|
||||||
for(i = 0; i < len; i++) {
|
for(i = 0; i < len; i++) {
|
||||||
printf("%02x", p[i]);
|
printf("%02x", p[i]);
|
||||||
if((i & 3) == 3) {
|
if((i & 3) == 3) printf(" ");
|
||||||
printf(" ");
|
if((i & 15) == 15) printf("\n ");
|
||||||
}
|
|
||||||
if((i & 15) == 15)
|
|
||||||
printf("\n ");
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue