⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sos_info.c

📁 嵌入式操作系统内核
💻 C
字号:
/** * @brief    node id * @author   Simon Han (simonhan@ee.ucla.edu) * @version  1.0 * This is the interface for modules, kernel can * just use node_address * 9/13/2005 mods made by Nicholas Kottenstette (nkottens@nd.edu) *   changed ker_loc to return copy of node_loc, changed node_loc.{x,y,z} *   to be int16_t, added gps_loc data, ker_gps interface, and *   ker_loc_r2 interface. */#include <sos_info.h>#include <sos.h>node_loc_t node_loc = {#ifdef NODE_LOC_UNIT    .unit = NODE_LOC_UNIT,#else    .unit = UNIT_FEET,#endif#ifdef NODE_X    .x = NODE_X,#else    .x = 0,#endif#ifdef NODE_Y    .y = NODE_Y,#else    .y = 0,#endif#ifdef NODE_Z    .z = NODE_Z,#else    .z = 0,#endif};#ifndef NODE_GPS_X_DIR#define NODE_GPS_X_DIR WEST#endif#ifndef NODE_GPS_X_DEG#define NODE_GPS_X_DEG 0#endif#ifndef NODE_GPS_X_MIN#define NODE_GPS_X_MIN 0#endif#ifndef NODE_GPS_X_SEC#define NODE_GPS_X_SEC 0#endif#ifndef NODE_GPS_Y_DIR#define NODE_GPS_Y_DIR NORTH#endif#ifndef NODE_GPS_Y_DEG#define NODE_GPS_Y_DEG 0#endif#ifndef NODE_GPS_Y_MIN#define NODE_GPS_Y_MIN 0#endif#ifndef NODE_GPS_Y_SEC#define NODE_GPS_Y_SEC 0#endif#ifndef NODE_GPS_Z_UNIT#define NODE_GPS_Z_UNIT UNIT_FEET#endif#ifndef NODE_GPS_Z#define NODE_GPS_Z 0#endifgps_t gps_loc = {    .x    = { NODE_GPS_X_DIR, NODE_GPS_X_DEG, NODE_GPS_X_MIN, NODE_GPS_X_SEC },    .y     = { NODE_GPS_Y_DIR, NODE_GPS_Y_DEG, NODE_GPS_Y_MIN, NODE_GPS_Y_SEC },    .unit  = NODE_GPS_Z_UNIT,    .z     = NODE_GPS_Z,};#ifdef NODE_ADDRuint16_t node_address = NODE_ADDR;#elseuint16_t node_address = 1;#endif#ifdef NODE_GROUP_IDuint8_t node_group_id = NODE_GROUP_ID;#elseuint8_t node_group_id = 1;#endif#ifdef HW_TYPEuint8_t hw_type = HW_TYPE;#elseuint8_t hw_type = UNKNOWEN;#endifint8_t id_init(){   return SOS_OK;}//! The following function is used by the 802.15.4 MAC to set the node address after boot-upvoid ker_set_id(uint16_t alloc_address){    node_address = alloc_address;}uint16_t ker_id(){    return node_address;}node_loc_t ker_loc(){    return node_loc;}gps_t ker_gps(){    return gps_loc;}uint32_t ker_loc_r2(node_loc_t *loc1, node_loc_t *loc2){    int32_t dx=0, dy=0, dz=0;    uint32_t dx2=0, dy2=0, dz2=0;#define SQUARED(x) ((x)*(x))#define DXYZ_MAX ((int16_t)1<<14)#define DXYZ_MIN -DXYZ_MAX#ifndef MAX#define MAX(a,b) ( ((a) > (b)) ? (a) : (b) )#endif#ifndef MIN#define MIN(a,b) ( ((a) < (b)) ? (a) : (b) )#endif    if (loc1->unit != loc2->unit)        return 0xffffffff;    /* Limit the largest dimension to +/- 16384 to prevent overflow */    dx = loc1->x - loc2->x;    dy = loc1->y - loc2->y;    dz = loc1->z - loc2->z;    dx = MAX(dx,DXYZ_MIN);    dy = MAX(dy,DXYZ_MIN);    dz = MAX(dz,DXYZ_MIN);    dx = MIN(dx,DXYZ_MAX);    dy = MIN(dy,DXYZ_MAX);    dz = MIN(dz,DXYZ_MAX);    dx2 = SQUARED(dx);    dy2 = SQUARED(dy);    dz2 = SQUARED(dz);    return dx2 + dy2 + dz2;}uint16_t ker_uart_id(){    return (uint16_t)UART_ADDRESS;}uint8_t ker_i2c_id(){    return (uint8_t)I2C_ADDRESS;}uint8_t ker_hw_type(){    return hw_type;}uint8_t ker_get_group(void) 				{ return node_group_id; }void ker_set_group(uint8_t new_group_id) 	{ node_group_id = new_group_id; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -