EC20功耗测试示例

本示例支持LINUX和OPEN-LINUX开发环境,将对讲中使用的数据通信做了抽象,意在能够尽可能的简化测试EC20模块上的功耗,以及网络延迟问题

1 功能说明

1.1 心跳维持

  • UDP心跳:默认10s
    #define TEST_UDP_TIMER 10.0 //UDP Ping Timer
    对讲终端2/3G制式时此值为3s, UDP端口有时效,无限增大此值,不同网络制式下一定会出现丢包。
    但是太小就会引起功耗上升。

  • TCP心跳:默认60s
    #define TEST_TCP_TIMER 60.0 //TCP Ping Timer
    对将默认为60秒,TCP作为保持链路使用,此值不是影响终端功耗上升的关键点。

1.2 业务流程

  • 开始讲话 「模拟终端A」
    static void start_speak(poc_context* poc_ctx);
    发送讲话请求消息,回应:
    static void on_request_mic_ack(poc_context* poc_ctx, char* msg);
    请求成功后,就开始发送语音数据:
    //start send udp data timer
    ev_timer_set(&(poc_ctx->timer_udp_data),TEST_UDP_DATA_TIMER,0);
    ev_timer_start(poc_ctx->loop,&(poc_ctx->timer_udp_data));
  • 停止讲话「模拟终端A」
    static void stop_speak(poc_context* poc_ctx);
    发送停止请求消息,回应:
    static void on_drop_mic_ack(poc_context* poc_ctx, char* msg);
    请求成功后,就会停止发送语音数据:
    ev_timer_stop(poc_ctx->loop,&(poc_ctx->timer_udp_data));

  • 发送语音「模拟终端A」
    开始发送语音数据,每200ms发送一包udp_data:
    send_udp_data(poc_ctx);

  • 有人开始讲话「模拟终端B」
    收到有人开始讲话通知:
    static void on_member_get_mic(poc_context* poc_ctx, char* msg);

  • 有人停止讲话「模拟终端B」
    收到有人停止讲话通知:
    static void on_member_drop_mic(poc_context* poc_ctx, char* msg);

  • 收到语音数据 「模拟终端B」
    收到语音数据:
    static void on_data(poc_context* poc_ctx, char* msg);

2 测试及统计

2.1 编译

终端使用cmake来管理的源码,需要安装cmake。
安装完后,配置系统根目录的路径, 修改./depends/arm-oe-linux-gnueabi.toolchain.sh:

set(OPENLINUX_TOOLCHAIN_DIR /opt/ql-oe/sysroots/x86_64-linux/usr/bin/arm-oe-linux-gnueabi)
set(OPENLINUX_ROOT_DIR /opt/ql-oe/sysroots/mdm9607)

对于EC20编译执行make-arm-oe.sh
对于LINUX编译执行make-linux.sh
无错误的话会生成poc_client应用(linux在build目录,openlinux在bb目录)

2.2 程序部署

  • 部署pocecho.py
    需要linux+python环境,并且服务器有外网IP,UDP/TCP各一个可用端口
    运行python pocecho.py start|stop|restart

  • PUSH终端应用
    连接EC20到PC,adb push poc_client /data/
    可以使用的组合:
    A(PC-LINUX) + B(EC20):A发送,B接收,统计B输出的数据
    A(EC20)+ B(EC20):统计接收端输出的数据

注:程序中用到了对时功能,需要root权限修改本地时间才会生效(PC-LINUX情况)

  • 修改服务器IP和端口
    poc_def.h中HAL_OPENLINUX表示为OPENLINUX(EC20):
//SERVER ADDRESS
#ifndef HAL_OPENLINUX
#define TEST_SERVER_IP "192.168.40.103"
#define TEST_SERVER_UDP_PORT 10071
#define TEST_SERVER_TCP_PORT 10073
#else
#define TEST_SERVER_IP "119.254.102.206"
#define TEST_SERVER_UDP_PORT 10075
#define TEST_SERVER_TCP_PORT 10078
#endif

2.3 数据统计:

条件:

  • UDP网络制式:电信/移动/联通,2G/3G/4G
  • 心跳间隔:3/5/8/10 秒等
  • POC对将消息

数据:

  • 待机情况下耗流(区分不同运营商及网络制式)

  • 收发数据情况下耗流
    待机情况,休眠情况

  • 开始/停止讲话时间

  • 收到有人开始讲话/停止讲话的通知时间(MODEM收到数据的时间)
    待机情况,休眠情况,关心的是服务端推送数据到达的延迟有多少

  • 收到第一包别人语音数据的时间(MODEM收到数据的时间)
    待机情况,休眠情况,关心的是服务端推送数据到达的延迟有多少

  • 待机进入休眠的时长

2.4 日志输出解释

poc_def.h定义了协议的标识,如下:

//PROTO
#define POC_REQUEST_MIC     "#RequestMic"   //#RequestMic:N:DUMP
#define POC_REQUEST_MIC_ACK "#RequestMicAck"

#define POC_DROP_MIC        "#DropMic"      //#DropMic:N:DUMP
#define POC_DROP_MIC_ACK    "#DropMicAck"

#define POC_MEMBER_GET_MIC  "#MemberGetMic" //#MemberGetMic:N:DUMP
#define POC_MEMBER_DROP_MIC "#MemberDropMic"

#define POC_LOST_MIC        "#LostMic"

#define POC_PING            "#Ping"         //#Ping:UDP:N:DUMP  #Ping:TCP:N:DUMP
#define POC_PONG            "#Pong"         //#Pong:UDP:N:DUMP  #Pong:TCP:N:DUMP

#define POC_DATA            "#Data"         //#Data:N:DUMP
#define POC_END             "#End"          //#End

#define POC_NTP             "#NTP"          //#NTP:t_request:t_request_recv:t_respone:t_response_recv

输出的日志:

/data # ./poc_client
[DEBUG] 2017-07-24 06:26:45.735 poc_ctx init event bindings sizeof(int):4
[DEBUG] 2017-07-24 06:26:45.742 poc_ctx initial mobile ap ...
[DEBUG] 2017-07-24 06:26:48.796 poc_ctx < retrived ip address:10.131.20.122 >
[DEBUG] 2017-07-24 06:26:49.027 poc_ctx connect to server success
[DEBUG] 2017-07-24 06:26:49.405 poc_ctx on_ntp msg:#NTP:1934022994:1500877591508:1500877591508:1934023101
[DEBUG] 2017-07-24 14:26:32.065 poc_ctx on_udp_readable buf:#Pong:UDP:0002:The quick brown fox jumps over the lazy dog. len:60
[DEBUG] 2017-07-24 14:26:43.181 poc_ctx on_udp_readable buf:#Pong:UDP:0003:The quick brown fox jumps over the lazy dog. len:60
[DEBUG] 2017-07-24 14:26:53.736 poc_ctx on_udp_readable buf:#Pong:UDP:0004:The quick brown fox jumps over the lazy dog. len:60
[DEBUG] 2017-07-24 14:27:03.621 poc_ctx on_udp_readable buf:#Pong:UDP:0005:The quick brown fox jumps over the lazy dog. len:60
[DEBUG] 2017-07-24 14:27:13.318 poc_ctx on_udp_readable buf:#Pong:UDP:0006:The quick brown fox jumps over the lazy dog. len:60
[DEBUG] 2017-07-24 14:27:23.281 poc_ctx on_data msg:#Data:0001:2017-07-24 14:27:20.332 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.283 poc_ctx on_tcp_readable msg:#MemberGetMic:0000:2017-07-24 14:27:20.107 len:43
[DEBUG] 2017-07-24 14:27:23.284 poc_ctx on_member_get_mic msg:#MemberGetMic:0000:2017-07-24 14:27:20.107
[DEBUG] 2017-07-24 14:27:23.284 poc_ctx on_data msg:#Data:0002:2017-07-24 14:27:20.533 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.284 poc_ctx on_data msg:#Data:0003:2017-07-24 14:27:20.733 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.285 poc_ctx on_data msg:#Data:0004:2017-07-24 14:27:20.934 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.285 poc_ctx on_data msg:#Data:0005:2017-07-24 14:27:21.134 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.285 poc_ctx on_data msg:#Data:0006:2017-07-24 14:27:21.334 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.285 poc_ctx on_data msg:#Data:0007:2017-07-24 14:27:21.535 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.286 poc_ctx on_data msg:#Data:0008:2017-07-24 14:27:21.735 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.287 poc_ctx on_data msg:#Data:0009:2017-07-24 14:27:21.936 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.288 poc_ctx on_data msg:#Data:0010:2017-07-24 14:27:22.136 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.292 poc_ctx on_data msg:#Data:0011:2017-07-24 14:27:22.336 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.292 poc_ctx on_data msg:#Data:0012:2017-07-24 14:27:22.537 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.292 poc_ctx on_data msg:#Data:0013:2017-07-24 14:27:22.737 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.293 poc_ctx on_data msg:#Data:0014:2017-07-24 14:27:22.938 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.382 poc_ctx on_udp_readable buf:#Pong:UDP:0007:The quick brown fox jumps over the lazy dog. len:60
[DEBUG] 2017-07-24 14:27:23.428 poc_ctx on_udp_readable buf:#Pong:UDP:0008:The quick brown fox jumps over the lazy dog. len:60
[DEBUG] 2017-07-24 14:27:23.449 poc_ctx on_data msg:#Data:0015:2017-07-24 14:27:23.138 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.651 poc_ctx on_data msg:#Data:0016:2017-07-24 14:27:23.339 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:23.951 poc_ctx on_data msg:#Data:0017:2017-07-24 14:27:23.540 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:24.051 poc_ctx on_data msg:#Data:0018:2017-07-24 14:27:23.740 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:24.252 poc_ctx on_data msg:#Data:0019:2017-07-24 14:27:23.940 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:24.491 poc_ctx on_data msg:#Data:0020:2017-07-24 14:27:24.141 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:24.652 poc_ctx on_data msg:#Data:0021:2017-07-24 14:27:24.341 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:24.946 poc_ctx on_data msg:#Data:0022:2017-07-24 14:27:24.542 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:25.053 poc_ctx on_data msg:#Data:0023:2017-07-24 14:27:24.742 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:25.253 poc_ctx on_data msg:#Data:0024:2017-07-24 14:27:24.943 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:25.455 poc_ctx on_data msg:#Data:0025:2017-07-24 14:27:25.143 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:25.651 poc_ctx on_data msg:#Data:0026:2017-07-24 14:27:25.344 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:25.855 poc_ctx on_data msg:#Data:0027:2017-07-24 14:27:25.544 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:26.086 poc_ctx on_data msg:#Data:0028:2017-07-24 14:27:25.744 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:26.257 poc_ctx on_data msg:#Data:0029:2017-07-24 14:27:25.945 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:26.455 poc_ctx on_data msg:#Data:0030:2017-07-24 14:27:26.145 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:26.655 poc_ctx on_data msg:#Data:0031:2017-07-24 14:27:26.345 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:26.857 poc_ctx on_data msg:#Data:0032:2017-07-24 14:27:26.546 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:27.058 poc_ctx on_data msg:#Data:0033:2017-07-24 14:27:26.746 The quick brown fox jumps over the lazy dog.
[DEBUG] 2017-07-24 14:27:27.112 poc_ctx on_tcp_readable msg:#MemberDropMic:0001:2017-07-24 14:27:26.803 len:44
[DEBUG] 2017-07-24 14:27:27.112 poc_ctx on_member_drop_mic msg:#MemberDropMic:0001:2017-07-24 14:27:26.803

上面日志有:
#NTP: UDP,服务端相应的#NTP
#Pong: UDP,服务端相应终端的#Ping
#MemberGetMic: TCP,服务器响应另外一个终端的#RequestMic, 推送的通知; 包含了发送端的时间戳
#MemberDropMic: TCP,服务器响应另外一个终端的#DropMic, 推送的通知; 包含了发送端的时间戳
#Data: UDP, 服务器收到另外一个终端的#Data数据,转发过来的; 包含了发送端的时间戳

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,941评论 1 13
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,169评论 11 349
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 4,967评论 0 13
  • Head First HTML与CSS 第十二章 HTML5标记 CSS——掌控页面的表现 关于HTML5 不够特...
    一个非典型IT学习者阅读 246评论 0 0