Junichi Katsu / Mbed 2 deprecated BLEControl

Dependencies:   FatFileSystem TB6612FNG2 mbed

Committer:
mbed_Cookbook_SE
Date:
Mon Nov 30 09:32:15 2015 +0000
Revision:
0:de03cbbcd0ff
??

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_Cookbook_SE 0:de03cbbcd0ff 1 #include "mbed.h"
mbed_Cookbook_SE 0:de03cbbcd0ff 2 //#define __DEBUG
mbed_Cookbook_SE 0:de03cbbcd0ff 3 #include "mydbg.h"
mbed_Cookbook_SE 0:de03cbbcd0ff 4 #include "myjpeg.h"
mbed_Cookbook_SE 0:de03cbbcd0ff 5
mbed_Cookbook_SE 0:de03cbbcd0ff 6 static const uint8_t dht[] = {
mbed_Cookbook_SE 0:de03cbbcd0ff 7 0xFF,0xC4,0x01,0xA2,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,
mbed_Cookbook_SE 0:de03cbbcd0ff 8 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,
mbed_Cookbook_SE 0:de03cbbcd0ff 9 0x0B,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
mbed_Cookbook_SE 0:de03cbbcd0ff 10 0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x10,0x00,
mbed_Cookbook_SE 0:de03cbbcd0ff 11 0x02,0x01,0x03,0x03,0x02,0x04,0x03,0x05,0x05,0x04,0x04,0x00,0x00,0x01,0x7D,0x01,
mbed_Cookbook_SE 0:de03cbbcd0ff 12 0x02,0x03,0x00,0x04,0x11,0x05,0x12,0x21,0x31,0x41,0x06,0x13,0x51,0x61,0x07,0x22,
mbed_Cookbook_SE 0:de03cbbcd0ff 13 0x71,0x14,0x32,0x81,0x91,0xA1,0x08,0x23,0x42,0xB1,0xC1,0x15,0x52,0xD1,0xF0,0x24,
mbed_Cookbook_SE 0:de03cbbcd0ff 14 0x33,0x62,0x72,0x82,0x09,0x0A,0x16,0x17,0x18,0x19,0x1A,0x25,0x26,0x27,0x28,0x29,
mbed_Cookbook_SE 0:de03cbbcd0ff 15 0x2A,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,
mbed_Cookbook_SE 0:de03cbbcd0ff 16 0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,
mbed_Cookbook_SE 0:de03cbbcd0ff 17 0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,
mbed_Cookbook_SE 0:de03cbbcd0ff 18 0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,
mbed_Cookbook_SE 0:de03cbbcd0ff 19 0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xC2,0xC3,0xC4,0xC5,0xC6,
mbed_Cookbook_SE 0:de03cbbcd0ff 20 0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xE1,0xE2,0xE3,
mbed_Cookbook_SE 0:de03cbbcd0ff 21 0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,
mbed_Cookbook_SE 0:de03cbbcd0ff 22 0xFA,0x11,0x00,0x02,0x01,0x02,0x04,0x04,0x03,0x04,0x07,0x05,0x04,0x04,0x00,0x01,
mbed_Cookbook_SE 0:de03cbbcd0ff 23 0x02,0x77,0x00,0x01,0x02,0x03,0x11,0x04,0x05,0x21,0x31,0x06,0x12,0x41,0x51,0x07,
mbed_Cookbook_SE 0:de03cbbcd0ff 24 0x61,0x71,0x13,0x22,0x32,0x81,0x08,0x14,0x42,0x91,0xA1,0xB1,0xC1,0x09,0x23,0x33,
mbed_Cookbook_SE 0:de03cbbcd0ff 25 0x52,0xF0,0x15,0x62,0x72,0xD1,0x0A,0x16,0x24,0x34,0xE1,0x25,0xF1,0x17,0x18,0x19,
mbed_Cookbook_SE 0:de03cbbcd0ff 26 0x1A,0x26,0x27,0x28,0x29,0x2A,0x35,0x36,0x37,0x38,0x39,0x3A,0x43,0x44,0x45,0x46,
mbed_Cookbook_SE 0:de03cbbcd0ff 27 0x47,0x48,0x49,0x4A,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x63,0x64,0x65,0x66,
mbed_Cookbook_SE 0:de03cbbcd0ff 28 0x67,0x68,0x69,0x6A,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x82,0x83,0x84,0x85,
mbed_Cookbook_SE 0:de03cbbcd0ff 29 0x86,0x87,0x88,0x89,0x8A,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0xA2,0xA3,
mbed_Cookbook_SE 0:de03cbbcd0ff 30 0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,
mbed_Cookbook_SE 0:de03cbbcd0ff 31 0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,
mbed_Cookbook_SE 0:de03cbbcd0ff 32 0xD9,0xDA,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xF2,0xF3,0xF4,0xF5,0xF6,
mbed_Cookbook_SE 0:de03cbbcd0ff 33 0xF7,0xF8,0xF9,0xFA,
mbed_Cookbook_SE 0:de03cbbcd0ff 34 };
mbed_Cookbook_SE 0:de03cbbcd0ff 35
mbed_Cookbook_SE 0:de03cbbcd0ff 36 myjpeg::myjpeg(uint8_t* buf, int len, int capacity)
mbed_Cookbook_SE 0:de03cbbcd0ff 37 {
mbed_Cookbook_SE 0:de03cbbcd0ff 38 DBG_ASSERT(buf);
mbed_Cookbook_SE 0:de03cbbcd0ff 39 DBG_ASSERT(len >= 0);
mbed_Cookbook_SE 0:de03cbbcd0ff 40 m_buf = buf;
mbed_Cookbook_SE 0:de03cbbcd0ff 41 m_len = len;
mbed_Cookbook_SE 0:de03cbbcd0ff 42 m_capacity = capacity;
mbed_Cookbook_SE 0:de03cbbcd0ff 43 }
mbed_Cookbook_SE 0:de03cbbcd0ff 44
mbed_Cookbook_SE 0:de03cbbcd0ff 45 int myjpeg::getc()
mbed_Cookbook_SE 0:de03cbbcd0ff 46 {
mbed_Cookbook_SE 0:de03cbbcd0ff 47 if (m_pos >= m_len) {
mbed_Cookbook_SE 0:de03cbbcd0ff 48 return -1;
mbed_Cookbook_SE 0:de03cbbcd0ff 49 }
mbed_Cookbook_SE 0:de03cbbcd0ff 50 return m_buf[m_pos++];
mbed_Cookbook_SE 0:de03cbbcd0ff 51 }
mbed_Cookbook_SE 0:de03cbbcd0ff 52
mbed_Cookbook_SE 0:de03cbbcd0ff 53 int myjpeg::getBE16()
mbed_Cookbook_SE 0:de03cbbcd0ff 54 {
mbed_Cookbook_SE 0:de03cbbcd0ff 55 int c1 = getc();
mbed_Cookbook_SE 0:de03cbbcd0ff 56 if (c1 == (-1)) {
mbed_Cookbook_SE 0:de03cbbcd0ff 57 return -1;
mbed_Cookbook_SE 0:de03cbbcd0ff 58 }
mbed_Cookbook_SE 0:de03cbbcd0ff 59 int c2 = getc();
mbed_Cookbook_SE 0:de03cbbcd0ff 60 if (c2 == (-1)) {
mbed_Cookbook_SE 0:de03cbbcd0ff 61 return -1;
mbed_Cookbook_SE 0:de03cbbcd0ff 62 }
mbed_Cookbook_SE 0:de03cbbcd0ff 63 return c1<<8|c2;
mbed_Cookbook_SE 0:de03cbbcd0ff 64 }
mbed_Cookbook_SE 0:de03cbbcd0ff 65
mbed_Cookbook_SE 0:de03cbbcd0ff 66 void myjpeg::analytics()
mbed_Cookbook_SE 0:de03cbbcd0ff 67 {
mbed_Cookbook_SE 0:de03cbbcd0ff 68 m_pos = 0;
mbed_Cookbook_SE 0:de03cbbcd0ff 69 SOS_pos = 0;
mbed_Cookbook_SE 0:de03cbbcd0ff 70 DHT_pos = 0;
mbed_Cookbook_SE 0:de03cbbcd0ff 71 int skip;
mbed_Cookbook_SE 0:de03cbbcd0ff 72 int lp;
mbed_Cookbook_SE 0:de03cbbcd0ff 73 while(1) {
mbed_Cookbook_SE 0:de03cbbcd0ff 74 int marker_pos = m_pos;
mbed_Cookbook_SE 0:de03cbbcd0ff 75 int c = getc();
mbed_Cookbook_SE 0:de03cbbcd0ff 76 if (c == (-1)) {
mbed_Cookbook_SE 0:de03cbbcd0ff 77 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 78 }
mbed_Cookbook_SE 0:de03cbbcd0ff 79 if (c != 0xff) {
mbed_Cookbook_SE 0:de03cbbcd0ff 80 continue;
mbed_Cookbook_SE 0:de03cbbcd0ff 81 }
mbed_Cookbook_SE 0:de03cbbcd0ff 82 c = getc();
mbed_Cookbook_SE 0:de03cbbcd0ff 83 if (c == (-1)) {
mbed_Cookbook_SE 0:de03cbbcd0ff 84 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 85 }
mbed_Cookbook_SE 0:de03cbbcd0ff 86 uint8_t marker = c;
mbed_Cookbook_SE 0:de03cbbcd0ff 87 switch(marker) {
mbed_Cookbook_SE 0:de03cbbcd0ff 88 case 0xd8:
mbed_Cookbook_SE 0:de03cbbcd0ff 89 DBG("%04X SOI\n", marker_pos);
mbed_Cookbook_SE 0:de03cbbcd0ff 90 skip = 0;
mbed_Cookbook_SE 0:de03cbbcd0ff 91 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 92 case 0xd9:
mbed_Cookbook_SE 0:de03cbbcd0ff 93 DBG("%04X EOI\n", marker_pos);
mbed_Cookbook_SE 0:de03cbbcd0ff 94 skip = 0;
mbed_Cookbook_SE 0:de03cbbcd0ff 95 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 96 case 0x00:
mbed_Cookbook_SE 0:de03cbbcd0ff 97 skip = 0;
mbed_Cookbook_SE 0:de03cbbcd0ff 98 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 99 case 0xc0:
mbed_Cookbook_SE 0:de03cbbcd0ff 100 lp = getBE16();
mbed_Cookbook_SE 0:de03cbbcd0ff 101 DBG("%04X SOF0 %d\n", marker_pos, lp);
mbed_Cookbook_SE 0:de03cbbcd0ff 102 skip = lp - 2;
mbed_Cookbook_SE 0:de03cbbcd0ff 103 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 104 case 0xc4:
mbed_Cookbook_SE 0:de03cbbcd0ff 105 lp = getBE16();
mbed_Cookbook_SE 0:de03cbbcd0ff 106 DBG("%04X DHT Lh: %d\n", marker_pos, lp);
mbed_Cookbook_SE 0:de03cbbcd0ff 107 //DBG("Tc: %d\n", buf[pos+2]>>4);
mbed_Cookbook_SE 0:de03cbbcd0ff 108 //DBG("Th: %d\n", buf[pos+2]&0xf);
mbed_Cookbook_SE 0:de03cbbcd0ff 109 DHT_pos = marker_pos;
mbed_Cookbook_SE 0:de03cbbcd0ff 110 skip = lp - 2;
mbed_Cookbook_SE 0:de03cbbcd0ff 111 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 112 case 0xda:
mbed_Cookbook_SE 0:de03cbbcd0ff 113 lp = getBE16();
mbed_Cookbook_SE 0:de03cbbcd0ff 114 DBG("%04X SOS Ls: %d\n", marker_pos, lp);
mbed_Cookbook_SE 0:de03cbbcd0ff 115 //DBG("Ns: %d\n", buf[pos+2]);
mbed_Cookbook_SE 0:de03cbbcd0ff 116 //for(i = 1; i <= buf[pos+2]; i++) {
mbed_Cookbook_SE 0:de03cbbcd0ff 117 // DBG("Cs%d: %d\n", i, buf[pos+3+(i-1)*2]);
mbed_Cookbook_SE 0:de03cbbcd0ff 118 // DBG("Td%d: %d\n", i, buf[pos+4+(i-1)*2]>>4);
mbed_Cookbook_SE 0:de03cbbcd0ff 119 // DBG("Ta%d: %d\n", i, buf[pos+4+(i-1)*2]&0xf);
mbed_Cookbook_SE 0:de03cbbcd0ff 120 //}
mbed_Cookbook_SE 0:de03cbbcd0ff 121 SOS_pos = marker_pos;
mbed_Cookbook_SE 0:de03cbbcd0ff 122 skip = lp - 2;
mbed_Cookbook_SE 0:de03cbbcd0ff 123 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 124 case 0xdb:
mbed_Cookbook_SE 0:de03cbbcd0ff 125 lp = getBE16();
mbed_Cookbook_SE 0:de03cbbcd0ff 126 DBG("%04X DQT %d\n", marker_pos, lp);
mbed_Cookbook_SE 0:de03cbbcd0ff 127 skip = lp - 2;
mbed_Cookbook_SE 0:de03cbbcd0ff 128 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 129 case 0xe0:
mbed_Cookbook_SE 0:de03cbbcd0ff 130 lp = getBE16();
mbed_Cookbook_SE 0:de03cbbcd0ff 131 DBG("%04X APP0 %d\n", marker_pos, lp);
mbed_Cookbook_SE 0:de03cbbcd0ff 132 skip = lp - 2;
mbed_Cookbook_SE 0:de03cbbcd0ff 133 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 134 default:
mbed_Cookbook_SE 0:de03cbbcd0ff 135 DBG("%04X ??? %02X\n", marker_pos, marker);
mbed_Cookbook_SE 0:de03cbbcd0ff 136 skip = 0;
mbed_Cookbook_SE 0:de03cbbcd0ff 137 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 138 }
mbed_Cookbook_SE 0:de03cbbcd0ff 139 while(skip-- > 0) {
mbed_Cookbook_SE 0:de03cbbcd0ff 140 getc();
mbed_Cookbook_SE 0:de03cbbcd0ff 141 }
mbed_Cookbook_SE 0:de03cbbcd0ff 142 }
mbed_Cookbook_SE 0:de03cbbcd0ff 143 }
mbed_Cookbook_SE 0:de03cbbcd0ff 144
mbed_Cookbook_SE 0:de03cbbcd0ff 145 int myjpeg::insertDHT()
mbed_Cookbook_SE 0:de03cbbcd0ff 146 {
mbed_Cookbook_SE 0:de03cbbcd0ff 147 DBG("m_len=%d m_capacity=%d SOS=%d\n", m_len, m_capacity, SOS_pos);
mbed_Cookbook_SE 0:de03cbbcd0ff 148 DBG_ASSERT(SOS_pos > 0);
mbed_Cookbook_SE 0:de03cbbcd0ff 149 DBG_ASSERT(SOS_pos < m_len);
mbed_Cookbook_SE 0:de03cbbcd0ff 150 DBG_ASSERT(m_len <= m_capacity);
mbed_Cookbook_SE 0:de03cbbcd0ff 151 DBG_ASSERT(sizeof(dht) == 420);
mbed_Cookbook_SE 0:de03cbbcd0ff 152
mbed_Cookbook_SE 0:de03cbbcd0ff 153 int num1 = m_len - SOS_pos;
mbed_Cookbook_SE 0:de03cbbcd0ff 154 if (num1 > (m_capacity - SOS_pos - sizeof(dht))) {
mbed_Cookbook_SE 0:de03cbbcd0ff 155 num1 = m_capacity - SOS_pos - sizeof(dht);
mbed_Cookbook_SE 0:de03cbbcd0ff 156 }
mbed_Cookbook_SE 0:de03cbbcd0ff 157 DBG("num1=%d\n", num1);
mbed_Cookbook_SE 0:de03cbbcd0ff 158 DBG_ASSERT(SOS_pos+sizeof(dht)+num1 <= m_capacity);
mbed_Cookbook_SE 0:de03cbbcd0ff 159 memmove(m_buf+SOS_pos+sizeof(dht), m_buf+SOS_pos, num1);
mbed_Cookbook_SE 0:de03cbbcd0ff 160
mbed_Cookbook_SE 0:de03cbbcd0ff 161 int num2 = sizeof(dht);
mbed_Cookbook_SE 0:de03cbbcd0ff 162 if (num2 > m_capacity - SOS_pos) {
mbed_Cookbook_SE 0:de03cbbcd0ff 163 num2 = m_capacity - SOS_pos;
mbed_Cookbook_SE 0:de03cbbcd0ff 164 }
mbed_Cookbook_SE 0:de03cbbcd0ff 165 DBG("num2=%d\n", num2);
mbed_Cookbook_SE 0:de03cbbcd0ff 166 DBG_ASSERT(SOS_pos+num2 <= m_capacity);
mbed_Cookbook_SE 0:de03cbbcd0ff 167 memcpy(m_buf+SOS_pos, dht, num2);
mbed_Cookbook_SE 0:de03cbbcd0ff 168 m_len += sizeof(dht);
mbed_Cookbook_SE 0:de03cbbcd0ff 169 if (m_len > m_capacity) {
mbed_Cookbook_SE 0:de03cbbcd0ff 170 m_len = m_capacity;
mbed_Cookbook_SE 0:de03cbbcd0ff 171 }
mbed_Cookbook_SE 0:de03cbbcd0ff 172 return m_len;
mbed_Cookbook_SE 0:de03cbbcd0ff 173 }
mbed_Cookbook_SE 0:de03cbbcd0ff 174
mbed_Cookbook_SE 0:de03cbbcd0ff 175 int fgetBE16(FILE* fp)
mbed_Cookbook_SE 0:de03cbbcd0ff 176 {
mbed_Cookbook_SE 0:de03cbbcd0ff 177 int c1 = fgetc(fp);
mbed_Cookbook_SE 0:de03cbbcd0ff 178 if (c1 == EOF) {
mbed_Cookbook_SE 0:de03cbbcd0ff 179 return -1;
mbed_Cookbook_SE 0:de03cbbcd0ff 180 }
mbed_Cookbook_SE 0:de03cbbcd0ff 181 int c2 = fgetc(fp);
mbed_Cookbook_SE 0:de03cbbcd0ff 182 if (c2 == EOF) {
mbed_Cookbook_SE 0:de03cbbcd0ff 183 return -1;
mbed_Cookbook_SE 0:de03cbbcd0ff 184 }
mbed_Cookbook_SE 0:de03cbbcd0ff 185 return c1<<8|c2;
mbed_Cookbook_SE 0:de03cbbcd0ff 186 }
mbed_Cookbook_SE 0:de03cbbcd0ff 187
mbed_Cookbook_SE 0:de03cbbcd0ff 188 void QcamCopy(const char* destination, const char* source)
mbed_Cookbook_SE 0:de03cbbcd0ff 189 {
mbed_Cookbook_SE 0:de03cbbcd0ff 190 FILE* fp;
mbed_Cookbook_SE 0:de03cbbcd0ff 191 FILE* fp2;
mbed_Cookbook_SE 0:de03cbbcd0ff 192 fp = fopen(source, "rb");
mbed_Cookbook_SE 0:de03cbbcd0ff 193 if (fp == NULL) {
mbed_Cookbook_SE 0:de03cbbcd0ff 194 return;
mbed_Cookbook_SE 0:de03cbbcd0ff 195 }
mbed_Cookbook_SE 0:de03cbbcd0ff 196 fp2 = fopen(destination, "wb");
mbed_Cookbook_SE 0:de03cbbcd0ff 197 if (fp2 == NULL) {
mbed_Cookbook_SE 0:de03cbbcd0ff 198 return;
mbed_Cookbook_SE 0:de03cbbcd0ff 199 }
mbed_Cookbook_SE 0:de03cbbcd0ff 200 int i,c1,c2;
mbed_Cookbook_SE 0:de03cbbcd0ff 201 bool f_dht = false;
mbed_Cookbook_SE 0:de03cbbcd0ff 202 bool f_lp = false;
mbed_Cookbook_SE 0:de03cbbcd0ff 203 while(!feof(fp)){
mbed_Cookbook_SE 0:de03cbbcd0ff 204 c1 = fgetc(fp);
mbed_Cookbook_SE 0:de03cbbcd0ff 205 if (c1 != 0xff) {
mbed_Cookbook_SE 0:de03cbbcd0ff 206 fputc(c1, fp2);
mbed_Cookbook_SE 0:de03cbbcd0ff 207 continue;
mbed_Cookbook_SE 0:de03cbbcd0ff 208 }
mbed_Cookbook_SE 0:de03cbbcd0ff 209 c2 = fgetc(fp);
mbed_Cookbook_SE 0:de03cbbcd0ff 210 switch(c2) {
mbed_Cookbook_SE 0:de03cbbcd0ff 211 case 0xda: // SOS
mbed_Cookbook_SE 0:de03cbbcd0ff 212 if (!f_dht) {
mbed_Cookbook_SE 0:de03cbbcd0ff 213 for(i = 0; i < sizeof(dht); i++) {
mbed_Cookbook_SE 0:de03cbbcd0ff 214 fputc(dht[i], fp2);
mbed_Cookbook_SE 0:de03cbbcd0ff 215 }
mbed_Cookbook_SE 0:de03cbbcd0ff 216 f_dht = true;
mbed_Cookbook_SE 0:de03cbbcd0ff 217 }
mbed_Cookbook_SE 0:de03cbbcd0ff 218 f_lp = true;
mbed_Cookbook_SE 0:de03cbbcd0ff 219 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 220 case 0xc4: // DHT
mbed_Cookbook_SE 0:de03cbbcd0ff 221 f_dht = true;
mbed_Cookbook_SE 0:de03cbbcd0ff 222 f_lp = true;
mbed_Cookbook_SE 0:de03cbbcd0ff 223 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 224 case 0xc0:
mbed_Cookbook_SE 0:de03cbbcd0ff 225 case 0xdb:
mbed_Cookbook_SE 0:de03cbbcd0ff 226 case 0xe0:
mbed_Cookbook_SE 0:de03cbbcd0ff 227 f_lp = true;
mbed_Cookbook_SE 0:de03cbbcd0ff 228 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 229 default:
mbed_Cookbook_SE 0:de03cbbcd0ff 230 f_lp = false;
mbed_Cookbook_SE 0:de03cbbcd0ff 231 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 232 }
mbed_Cookbook_SE 0:de03cbbcd0ff 233 fputc(c1, fp2);
mbed_Cookbook_SE 0:de03cbbcd0ff 234 fputc(c2, fp2); // marker
mbed_Cookbook_SE 0:de03cbbcd0ff 235 if (f_lp) {
mbed_Cookbook_SE 0:de03cbbcd0ff 236 c1 = fgetc(fp); // length
mbed_Cookbook_SE 0:de03cbbcd0ff 237 c2 = fgetc(fp);
mbed_Cookbook_SE 0:de03cbbcd0ff 238 fputc(c1, fp2);
mbed_Cookbook_SE 0:de03cbbcd0ff 239 fputc(c2, fp2);
mbed_Cookbook_SE 0:de03cbbcd0ff 240 int skip = c1<<8|c2;
mbed_Cookbook_SE 0:de03cbbcd0ff 241 while(skip-- > 2) {
mbed_Cookbook_SE 0:de03cbbcd0ff 242 int c = fgetc(fp);
mbed_Cookbook_SE 0:de03cbbcd0ff 243 if (c == EOF) {
mbed_Cookbook_SE 0:de03cbbcd0ff 244 break;
mbed_Cookbook_SE 0:de03cbbcd0ff 245 }
mbed_Cookbook_SE 0:de03cbbcd0ff 246 fputc(c, fp2);
mbed_Cookbook_SE 0:de03cbbcd0ff 247 }
mbed_Cookbook_SE 0:de03cbbcd0ff 248 }
mbed_Cookbook_SE 0:de03cbbcd0ff 249 }
mbed_Cookbook_SE 0:de03cbbcd0ff 250 fclose(fp);
mbed_Cookbook_SE 0:de03cbbcd0ff 251 fclose(fp2);
mbed_Cookbook_SE 0:de03cbbcd0ff 252 }