Code Search for Developers
 
 
  

rawdata_i.h from EmStar at Krugle


Show rawdata_i.h syntax highlighted

#ifndef _RAWDATA_I_H_
#define _RAWDATA_I_H_

#include <routing/routing_table.h>
#include <devel/state/ssync.h>
#include "tos-contrib/herd/tos/system/CentTree.h"
#include "tos-contrib/herd/tos/system/PktTypes.h"


// the maximum allowed difference between last acked sequence num and
// last received sequence num
#define MAX_SEQ_DIFF        1

#define RAWDATA_STATUS_DEV_NAME ("/dev/herd/data_status")

#ifndef SECOND
#define SECOND      1000
#endif

#define RAWDATA_PUB_PERIOD  (1*SECOND)

#define D_LOCAL     1
#define D_SYNCED    2


typedef struct _node_element node_element_t;
typedef struct _rawdata_state rd_state_t;


struct _node_element {
    QUEUE_ELEMENT_DECL(nel_ptrs, struct _node_element);

    herd_data_entry_t stats;

    int state;
    uint32_t seconds_since_last_rx;
    rd_state_t *rd_state_ref;
};





struct _rawdata_state {
    // the node list
    QUEUE_DECL(nodes, struct _node_element);

    // status dev
    status_context_t *rawdata_status_ev;

    // link client
    lu_context_t *raw_data_link;

    // timers
    g_event_t *ack_timer_ev;
    g_event_t *ssync_pub_timer_ev;

    // link device for higher level data pkts
    lp_context_t *data_lp_context;

    // misc stuff
    int disable_acks;           // flag that disables all acks

    // ssync ref
    ssync_sub_t *ssync_sub_ref;

    int dumpfd;
};



QUEUE_INLINE_INSTANTIATIONS(nodes_list, nel_ptrs, nodes, struct _node_element,
        rd_state_t);


int open_data_link_dev(char *uses_link, rd_state_t *rdstate);


node_element_t *create_local_node_element(uint16_t node_id, 
        rd_state_t *rdstate);
node_element_t *create_node_element(uint16_t node_id, node_id_t shepherd_id,
        rd_state_t *rdstate);
node_element_t *find_node_by_id(uint16_t node_id, rd_state_t *rdstate);
node_element_t *create_and_insert_node_element(uint16_t node_id,
                node_id_t shepherd_id, rd_state_t *rdstate);
void rawdata_init_status_devices(rd_state_t *rdstate);
void rawdata_init_ssync(rd_state_t *rdstate);
int open_dump_file(char *filename, rd_state_t *rdstate);
int create_rawdata_link_dev(rd_state_t *rdstate, char *link_name_str,
                char *class_name);
int convert_raw_data_pkt_to_link_pkt(link_pkt_t *raw_link_pkt, 
                link_pkt_t **up_link_pkt, int len);




#endif




See more files for this project here

EmStar

EmStar is a software system for developing and deploying wireless sensor networks involving Linux-based platforms. As the wireless sensor network community has attempted to deploy more complex designs---large-scale, long-lived systems that need self-organization and adaptivity---a number of difficult software design issues have arisen. Advances in software design have not kept pace with the capabilities of hardware. This is because designing for an adaptive, efficient, and useful sensor network has turned out to be surprisingly complex and difficult. EmStar is a Linux-based software framework, whose goal is to dramatically reduce this complexity, enabling work to be shared and reused, and simplifying and speeding the design of new sensor network applications.

Project homepage: http://cvs.cens.ucla.edu/emstar/
Programming language(s): C,Shell Script
License: other

  BUILD
  mdtn.c
  rawdata_i.h
  rawdata_lower.c
  rawdata_main.c
  rawdata_ssync.c
  rawdata_status.c
  rawdata_upper.c
  rawdata_util.c