Rev 5 | Rev 7 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 5 | Rev 6 | ||
|---|---|---|---|
| Line 21... | Line 21... | ||
| 21 | 21 | ||
| 22 | /* Includes ------------------------------------------------------------------*/ |
22 | /* Includes ------------------------------------------------------------------*/ |
| 23 | #include "usbd_cdc_if.h" |
23 | #include "usbd_cdc_if.h" |
| 24 | 24 | ||
| 25 | /* USER CODE BEGIN INCLUDE */ |
25 | /* USER CODE BEGIN INCLUDE */ |
| 26 | #include "leds.h" |
26 | #include "dmx.h" |
| 27 | 27 | ||
| 28 | /* USER CODE END INCLUDE */ |
28 | /* USER CODE END INCLUDE */ |
| 29 | 29 | ||
| 30 | /* Private typedef -----------------------------------------------------------*/ |
30 | /* Private typedef -----------------------------------------------------------*/ |
| 31 | /* Private define ------------------------------------------------------------*/ |
31 | /* Private define ------------------------------------------------------------*/ |
| Line 264... | Line 264... | ||
| 264 | * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL |
264 | * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL |
| 265 | */ |
265 | */ |
| 266 | static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) |
266 | static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) |
| 267 | { |
267 | { |
| 268 | /* USER CODE BEGIN 6 */ |
268 | /* USER CODE BEGIN 6 */ |
| 269 | switch (DMX_State) |
- | |
| 270 | { |
- | |
| 271 | case DMX_IDLE: // nothing happening |
- | |
| 272 | break; |
- | |
| 273 | case DMX_BREAK:// |
- | |
| 274 | if(*Len > 0) |
- | |
| 275 | { |
- | |
| 276 | if( Buf[0] != 0) |
- | |
| 277 | DMX_State = DMX_IDLE; |
- | |
| 278 | else |
- | |
| 279 | { |
- | |
| 280 | memcpy(DMX_Buffer,Buf+1,*Len-1); |
- | |
| 281 | DMX_Pointer = *Len-1; |
- | |
| 282 | DMX_State = DMX_BYTES; |
- | |
| 283 | } |
- | |
| 284 | } |
- | |
| 285 | break; |
- | |
| 286 | case DMX_BYTES: |
- | |
| 287 | { |
- | |
| 288 | int count = *Len; |
269 | dmx_state(Buf,Len); |
| 289 | int newPointer = DMX_Pointer + count; |
- | |
| 290 | if(newPointer >= 512) |
- | |
| 291 | count = 512-count; |
- | |
| 292 | - | ||
| 293 | memcpy(DMX_Buffer+ DMX_Pointer, Buf, count); |
- | |
| 294 | DMX_Pointer += count; |
- | |
| 295 | if (DMX_Pointer == 512) |
- | |
| 296 | { |
- | |
| 297 | DMX_State = DMX_DATA; |
- | |
| 298 | } |
- | |
| 299 | } |
- | |
| 300 | break; |
- | |
| 301 | case DMX_DATA: |
- | |
| 302 | case DMX_DONE: |
- | |
| 303 | break; |
- | |
| 304 | } |
- | |
| 305 | 270 | ||
| 306 | USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); |
271 | USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]); |
| 307 | Len = USBD_CDC_ReceivePacket(&hUsbDeviceFS); |
272 | Len = USBD_CDC_ReceivePacket(&hUsbDeviceFS); |
| 308 | return (USBD_OK); |
273 | return (USBD_OK); |
| 309 | /* USER CODE END 6 */ |
274 | /* USER CODE END 6 */ |