void StdCompilerINIWrite::PrepareForValue() { // Put name (value-type), if not already done so if (fPutName) PutName(false); // No data allowed inside of sections assert(!fInSection); // No values allowed on top-level - must be contained in at least one section assert(iDepth > 1); }
bool StdCompilerINIWrite::Separator(Sep eSep) { if (fInSection) { // Re-put section name PutName(true); } else { PrepareForValue(); Buf.AppendChar(SeparatorToChar(eSep)); } return true; }
bool StdCompilerINIWrite::Name(const char *szName) { // Sub-Namesections exist, so it's a section. Write name if not already done so. if (fPutName) PutName(true); // Push struct Naming *pnNaming = new Naming; pnNaming->Name.Copy(szName); pnNaming->Parent = pNaming; pNaming = pnNaming; iDepth++; // Done fPutName = true; fInSection = false; return true; }
void CHCEmulator::ReadRemoteNameCompleteEvent(TUint8 aError, const TBTDevAddr& aAddr, const TDesC8& aName) { ClearPacket(); iConsole.Printf(_L("Sending C.C.E (opcode ReadRemoteName, error 0x%02x)...\n"), aError); PutBytes(KHCIUARTEventHeader); PutBytes(KHCIRemoteNameRequestCompleteEventCode); PutBytes(KHCIRemoteNameReqCompleteEventPacketLength); PutBytes(aError); PutAddress(aAddr); PutName(aName); WritePacket(); }
void CHCEmulator::BuildAndWriteCommandPacket(TPacketType aType, TUint16 aOpcode, TUint8 aError) /** For 'easy' packets **/ { iPacket.Zero(); TUint8 numpackets = 1; // <--- adjustable switch (aType) { case ECommandStatusEvent: { PutBytes(KHCIUARTEventHeader); PutBytes(KHCICommandStatusEventCode); PutBytes(KHCICommandStatusEventLength); PutBytes(aError); PutBytes(numpackets); PutBytes(aOpcode,2); break; } case ECommandCompleteEvent: { switch (aOpcode) { case KReadBufferSizeOpcode: { PutBytes(KHCIUARTEventHeader); PutBytes(KHCICommandCompleteEventCode); PutBytes(KHCIReadBufferSizeCommandCompleteEventLength); PutBytes(numpackets); PutBytes(aOpcode,2); PutBytes(aError); PutBytes(KEmulatedHCSizeACLBuffers,2); PutBytes(KEmulatedHCSizeSCOBuffers,1); PutBytes(KEmulatedHCNumberACLBuffers,2); PutBytes(KEmulatedHCNumberSCOBuffers,2); break; } case KReadBdaddrOpcode: { PutBytes(KHCIUARTEventHeader); PutBytes(KHCICommandCompleteEventCode); PutBytes(KHCIReadBdaddrCommandCompleteEventLength); PutBytes(numpackets); PutBytes(aOpcode,2); PutBytes(aError); PutAddress(KEmulatedHCAddress); break; } case KReadLocalNameOpcode: { PutBytes(KHCIUARTEventHeader); PutBytes(KHCICommandCompleteEventCode); PutBytes(KHCIReadLocalNameCommandCompleteEventLength); PutBytes(numpackets); PutBytes(aOpcode,2); PutBytes(aError); PutName(iLocalName); break; } case KResetOpcode: case KSetHostControllerToHostFlowOpcode: case KWritePageTimeoutOpcode: case KHostBufferSizeOpcode: case KWriteScanEnableOpcode: case KWriteConnectionAcceptTimeoutOpcode: case KChangeLocalNameOpcode: case KInquiryCancelOpcode: case KWriteVoiceSettingOpcode: case KWriteCurrentIACLAPOpcode: case KSetEventMaskOpcode: case KNopOpcode: { PutBytes(KHCIUARTEventHeader); PutBytes(KHCICommandCompleteEventCode); PutBytes(KHCIDefaultCommandCompleteEventLength); PutBytes(numpackets); PutBytes(aOpcode,2); PutBytes(aError); } break; case KReadLocalSupportedFeaturesOpcode: { PutBytes(KHCIUARTEventHeader); PutBytes(KHCICommandCompleteEventCode); PutBytes(KHCIReadLocalSupportedFeaturesLength); PutBytes(numpackets); PutBytes(aOpcode,2); PutBytes(aError); PutBytes(KEmulatedLocalSupportedFeatures1,4); PutBytes(KEmulatedLocalSupportedFeatures2,4); } break; case KReadLocalVersionInfoOpcode: { PutBytes(KHCIUARTEventHeader); PutBytes(KHCICommandCompleteEventCode); PutBytes(KHCIReadLocalVersionInformationLength); PutBytes(numpackets); PutBytes(aOpcode,2); PutBytes(aError); PutBytes(KEmulatedLocalVersion1,4); PutBytes(KEmulatedLocalVersion2,4); } break; case KReadClassOfDeviceOpcode: { PutBytes(KHCIUARTEventHeader); PutBytes(KHCICommandCompleteEventCode); PutBytes(KHCIReadCoDLength); PutBytes(numpackets); PutBytes(aOpcode,2); PutBytes(aError); PutBytes(KEmulatedCoD,3); } break; } break; } } WritePacket(); }
int CConnectMR::Connect() { long ret; int nPort = SERVER_PORT; char szBuffer[BUFFER_SIZE]; int nAddrLen; int nRet; SOCKET s; SOCKADDR_IN sa; WSAData wsaData; WORD wVersion = MAKEWORD(2,2); nRet = WSAStartup(wVersion, &wsaData); if (SOCKET_ERROR == nRet) { TRACEMSG("Socket init error\n"); ret = STATE_CONNECT_SOCKET; PutState(&ret); return ret; } s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (INVALID_SOCKET == s) { TRACEMSG("Socket was created failse:%d\n", WSAGetLastError()); ret = STATE_CONNECT_SOCKET; PutState(&ret); WSACleanup(); return ret; } int timeout=6000; //收发超时6秒 if(setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(timeout))) { TRACEMSG("socket setsockopt() failse:%d\n", WSAGetLastError()); ret = STATE_CONNECT_SOCKET; PutState(&ret); closesocket(s); WSACleanup(); return ret; } nAddrLen = sizeof(SOCKADDR_IN); memset(&sa, 0, nAddrLen); sa.sin_family = AF_INET; sa.sin_port = htons(nPort); //sa.sin_addr.s_addr = inet_addr("127.0.0.1"); sa.sin_addr.s_addr = inet_addr(_ip); nRet = connect(s, (LPSOCKADDR)&sa, nAddrLen); if (SOCKET_ERROR == nRet) { TRACEMSG("socket connect() failse:%d\n", WSAGetLastError()); ret = STATE_CONNECT_CONNECTSVR; PutState(&ret); closesocket(s); WSACleanup(); return ret; } memset(szBuffer, 0, BUFFER_SIZE); szBuffer[0] = '1'; szBuffer[1] = _type + '0'; //身份 strcpy(&szBuffer[2], _name); nRet = send(s, szBuffer, 2+strlen(_name), 0); if (SOCKET_ERROR == nRet) { TRACEMSG("Socket send() failse:%d\n", WSAGetLastError()); ret = STATE_CONNECT_SEND; PutState(&ret); closesocket(s); WSACleanup(); return ret; } _connecting = true; while (_connecting) { //_connecting = false; memset(szBuffer, 0, BUFFER_SIZE); nRet = recv(s, szBuffer, BUFFER_SIZE, 0); if (nRet == -1 && WSAGetLastError() == WSAETIMEDOUT) { if (_connecting) { // 超时 ret = STATE_CONNECT_TIMEOUT; } else { ret = STATE_CONNECT_CLOSE; closesocket(s); WSACleanup(); return ret; } } else if (nRet <= 0) //断开连接 { printf("Sokcet:%d, was disconnected.\n", s); ret = STATE_CONNECT_RECV; break; } else { printf("Socket:%d, %d, send data:%s\n", s, nRet, szBuffer); // 处理数据 if (nRet > 0) { char flag = *(char*)szBuffer; TRACE("Server ECHO back:%c\n", flag); if (flag == '0') { if (_type == IDENTITY_EXPERT || _type == IDENTITY_LISTENER) { // 等待作业员来连接 ret = STATE_CONNECT_WAITFOR; PutState(&ret); continue; } else { // 木有找到接线员,等等再说 //MessageBox(NULL, _T("木有找到接线员,请稍候再连接!"), _T("Frss"), MB_OK); ret = STATE_CONNECT_NOLISTENER; break; } } else if (flag == '1') { if (nRet > 4) { char* tarIp = inet_ntoa(*(in_addr*)(szBuffer+1)); TRACE("Server ECHO back: ip: %s\n", tarIp); if (nRet > 5) { char name[256]; strncpy(name, szBuffer+5, nRet-5); name[nRet-5] = '\0'; PutName(CA2T(name)); } if (_type == IDENTITY_EXPERT || _type == IDENTITY_LISTENER) { //if (MessageBox(NULL, _T("来自用户的通话将被接入!\n是否允许?"), _T("Frss"), MB_YESNO) == IDYES) { int ret1 = InitATMR(tarIp); if (ret1 != 0) { TRACE("udp error: %d\n", ret1); ret = STATE_CONNECT_UDPERROR; } else { ret = STATE_CONNECT_OK; } break; } //else //{ // ret = STATE_CONNECT_CLOSE; // break; //} } else { int ret1 = InitATMR(tarIp); if (ret1 != 0) { TRACE("udp error: %d\n", ret1); ret = STATE_CONNECT_UDPERROR; } else { ret = STATE_CONNECT_OK; } break; } } else { ret = STATE_CONNECT_WRONGDATA; break; } } else { ret = STATE_CONNECT_WRONGDATA; break; } } else { ret = STATE_CONNECT_WRONGDATA; break; } } } PutState(&ret); closesocket(s); WSACleanup(); return ret; }