iSDIO library for FlashAir
Dependents: FlashAir_iSDIO_sample FlashAir_iSDIO_16seg_ADT7410_step1 FlashAir_iSDIO_16seg_ADT7410 FlashAir_iSDIO_sample_OS5_ ... more
iSDIO_template.cpp@1:dc888b9028cf, 2018-08-29 (annotated)
- Committer:
- hogejun
- Date:
- Wed Aug 29 04:04:52 2018 +0000
- Revision:
- 1:dc888b9028cf
- Parent:
- 0:89c6aae3a486
add header to each file
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hogejun | 0:89c6aae3a486 | 1 | /* mbed SD iSDIO Library |
hogejun | 1:dc888b9028cf | 2 | * Copyright (C) 2018 by Junichi SHIBA, PIAX Inc |
hogejun | 1:dc888b9028cf | 3 | * |
hogejun | 0:89c6aae3a486 | 4 | * Arduino Sdio Library |
hogejun | 0:89c6aae3a486 | 5 | * Copyright (C) 2014 by Munehiro Doi, Fixstars Corporation |
hogejun | 0:89c6aae3a486 | 6 | * All rights reserved. |
hogejun | 0:89c6aae3a486 | 7 | * Released under the BSD 2-Clause license. |
hogejun | 0:89c6aae3a486 | 8 | * http://flashair-developers.com/documents/license.html |
hogejun | 0:89c6aae3a486 | 9 | */ |
hogejun | 0:89c6aae3a486 | 10 | |
hogejun | 0:89c6aae3a486 | 11 | #include "iSDIO_template.h" |
hogejun | 0:89c6aae3a486 | 12 | |
hogejun | 0:89c6aae3a486 | 13 | //------------------------------------------------------------------------------ |
hogejun | 0:89c6aae3a486 | 14 | /** specific version for string. it adds padding bytes after text data. */ |
hogejun | 0:89c6aae3a486 | 15 | template <> |
hogejun | 0:89c6aae3a486 | 16 | uint8_t* put_T(uint8_t* p, const uint8_t* value) { |
hogejun | 0:89c6aae3a486 | 17 | while (*value != 0) { |
hogejun | 0:89c6aae3a486 | 18 | *p++ = *((uint8_t*)value++); |
hogejun | 0:89c6aae3a486 | 19 | } |
hogejun | 0:89c6aae3a486 | 20 | return p; |
hogejun | 0:89c6aae3a486 | 21 | } |
hogejun | 0:89c6aae3a486 | 22 | |
hogejun | 0:89c6aae3a486 | 23 | template <> |
hogejun | 0:89c6aae3a486 | 24 | uint8_t* put_T_arg(uint8_t* p, const uint8_t* value) { |
hogejun | 0:89c6aae3a486 | 25 | uint8_t* orig = p; |
hogejun | 0:89c6aae3a486 | 26 | p += sizeof(uint32_t); // skip length area. |
hogejun | 0:89c6aae3a486 | 27 | p = put_T(p, value); // data |
hogejun | 0:89c6aae3a486 | 28 | uint32_t len = p - orig - sizeof(uint32_t); |
hogejun | 0:89c6aae3a486 | 29 | put_T(orig, len); // write length. |
hogejun | 0:89c6aae3a486 | 30 | for (int i = 0; i < ((4 - (len & 3)) & 3); ++i) { // padding |
hogejun | 0:89c6aae3a486 | 31 | *p++ = 0; |
hogejun | 0:89c6aae3a486 | 32 | } |
hogejun | 0:89c6aae3a486 | 33 | return p; |
hogejun | 0:89c6aae3a486 | 34 | } |
hogejun | 0:89c6aae3a486 | 35 | |
hogejun | 0:89c6aae3a486 | 36 | uint8_t* put_command_header(uint8_t* p, uint8_t num_commands, |
hogejun | 0:89c6aae3a486 | 37 | uint32_t command_bytes) { |
hogejun | 0:89c6aae3a486 | 38 | p = put_u8(p, 0x01); // Write Data ID |
hogejun | 0:89c6aae3a486 | 39 | p = put_u8(p, num_commands); // Number of commands. |
hogejun | 0:89c6aae3a486 | 40 | p = put_u16(p, 0); // reserved. |
hogejun | 0:89c6aae3a486 | 41 | p = put_u32(p, command_bytes); // size of command write data. |
hogejun | 0:89c6aae3a486 | 42 | p = put_u32(p, 0); // reserved. |
hogejun | 0:89c6aae3a486 | 43 | return p; |
hogejun | 0:89c6aae3a486 | 44 | } |
hogejun | 0:89c6aae3a486 | 45 | |
hogejun | 0:89c6aae3a486 | 46 | uint8_t* put_command_info_header(uint8_t* p, uint16_t command_id, |
hogejun | 0:89c6aae3a486 | 47 | uint32_t sequence_id, uint16_t num_args) { |
hogejun | 0:89c6aae3a486 | 48 | p = put_u16(p, 0); // reserved. |
hogejun | 0:89c6aae3a486 | 49 | p = put_u16(p, command_id); // iSDIO command id. |
hogejun | 0:89c6aae3a486 | 50 | p = put_u32(p, sequence_id); // iSDIO command sequence id. |
hogejun | 0:89c6aae3a486 | 51 | p = put_u16(p, num_args); // Number of Arguments. |
hogejun | 0:89c6aae3a486 | 52 | p = put_u16(p, 0); // Reserved. |
hogejun | 0:89c6aae3a486 | 53 | return p; |
hogejun | 0:89c6aae3a486 | 54 | } |