📄 main.cpp
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#include <pwd.h>#include <signal.h>#include <unistd.h>#include "xlog.h"#include "btrmtdevmgr.h"#include "bthandsfree.h"#include "btsocket.h"#include "scosocket.h"#include "inifile.h"#include "global.h"#include "btcamera.h"extern bool g_bTestUdp;static BTSVCHDL g_spp_svc_hdl = BTSDK_INVALID_HANDLE;BTUINT8 g_serverCom = 0xFF;std::string g_strPeerJjtId;bool StartSppService(){ g_spp_svc_hdl = Btsdk_RegisterSPPService(0); printf("You have registered a service\n"); g_serverCom = Btsdk_GetServerPort(g_spp_svc_hdl); printf("serverCom = %d\n", g_serverCom); if (BTSDK_INVALID_HANDLE == g_spp_svc_hdl) { printf("Registered spp service failed\n"); return false; } else { printf("Register Spp service successful\n"); return true; }}void StopSppService(){ Btsdk_UnregisterSPPService(g_spp_svc_hdl); g_serverCom = 0xFF;}// 蓝牙手柄HandsFree g_hfDev;BtSocket g_btSock;ScoSocket g_scoSock;int g_nCamDataPos = 0;void CallbackSPPDataInd(BTUINT16 com, BTUINT8 *data, BTUINT32 len){ if (com == g_hfDev.m_nComSpp) { printf("com = %d, len = %lu\n", com, len); g_hfDev.OnSPPDataInd(com, data, len); } else if (com == g_nComCamera) { static char buf[50 * 1024] = { 0 }; int& pos = g_nCamDataPos; // printf("pos = %d, len = %lu\n", pos, len); int cur_len = len + pos; memcpy(buf + pos, data, len); pos += len; while (cur_len >= IPC_CMD_HEADER_SIZE) { char* k = (char*)&((mbox::IPC_CMD_HEADER*)buf)->len; int data_len; data_len = *k << 8; data_len |= *(k + 1); data_len += IPC_CMD_HEADER_SIZE; // printf("cur_len = %d, data_len = %d\n", cur_len, data_len); if (cur_len < data_len) break; IpcPacket in(buf, data_len); ProcessCamData(in); // printf("ProcessCamData\n"); cur_len -= data_len; pos -= data_len; memmove(buf, buf + len, cur_len); } } else if (com == g_serverCom) { printf("---------REG: %d %lu %s\n", com, len, data); }}/*// This sample demonstrates how to obtain the collection of paired devices.void AppGetConnectedDevices(){ BtSdkRemoteDevicePropertyStru dev_prop = {0}; BTSDKHANDLE hEnumDev = BTSDK_INVALID_HANDLE; BTDEVHDL hDevFound = BTSDK_INVALID_HANDLE; printf("AppGetConnectedDevices\n"); hEnumDev = Btsdk_StartEnumRemoteDevice(BTSDK_ERD_FLAG_CONNECTED, 0); // BTSDK_ERD_FLAG_NOLIMIT if (hEnumDev != BTSDK_INVALID_HANDLE) { while ((hDevFound = Btsdk_EnumRemoteDevice(hEnumDev, &dev_prop)) != BTSDK_INVALID_HANDLE) { printf("%s ", (char*)dev_prop.name); for (int i = BTSDK_BDADDR_LEN - 1; i >= 0; i--) printf("%02x:", dev_prop.bd_addr[i]); printf("\n"); } Btsdk_EndEnumRemoteDevice(hEnumDev); } printf("AppGetConnectedDevices exit\n");}*/int main(int argc, char *argv[]){ char exe[128]; sprintf(exe, "%s.log", "bybt"); OpenLogFile(exe); g_btSock.Create(4001); g_scoSock.Create(4800); g_scoSock.SetDestPort(4801); printf("songyong0\n"); InitBtSdk(); printf("AppGetConnectedDevices exit\n"); RegisterSPPCallback((BTUINT8*)CallbackSPPDataInd); RmtDevMgr::Init(); g_hfDev.Init(); char mbox_name[128] = "mbox"; FILE* fp = fopen("/jjeto/jjetouuid", "r"); if (fp) { char line[40] = { 0 }; const size_t len = fread(line, 1, sizeof(line) - 1, fp); if (len > 0) { line[len - 1] = '\0'; sprintf(mbox_name, "mbox - %s\n", line); printf("mbox_name: %s", mbox_name); } } Btsdk_SetLocalName((BTUINT8*)mbox_name, strlen(mbox_name)); IniFile ini; ini.Open("minibox.conf"); g_strPeerJjtId = ini.Read("BYIM", "jjtid", ""); std::string addr = ini.Read("bt", "addr", ""); printf("handsfree addr: %s\n", addr.c_str()); ParseBtAddr(addr.c_str(), g_hfDev.m_DevAddr); std::string str; str = ini.Read("bt", "connect_to_handsfree", "1"); bool bHandsfree = atoi(str.c_str()); addr = ini.Read("camera", "dest_addr", "127.0.0.1"); strcpy(g_camDestAddr, addr.c_str()); if (addr != "127.0.0.1") { printf("test udp cam data: %s\n", addr.c_str()); g_bCamSend = true; g_bTestUdp = true; } str = ini.Read("camera", "connect_to_camera", "0"); bool bCamera = atoi(str.c_str()); if (!bHandsfree) g_hfDev.m_bAGConnected = true; for (int i = 0; i < 10; i++) { // AppGetConnectedDevices(); if (!g_hfDev.m_bAGConnected) { if (g_hfDev.ConnectAudioServer()) { printf("g_hfDev.ConnectAudioServer() ok %d", i); break; } } else break; } // char data[] = { 0x88, 0x7e, 0x00, 0x0e, 0x91, 0x68, 0x04, 0x01, 0x01, 0x12, 0x21, 0x35, 0x55, 0xbc }; // printf("sizeof(data) = %u\n", sizeof(data)); // while (1) // { // sleep(5); // g_hfDev.SendSppData(data, sizeof(data)); // printf("\n"); // } printf("songyong1\n"); while (1) { if (!g_hfDev.m_bAGConnected) g_hfDev.ConnectAudioServer(); if (bCamera && !g_bCameraConnected) ConnectToCamera(1); // 网络摄像头服务器 ConnectToWebCamServer(); sleep(15); } CloseLogFile(); RmtDevMgr::Destroy(); DestroyBtSdk(); return 0 ;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -