osd-contiki/platform/native/contiki-conf.h
Robert Quattlebaum b8c0f2de6c cpu/native: Add file-backed simulated EEPROM to native cpu.
This patch removes a defunct EEPROM implementation from the native
platform and provides a new EEPROM implementation for the native cpu.
The previous implementation appears to be vestigal.

This is useful for testing code which uses the EEPROM without running
the code on the actual hardware.

By default the code will create a new temporary file as the EEPROM
backing, reinitializing each time. If you would like to preserve the
EEPROM contents or specify a specific EEPROM file to use, you can set the
`CONTIKI_EEPROM` environment variable to the name of the EEPROM file you
wish to use instead. If it already exists, its contents will be used.
If it does not already exist, it will be created and initialized by
filling it with `0xFF`---just like a real EEPROM.

A new example is also included, which was used to verify the correctness
of the implementation. It can easily be used to verify the EEPROM
implementations of other targets.
2013-05-18 10:29:41 -07:00

286 lines
8.8 KiB
C

/*
* Copyright (c) 2005, 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.
*
*/
#ifndef __CONTIKI_CONF_H__
#define __CONTIKI_CONF_H__
#include <inttypes.h>
#ifndef WIN32_LEAN_AND_MEAN
#include <sys/select.h>
#endif
struct select_callback {
int (* set_fd)(fd_set *fdr, fd_set *fdw);
void (* handle_fd)(fd_set *fdr, fd_set *fdw);
};
int select_set_callback(int fd, const struct select_callback *callback);
#define CC_CONF_REGISTER_ARGS 1
#define CC_CONF_FUNCTION_POINTER_ARGS 1
#define CC_CONF_FASTCALL
#define CC_CONF_VA_ARGS 1
/*#define CC_CONF_INLINE inline*/
#ifndef EEPROM_CONF_SIZE
#define EEPROM_CONF_SIZE 1024
#endif
#define CCIF
#define CLIF
/* These names are deprecated, use C99 names. */
typedef uint8_t u8_t;
typedef uint16_t u16_t;
typedef uint32_t u32_t;
typedef int32_t s32_t;
typedef unsigned short uip_stats_t;
#define UIP_CONF_UDP 1
#define UIP_CONF_MAX_CONNECTIONS 40
#define UIP_CONF_MAX_LISTENPORTS 40
#define UIP_CONF_BUFFER_SIZE 420
#define UIP_CONF_BYTE_ORDER UIP_LITTLE_ENDIAN
#define UIP_CONF_TCP 1
#define UIP_CONF_TCP_SPLIT 0
#define UIP_CONF_LOGGING 0
#define UIP_CONF_UDP_CHECKSUMS 1
#ifndef NETSTACK_CONF_RDC_CHANNEL_CHECK_RATE
#define NETSTACK_CONF_RDC_CHANNEL_CHECK_RATE 8
#endif /* NETSTACK_CONF_RDC_CHANNEL_CHECK_RATE */
#if UIP_CONF_IPV6
#define RIMEADDR_CONF_SIZE 8
#ifndef NETSTACK_CONF_MAC
#define NETSTACK_CONF_MAC nullmac_driver
#endif /* NETSTACK_CONF_MAC */
#ifndef NETSTACK_CONF_RDC
#define NETSTACK_CONF_RDC nullrdc_driver
#endif /* NETSTACK_CONF_RDC */
#ifndef NETSTACK_CONF_RADIO
#define NETSTACK_CONF_RADIO nullradio_driver
#endif /* NETSTACK_CONF_RADIO */
#ifndef NETSTACK_CONF_FRAMER
#define NETSTACK_CONF_FRAMER framer_802154
#endif /* NETSTACK_CONF_FRAMER */
#define NETSTACK_CONF_NETWORK sicslowpan_driver
#define UIP_CONF_ROUTER 1
#ifndef UIP_CONF_IPV6_RPL
#define UIP_CONF_IPV6_RPL 1
#endif /* UIP_CONF_IPV6_RPL */
#define SICSLOWPAN_CONF_COMPRESSION_IPV6 0
#define SICSLOWPAN_CONF_COMPRESSION_HC1 1
#define SICSLOWPAN_CONF_COMPRESSION_HC01 2
#define SICSLOWPAN_CONF_COMPRESSION SICSLOWPAN_COMPRESSION_HC06
#ifndef SICSLOWPAN_CONF_FRAG
#define SICSLOWPAN_CONF_FRAG 1
#define SICSLOWPAN_CONF_MAXAGE 8
#endif /* SICSLOWPAN_CONF_FRAG */
#define SICSLOWPAN_CONF_CONVENTIONAL_MAC 1
#define SICSLOWPAN_CONF_MAX_ADDR_CONTEXTS 2
#ifndef SICSLOWPAN_CONF_MAX_MAC_TRANSMISSIONS
#define SICSLOWPAN_CONF_MAX_MAC_TRANSMISSIONS 5
#endif /* SICSLOWPAN_CONF_MAX_MAC_TRANSMISSIONS */
#define UIP_CONF_IPV6_CHECKS 1
#define UIP_CONF_IPV6_QUEUE_PKT 1
#define UIP_CONF_IPV6_REASSEMBLY 0
#define UIP_CONF_NETIF_MAX_ADDRESSES 3
#define UIP_CONF_ND6_MAX_PREFIXES 3
#define UIP_CONF_ND6_MAX_NEIGHBORS 4
#define UIP_CONF_ND6_MAX_DEFROUTERS 2
#define UIP_CONF_ICMP6 1
/* configure number of neighbors and routes */
#ifndef UIP_CONF_DS6_NBR_NBU
#define UIP_CONF_DS6_NBR_NBU 30
#endif /* UIP_CONF_DS6_NBR_NBU */
#ifndef UIP_CONF_MAX_ROUTES
#define UIP_CONF_MAX_ROUTES 30
#endif /* UIP_CONF_MAX_ROUTES */
#define UIP_CONF_ND6_SEND_RA 0
#define UIP_CONF_ND6_REACHABLE_TIME 600000
#define UIP_CONF_ND6_RETRANS_TIMER 10000
#define UIP_CONF_IP_FORWARD 0
#ifndef UIP_CONF_BUFFER_SIZE
#define UIP_CONF_BUFFER_SIZE 240
#endif
#define UIP_CONF_LLH_LEN 0
#define UIP_CONF_LL_802154 1
#define UIP_CONF_ICMP_DEST_UNREACH 1
#define UIP_CONF_DHCP_LIGHT
#define UIP_CONF_RECEIVE_WINDOW 48
#define UIP_CONF_TCP_MSS 48
#define UIP_CONF_UDP_CONNS 12
#define UIP_CONF_FWCACHE_SIZE 30
#define UIP_CONF_BROADCAST 1
#define UIP_ARCH_IPCHKSUM 1
#define UIP_CONF_UDP 1
#define UIP_CONF_UDP_CHECKSUMS 1
#define UIP_CONF_PINGADDRCONF 0
#define UIP_CONF_LOGGING 0
#endif /* UIP_CONF_IPV6 */
#include <ctype.h>
#define ctk_arch_isprint isprint
#include "ctk/ctk-curses.h"
#define CH_ULCORNER -10
#define CH_URCORNER -11
#define CH_LLCORNER -12
#define CH_LRCORNER -13
#define CH_ENTER '\n'
#define CH_DEL '\b'
#define CH_CURS_UP -1
#define CH_CURS_LEFT -2
#define CH_CURS_RIGHT -3
#define CH_CURS_DOWN -4
#define CTK_CONF_MENU_KEY -5 /* F10 */
#define CTK_CONF_WINDOWSWITCH_KEY -6 /* Ctrl-Tab */
#define CTK_CONF_WIDGETUP_KEY -7 /* Shift-Tab */
#define CTK_CONF_WIDGETDOWN_KEY '\t'
#define CTK_CONF_WIDGET_FLAGS 0
#define CTK_CONF_SCREENSAVER 1
#ifdef PLATFORM_BUILD
#define CTK_CONF_MOUSE_SUPPORT 1
#define CTK_CONF_WINDOWS 1
#define CTK_CONF_WINDOWMOVE 1
#define CTK_CONF_WINDOWCLOSE 1
#define CTK_CONF_ICONS 1
#define CTK_CONF_ICON_BITMAPS 0
#define CTK_CONF_ICON_TEXTMAPS 1
#define CTK_CONF_MENUS 1
#define CTK_CONF_MENUWIDTH 16
#define CTK_CONF_MAXMENUITEMS 10
#else /* PLATFORM_BUILD */
#define CTK_CONF_MOUSE_SUPPORT 1
#define CTK_CONF_WINDOWS 0
#define CTK_CONF_WINDOWMOVE 0
#define CTK_CONF_WINDOWCLOSE 0
#define CTK_CONF_ICONS 0
#define CTK_CONF_MENUS 0
#endif /* PLATFORM_BUILD */
/* CTK-specific color constants */
#define CTK_COLOR_BLACK 0
#define CTK_COLOR_RED 1
#define CTK_COLOR_GREEN 2
#define CTK_COLOR_YELLOW 3
#define CTK_COLOR_BLUE 4
#define CTK_COLOR_MAGENTA 5
#define CTK_COLOR_CYAN 6
#define CTK_COLOR_WHITE 7
/* base background color for widgets */
#define COLOR_BG CTK_COLOR_BLUE
#define BORDERCOLOR CTK_COLOR_BLACK
#define SCREENCOLOR CTK_COLOR_BLACK
#define BACKGROUNDCOLOR CTK_COLOR_BLACK
#define WINDOWCOLOR_FOCUS CTK_COLOR_WHITE | COLOR_BG * 0x10
#define WINDOWCOLOR CTK_COLOR_CYAN | COLOR_BG * 0x10
#define DIALOGCOLOR CTK_COLOR_WHITE | COLOR_BG * 0x10
#define WIDGETCOLOR_HLINK CTK_COLOR_CYAN | COLOR_BG * 0x10
#define WIDGETCOLOR_FWIN CTK_COLOR_WHITE | COLOR_BG * 0x10
#define WIDGETCOLOR CTK_COLOR_CYAN | COLOR_BG * 0x10
#define WIDGETCOLOR_DIALOG CTK_COLOR_WHITE | COLOR_BG * 0x10
#define WIDGETCOLOR_FOCUS CTK_COLOR_YELLOW | COLOR_BG * 0x10
#define MENUCOLOR CTK_COLOR_WHITE | COLOR_BG * 0x10
#define OPENMENUCOLOR CTK_COLOR_WHITE | COLOR_BG * 0x10
#define ACTIVEMENUITEMCOLOR CTK_COLOR_YELLOW | COLOR_BG * 0x10
typedef unsigned long clock_time_t;
#define CLOCK_CONF_SECOND 1000
#define LOG_CONF_ENABLED 1
#define PROGRAM_HANDLER_CONF_MAX_NUMDSCS 10
#define PROGRAM_HANDLER_CONF_QUIT_MENU 1
#define EMAIL_CONF_WIDTH 78
#define EMAIL_CONF_HEIGHT 17
#ifndef PLATFORM_BUILD
#define EMAIL_CONF_ERASE 0
#endif
#define IRC_CONF_WIDTH 78
#define IRC_CONF_HEIGHT 17
#define IRC_CONF_SYSTEM_STRING "*nix"
#define SHELL_CONF_WITH_PROGRAM_HANDLER 1
#define SHELL_GUI_CONF_XSIZE 78
#define SHELL_GUI_CONF_YSIZE 17
#ifdef PLATFORM_BUILD
#define TELNETD_CONF_GUI 1
#endif /* PLATFORM_BUILD */
#ifdef PLATFORM_BUILD
#define WWW_CONF_WEBPAGE_WIDTH 78
#define WWW_CONF_WEBPAGE_HEIGHT 17
#endif /* PLATFORM_BUILD */
/* Not part of C99 but actually present */
int strcasecmp(const char*, const char*);
/* include the project config */
/* PROJECT_CONF_H might be defined in the project Makefile */
#ifdef PROJECT_CONF_H
#include PROJECT_CONF_H
#endif /* PROJECT_CONF_H */
#endif /* __CONTIKI_CONF_H__ */