| 104 | } |
| 105 | |
| 106 | static uint8_t crc7(const uint8_t *buf, int len) |
| 107 | { |
| 108 | unsigned char i, j, crc, ch, ch2, ch3; |
| 109 | |
| 110 | crc = 0; |
| 111 | |
| 112 | for (i = 0; i < len; i ++) |
| 113 | { |
| 114 | ch = buf[i]; |
| 115 | |
| 116 | for (j = 0; j < 8; j ++, ch <<= 1) |
| 117 | { |
| 118 | ch2 = (crc & 0x40) ? 1 : 0; |
| 119 | ch3 = (ch & 0x80) ? 1 : 0; |
| 120 | |
| 121 | if (ch2 ^ ch3) |
| 122 | { |
| 123 | crc ^= 0x04; |
| 124 | crc <<= 1; |
| 125 | crc |= 0x01; |
| 126 | } |
| 127 | else |
| 128 | { |
| 129 | crc <<= 1; |
| 130 | } |
| 131 | } |
| 132 | } |
| 133 | |
| 134 | return crc; |
| 135 | } |
| 136 | |
| 137 | static rt_err_t _send_cmd( |
| 138 | struct rt_spi_device *device, |