00001 /* 00002 Aseba - an event-based framework for distributed robot control 00003 Copyright (C) 2007--2012: 00004 Stephane Magnenat <stephane at magnenat dot net> 00005 (http://stephane.magnenat.net) 00006 and other contributors, see authors.txt for details 00007 00008 This program is free software: you can redistribute it and/or modify 00009 it under the terms of the GNU Lesser General Public License as published 00010 by the Free Software Foundation, version 3 of the License. 00011 00012 This program is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 GNU Lesser General Public License for more details. 00016 00017 You should have received a copy of the GNU Lesser General Public License 00018 along with this program. If not, see <http://www.gnu.org/licenses/>. 00019 */ 00020 00021 #ifndef _USB_BUFFER_H_ 00022 #define _USB_BUFFER_H_ 00023 00024 #include "../../vm/vm.h" 00025 #include "../../common/types.h" 00026 00034 00035 /************** 00036 * Interface USB-HW (Interrupt) <-> Usb buffer 00037 **************/ 00038 00040 #define ASEBA_USB_MTU 64 00041 00046 unsigned char AsebaTxReady(unsigned char *data); 00047 00051 int AsebaUsbBulkRecv(unsigned char *data, unsigned char size); 00052 00053 00054 00055 /************* 00056 * Interface usb-buffer <-> Aseba VM (Main() code) 00057 *************/ 00058 00059 void AsebaSendBuffer(AsebaVMState *vm, const uint8 * data, uint16 length); 00060 uint16 AsebaGetBuffer(AsebaVMState *vm, uint8* data, uint16 maxLength, uint16* source); 00061 00062 00063 /************* 00064 * Init, and other random stuff 00065 *************/ 00066 void AsebaUsbInit(unsigned char * sendQueue, size_t sendQueueSize, unsigned char * recvQueue, size_t recvQueueSize); 00067 int AsebaUsbRecvBufferEmpty(void); 00068 int AsebaUsbTxBusy(void); 00069 00072 #endif