コード例 #1
0
ファイル: PacketPool.cpp プロジェクト: piaoxue85/tsfriend
void CPacketPool::CopyFromAnotherPool(CPacketPool & pAp)
{
	CPacket * pPkt;
	for(u32 i=0; i< pAp.GetPacketCunt(); i ++)
	{
		pPkt = NewPacket();
		memcpy(pPkt->GetPktData() , pAp.GetPacket(i)->GetPktData(),pPkt->PacketSize);
	}
}
コード例 #2
0
HRESULT CTsTeleportShellExt::AnnounceTransfer(__in_z LPTSTR szPartial, BOOL bDir)
{
    HRESULT hr;
    PTELEP_PACKET_HEADER pPacket = NULL;
    //
    // Send start packet for file or dir
    //

    size_t Len = _tcslen(szPartial);
    USHORT DataLen;
    hr = SizeTToUShort(Len, &DataLen);
    LEAVE_IF_FAILED("SizeTToUShort (0x%Ix) failed", Len);

    hr = UShortAdd(DataLen, 1, &DataLen);
    LEAVE_IF_FAILED("UShortAdd (0x%4x, 1) failed", DataLen);

    hr = UShortMult(DataLen, sizeof(TCHAR), &DataLen);
    LEAVE_IF_FAILED("UShortMult (0x%4x, %d) failed", DataLen, sizeof(TCHAR));

    hr = UShortAdd(DataLen, sizeof(TELEP_PACKET_HEADER), &DataLen);
    LEAVE_IF_FAILED("UShortMult (0x%4x, %d) failed", DataLen, sizeof(TELEP_PACKET_HEADER));
     
    USHORT Flags = 0;

    if (bDir)
    {
        Flags |= TELET_FLAG_DIRECTORY;
    }

    pPacket = NewPacket(PacketTypeFileStart, DataLen, Flags); // throwing!

    LPWSTR pData = (LPWSTR) (pPacket+1);

    CopyMemory(pData, szPartial, pPacket->PacketSize);

    hr = SendPacket(pPacket);
    LEAVE_IF_FAILED("SendPacket (Start, %s) failed", szPartial);

_Function_Exit:

    if (pPacket)
    {
        delete [] pPacket;
    }

    return hr;
}
コード例 #3
0
HRESULT CTsTeleportShellExt::TeleportFile(__in_z LPTSTR szFile)
{
    HRESULT hr = S_OK;
    HANDLE hFile = INVALID_HANDLE_VALUE;
    PTELEP_PACKET_HEADER pPacket = NULL;

    try
    {
        OutputDebugString(szFile);
        OutputDebugString(TEXT("\n"));

        size_t Len = _tcslen(szFile);
        LPTSTR szPartial = szFile + Len - 1;

        while (szPartial > szFile && szPartial[-1] != TEXT('\\'))
            szPartial--;

        ASSERT(szPartial != szFile);

        hFile = CreateFile(szFile,
            GENERIC_READ,
            FILE_SHARE_READ,
            NULL,
            OPEN_EXISTING,
            FILE_FLAG_BACKUP_SEMANTICS, // so that we can open dir (as well)
            NULL);

        if (INVALID_HANDLE_VALUE == hFile)
        {
            hr = HRESULT_FROM_WIN32(GetLastError());
        }
        LEAVE_IF_FAILED("CreateFile (%s) failed", szFile);

        BY_HANDLE_FILE_INFORMATION fi;
        BOOL bRet = GetFileInformationByHandle(hFile, &fi);

        if (!bRet)
        {
            hr = HRESULT_FROM_WIN32(GetLastError());
        }
        LEAVE_IF_FAILED("GetFileInformation (%s) failed", szFile);

        if (FILE_ATTRIBUTE_DIRECTORY == fi.dwFileAttributes)
        {
            hr = AnnounceTransfer(szPartial, TRUE); // true for dir
            LEAVE_IF_FAILED("AnnounceTransfer (%s) failed", szPartial);

            hr = TeleportDirectory(szFile); // telep files in dir
            LEAVE_IF_FAILED("TeleportDirectory (%s) failed", szPartial);

            hr = AnnounceEndTransfer(TRUE);
            LEAVE_IF_FAILED("AnnounceEndTransfer (%s) failed", szPartial);
        }
        else
        {
            hr = AnnounceTransfer(szPartial, FALSE); // false for file
            LEAVE_IF_FAILED("AnnounceTransfer (%s) failed", szPartial);

            //
            // Compute file size
            //

            ULONG64 FileSize;
            FileSize = fi.nFileSizeHigh;
            FileSize <<= 32;
            FileSize |= fi.nFileSizeLow;

            pPacket = NewPacket(PacketTypeFileData, DATA_PACKET_SIZE); // throwing!

            //
            // File size is not changing since we only share reads
            //

            while (FileSize)
            {
                ULONG BytesRead = 0;

                if (FileSize < pPacket->PacketSize)
                {
                    pPacket->PacketSize = (USHORT) FileSize;
                }
                bRet = ReadFile(hFile, (PBYTE) (pPacket+1), pPacket->PacketSize, &BytesRead, NULL);

                if (!bRet)
                {
                    ASSERT(!BytesRead);
                    hr = HRESULT_FROM_WIN32(GetLastError());
                }
                LEAVE_IF_FAILED("ReadFile (%s) failed, %d outstanding", szPartial, FileSize);

                //
                // Send data
                //

                hr = SendPacket(pPacket);
                LEAVE_IF_FAILED("SendPacket (%s) failed, %d outstanding", szPartial, FileSize);

                FileSize -= BytesRead;
            }
                    
            hr = AnnounceEndTransfer(FALSE);
            LEAVE_IF_FAILED("AnnounceEndTransfer (%s) failed", szPartial);
        }
    }
    catch (std::bad_alloc&)
    {
        hr = E_OUTOFMEMORY;
    }
    catch (std::exception&)
    {
        hr = E_UNEXPECTED;
    }
    
_Function_Exit:

    //
    // Cleanup
    //

    if (INVALID_HANDLE_VALUE != hFile)
    {
        CloseHandle(hFile);
    }

    if (pPacket)
    {
        delete [] pPacket;
    }

    return hr;
}
コード例 #4
0
ファイル: msp430g_pwc.c プロジェクト: simonwood/MSP430G
int main(void)
{ 
  // don;t want to fire on power up !
  P2SEL = 0;
  P2SEL2 = 0;
  P3OUT = 0;
  P2OUT = 0;
  P3DIR = 0xff;
  
  //WDTCTL = WDTPW + WDTHOLD;
    WDTCTL = WDT_ARST_250;
   
   // sET UP aclk
   BCSCTL3 |= LFXT1S_2;
   
   // Set all pins to output to stop floating
   P1DIR = 0xC0;
   P2DIR = 0xFF;
   P3DIR = 0xFF;

   // device running at 16MHz 
   BCSCTL1= CALBC1_16MHZ;
   DCOCTL = CALDCO_16MHZ;    
   
   Green();

   bRGBValues[0] = 97;
   bRGBValues[1] = 97;
   bRGBValues[2] = 97;
   bRGBValues[3] = 97;
   bRGBValues[4] = 97;
   bRGBValues[5] = 97;
   
   LoadConfig();
   
   
   DoSWPWM(); 
   
   initXBus();
   
   _EINT();
  
   int i = 0;
  while (1)
  {
    if (NewPacket())
    {
      bLastMessage = 0;
      ParsePacket();
      bRGBValues[0] = RCScale(Channel((RGB1_RED)));
      bRGBValues[1] = RCScale(Channel((RGB1_GREEN)));
      bRGBValues[2] = RCScale(Channel((RGB1_BLUE)));
      bRGBValues[3] = RCScale(Channel((RGB2_RED)));
      bRGBValues[4] = RCScale(Channel((RGB2_GREEN)));
      bRGBValues[5] = RCScale(Channel((RGB2_BLUE)));
      
      BlackoutCheck();
     
      // check for pyro fire
      P2OUT &= ~BIT5;
      P2OUT &= ~BIT4;
      if (Channel(PYRO1_FIRE) == 0xDE)
      {
        P2OUT |= BIT5;
      }
      if (Channel(PYRO2_FIRE) == 0xDE)
      {
        P2OUT |= BIT4;
      }

      if (i)
      {
        Red();
        i = 0;
      }
      else
      {
        Green();
        i = 1;
      }
    }  
    
    
    if (bLastMessage > 5000)
    {
      bRGBValues[0] = 0xff;
      bRGBValues[1] = 0;
      bRGBValues[2] = 0xff;
      bRGBValues[3] = 0xff;
      bRGBValues[4] = 0;
      bRGBValues[5] = 0xff;
      bLastMessage = 0;
      Red();
    }
    
      WDTCTL = WDT_ARST_250;
  }
}