[发明专利]一种节省内存的实现方法及装置有效
申请号: | 201310567299.4 | 申请日: | 2013-11-13 |
公开(公告)号: | CN104639511B | 公开(公告)日: | 2018-08-03 |
发明(设计)人: | 李晓辉;胡胜发 | 申请(专利权)人: | 安凯(广州)微电子技术有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04B5/00 |
代理公司: | 深圳中一专利商标事务所 44237 | 代理人: | 张全文 |
地址: | 510663 广东省广州市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 节省 内存 实现 方法 装置 | ||
本发明公开一种节省内存的实现方法及装置,涉及蓝牙技术领域,该方法包括:当接收到分片时,判断重组缓冲区中是否存储有与接收到的分片为同类型的分片,是则将重组缓冲区中存储的同类型的分片与接收到的分片进行组合,判断组合结果是否为一个完整的数据包,如为一个完整的数据包则将组合得到数据包发送给上层;如不为一个完整的数据包则继续接收分片,否则将接收到的分片存储到重组缓冲区中,继续接收分片。本发明的技术方案在实现过程中所有重组都在同一缓冲区中实现,节省了内存,不会增大其它协作软件内存的消耗,还能保证产品原有的性能和兼容性等质量标准。
技术领域
本发明涉及蓝牙技术领域,特别涉及一种节省内存的实现方法及装置。
背景技术
蓝牙技术已有十多年的历史,大量用于手机、无线耳机等领域。近年来由于蓝牙协议4.0的发布,其中低功耗规范将蓝牙技术推广至更为广泛的低成本应用领域,如仪表监控等。降低蓝牙协议栈的内存,不仅降低了设备的硬件成本,而且可降低设备功耗,延长设备的使用时间,对于蓝牙低功耗设备有着重大意义。现有技术中,降低蓝牙协议栈的内存的实现方式一般是在原有协议栈上进行修改,例如通过重组技术实现,即在蓝牙栈的每层,预先分配重组所需要的内存,各层重组用各自的内存,但是如果进行大量的重组就需要大量的内存,并不能真正达到优化内存的效果。现有的在原有协议栈上进行修改的实现方式虽然可以降低开发风险,但是内存优化效果并不明显,如何使内存优化效果达到最好的同时还不影响设备的性能是现有技术亟待解决的问题。
发明内容
为了解决现有技术中提高内存优化效果的时候会影响设备性能的问题,本发明提供了一种节省内存的实现方法及装置。所述技术方案如下:
本发明采用的技术方案:
一种节省内存的实现方法,包括:
当接收到分片时,判断重组缓冲区中是否存储有与所述接收到的分片为同类型的分片,是则将所述重组缓冲区中存储的同类型的分片与所述接收到的分片进行组合,如组合结果为一个完整的数据包则将组合得到数据包发送给上层。
进一步地,在上述方法中,如所述组合结果不为一个完整的数据包则等待接收分片;
如判断重组缓冲区中没有与所述接收到的分片同类型的分片,则将所述接收到的分片存储到所述重组缓冲区中,等待接收分片。
进一步地,所述判断重组缓冲区中是否存储有与所述接收到的分片为同类型的分片之前还包括:判断接收到的分片是否为一个完整的数据包,是则结束,否则继续。
进一步地,所述将所述接收到的分片存储到所述重组缓冲区中具体为:调用Lock函数将接收到的分片存储到重组缓冲区的尾部。
进一步地,所述将所述重组缓冲区中存储的同类型的分片与所述接收到的分片进行组合,具体为:调用Unlock函数将所述重组缓冲区中存储的同类型的分片取出后再与所述接收到的分片进行组合。
进一步地,所述将所述重组缓冲区中存储的同类型的分片与所述接收到的分片进行组合,具体为:
A、设置一个数组变量,将所述重组缓冲区中存储的同类型的分片作为当前分片;
B、判断当前分片的数据长度是否大于所述数组变量的长度,是则执行E,否则执行C;
C、从所述重组缓冲区中读取当前分片的数据,并将其写入到所述数组变量中,将当前分片之后的分片移动到当前分片的位置处;
D、读取所述数组变量中的数据并将其写入到所述重组缓冲区中所述接收到的分片的首部之前;
E、从所述重组缓冲区中的当前分片中读取与数组变量长度相等的数据,并将读取的数据写入到所述数组变量中,将当前分片之后的分片移动到当前分片中已读取完数据的位置处;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于安凯(广州)微电子技术有限公司,未经安凯(广州)微电子技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310567299.4/2.html,转载请声明来源钻瓜专利网。