KL25 driver for Tango Control System

Dependencies:   mbed

Committer:
jskl
Date:
Thu Aug 28 07:50:06 2014 +0000
Revision:
2:9fe6f1e273b4
Parent:
0:5d27c333afa6
Fixed bugs in JSON format replies

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jskl 0:5d27c333afa6 1 // dnsname.h 2013/8/27
jskl 0:5d27c333afa6 2 #pragma once
jskl 0:5d27c333afa6 3 //#include <string>
jskl 0:5d27c333afa6 4 #include "pico_string.h"
jskl 0:5d27c333afa6 5 class dnsname {
jskl 0:5d27c333afa6 6 public:
jskl 0:5d27c333afa6 7 uint8_t *buf;
jskl 0:5d27c333afa6 8 pico_string str;
jskl 0:5d27c333afa6 9 dnsname(uint8_t *s) {
jskl 0:5d27c333afa6 10 buf = s;
jskl 0:5d27c333afa6 11 }
jskl 0:5d27c333afa6 12 int decode(int pos) {
jskl 0:5d27c333afa6 13 while(1) {
jskl 0:5d27c333afa6 14 int len = buf[pos++];
jskl 0:5d27c333afa6 15 if (len == 0x00) {
jskl 0:5d27c333afa6 16 break;
jskl 0:5d27c333afa6 17 }
jskl 0:5d27c333afa6 18 if ((len&0xc0) == 0xc0) { //compress
jskl 0:5d27c333afa6 19 int offset = (len&0x3f)<<8|buf[pos];
jskl 0:5d27c333afa6 20 decode(offset);
jskl 0:5d27c333afa6 21 return pos+1;
jskl 0:5d27c333afa6 22 }
jskl 0:5d27c333afa6 23 if (!str.empty()) {
jskl 0:5d27c333afa6 24 str.append(".");
jskl 0:5d27c333afa6 25 }
jskl 0:5d27c333afa6 26 str.append((const char*)(buf+pos), len);
jskl 0:5d27c333afa6 27 pos += len;
jskl 0:5d27c333afa6 28 }
jskl 0:5d27c333afa6 29 return pos;
jskl 0:5d27c333afa6 30 }
jskl 0:5d27c333afa6 31
jskl 0:5d27c333afa6 32 int encode(int pos, char* s) {
jskl 0:5d27c333afa6 33 while(*s) {
jskl 0:5d27c333afa6 34 char *f = strchr(s, '.');
jskl 0:5d27c333afa6 35 if (f == NULL) {
jskl 0:5d27c333afa6 36 int len = strlen(s);
jskl 0:5d27c333afa6 37 buf[pos++] = len;
jskl 0:5d27c333afa6 38 memcpy(buf+pos, s, len);
jskl 0:5d27c333afa6 39 pos += len;
jskl 0:5d27c333afa6 40 break;
jskl 0:5d27c333afa6 41 }
jskl 0:5d27c333afa6 42 int len = f - s;
jskl 0:5d27c333afa6 43 buf[pos++] = len;
jskl 0:5d27c333afa6 44 memcpy(buf+pos, s, len);
jskl 0:5d27c333afa6 45 s = f+1;
jskl 0:5d27c333afa6 46 pos += len;
jskl 0:5d27c333afa6 47 }
jskl 0:5d27c333afa6 48 buf[pos++] = 0x00;
jskl 0:5d27c333afa6 49 return pos;
jskl 0:5d27c333afa6 50 }
jskl 0:5d27c333afa6 51 };
jskl 0:5d27c333afa6 52