public int WriteRawData(ushort cid, uint length, byte[] pkg) { if (0 != cid && _state == 1) { if (_isRecording) { // TODO: need to have higher resolution than milliseconds...perhaps have a list of byte[]'s TimeSpan timeSpan = DateTime.Now.Subtract(_recordingStart); //while (timeSpan.Ticks == 0 || _macroBytes.ContainsKey(timeSpan)) //{ // timeSpan = timeSpan.Add(new TimeSpan(0, 0, 0, 0, 1)); //} try { Program.Debug.WriteLine(pkg[4].ToString()); _macroBytes.Add(new KeyValuePair <TimeSpan, byte[]>(timeSpan, (byte[])pkg.Clone())); } catch (Exception e) { Program.Debug.WriteLine(e.Message); Program.Debug.WriteLine(e.StackTrace); Program.Debug.WriteLine(timeSpan.ToString()); foreach (KeyValuePair <TimeSpan, byte[]> key in _macroBytes) { Program.Debug.WriteLine(key.Key.ToString()); } } } return(L2CAPAPI.L2CAPWrite(cid, length, pkg)); } return(-1); }
private void ListenOnCtrl() { Program.Debug.WriteLine("ListenOnCtrl started"); ushort ctrlCid = _cidCtrl; for (; ;) { byte[] ucBuffer = new byte[1024]; uint cSize = 0; Program.Debug.WriteLine("Try Read CTRL"); int iErr = L2CAPAPI.L2CAPRead(ctrlCid, (uint)ucBuffer.Length, ref cSize, ucBuffer); Program.Debug.WriteLine(String.Format("Read CTRL : {0} [cSize={1}, ucBuffer[0] = {2}]", iErr, cSize, (cSize > 0) ? ucBuffer[0] : -1)); if (iErr != 0) { Disconnect(); break; } if (cSize > 0 && 0 != (ucBuffer[0] & 0x70)) { byte[] szBuffer = new byte[1]; szBuffer[0] = 0; iErr = L2CAPAPI.L2CAPWrite(ctrlCid, 1, szBuffer); Program.Debug.WriteLine("Write CTRL: Responding to 0x70: " + iErr); _state = 1; } else if (cSize > 0 && 0 != (ucBuffer[0] & 0x90)) { byte[] szBuffer = new byte[1]; szBuffer[0] = 0; iErr = L2CAPAPI.L2CAPWrite(ctrlCid, 1, szBuffer); Program.Debug.WriteLine("Write CTRL: Responding to 0x90: " + iErr); _state = 1; } else { byte[] szBuffer = new byte[1]; szBuffer[0] = 0; iErr = L2CAPAPI.L2CAPWrite(ctrlCid, 1, szBuffer); Program.Debug.WriteLine("Write CTRL: No Response"); } } }