Webcam Server.
Dependencies: uvchost FatFileSystem mbed HTTPServer NetServicesMin
Diff: uvc/usb_itd.cpp
- Revision:
- 1:7a4f2c038803
- Parent:
- 0:2b4ea8a138e5
--- a/uvc/usb_itd.cpp Wed Jun 06 11:47:06 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -#include "mbed.h" -#include "usb_itd.h" -#define __DEBUG -#include "mydbg.h" - -usb_itd::usb_itd(HCITD* itd) -{ - DBG_ASSERT(itd); - m_itd = itd; -} - -bool usb_itd::Done() -{ - int cc = (m_itd->Control >> 28); - if (cc == 0xe || cc == 0xf) { // not accessed? - return false; - } - if (m_itd->Next) { - return false; - } - return true; -} - -int usb_itd::ConditionCode() -{ - int cc = (m_itd->Control >> 28); - return cc; -} - -uint16_t usb_itd::get_psw(int n) -{ - DBG_ASSERT(n >= 0 && n <= 7); - DBG_ASSERT(m_itd); - uint16_t psw = 0; - switch(n) { - case 0: psw = m_itd->OffsetPSW10; break; - case 1: psw = m_itd->OffsetPSW10 >> 16; break; - case 2: psw = m_itd->OffsetPSW32; break; - case 3: psw = m_itd->OffsetPSW32 >> 16; break; - case 4: psw = m_itd->OffsetPSW54; break; - case 5: psw = m_itd->OffsetPSW54 >> 16; break; - case 6: psw = m_itd->OffsetPSW76; break; - case 7: psw = m_itd->OffsetPSW76 >> 16; break; - } - return psw; -} - -uint16_t usb_itd::StartingFrame() -{ - return (m_itd->Control & ITD_SF); -} - -int usb_itd::FrameCount() -{ - DBG_ASSERT(m_itd); - int fc = ((m_itd->Control & ITD_FC) >> 24) + 1; - DBG_ASSERT(fc >= 1 && fc <= 8); - return fc; -} - -int usb_itd::PacketStatus(int n) -{ - DBG_ASSERT(n >=0 && n <= 7); - uint16_t psw = get_psw(n); - int cc = (psw >> 12) & 0xf; - return cc; -} - -int usb_itd::Length(int n) -{ - DBG_ASSERT(n >=0 && n <= 7); - uint16_t psw = get_psw(n); - int size = psw & 0x7ff; - int cc = (psw >> 12) & 0xf; - if (cc == 0xe || cc == 0xf) { - return -1; - } - if (cc == 0 || cc == 9) { - return size; - } - debug(); - return -1; -} - -uint8_t* usb_itd::BufferPage(int n, int size) -{ - DBG_ASSERT(n >=0 && n <= 7); - DBG_ASSERT(size >= 128 && size <= 956); - uint8_t* buf = (uint8_t*)m_itd->BufferPage0 + n * size; - DBG_ASSERT((uint32_t)(buf+size-1) <= m_itd->BufferEnd); - return buf; -} - -void usb_itd::free() -{ - DBG_ASSERT(m_itd); - if (m_itd) { - uint8_t* buf = (uint8_t*)m_itd->BufferPage0; - DBG_ASSERT(buf); - usb_free_bp(buf); - usb_free_itd((byte*)m_itd); - m_itd = NULL; - } -} - -void usb_itd::debug() -{ - DBG("itd =%08X\n", m_itd); - DBG("itd->Control =%08X\n", m_itd->Control); - DBG("itd->BufferPage0=%08X\n", m_itd->BufferPage0); - DBG("itd->Next =%08X\n", m_itd->Next); - DBG("itd->BufferEnd =%08X\n", m_itd->BufferEnd); - DBG("itd->OffsetPSW10=%08X\n", m_itd->OffsetPSW10); - DBG("itd->OffsetPSW32=%08X\n", m_itd->OffsetPSW32); - DBG("itd->OffsetPSW54=%08X\n", m_itd->OffsetPSW54); - DBG("itd->OffsetPSW76=%08X\n", m_itd->OffsetPSW76); -}