{'fraction_non_alphanumeric': 0.03276003276003276, 'fraction_numerical': 0.000819000819000819, 'mean_word_length': 5.019704433497537, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Cross-platform protocol development for sensor networks: lessons learned

Protocols for sensor networks are commonly coupled to the specific operating system (OS), for instance TinyOS, involving some drawbacks. First, programmers must learn OS architecture, programming guidelines, sometimes a new programming language, etc. Second, protocols run on the specific OS only, i.e. on the hardware supported by the OS. Third, only selected network simulators, mostly provided by OS, can execute the OS-coupled code.
 To tackle the problems with interoperability we examined the idea of cross-platform protocol development for sensor networks, i.e. software running on several OSs, and share our experience in this paper.
 Our primary cross-platform MAC protocol runs on two OSs and on a hardware platform supporting the C programming language. To achieve interoperability we decoupled MAC from OS calls and provided a hardware abstraction layer (HAL) for each OS. We discovered that such an approach does not result in a significant penalty in terms of occupied memory (e.g. smaller by 3 kB than the TinyOS dedicated version) and consumed energy (additional overhead smaller by three orders of magnitude from total tx energy).