微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > mt2503MTK默认的AT CMD Name到内部数字id是怎样匹配的

mt2503MTK默认的AT CMD Name到内部数字id是怎样匹配的

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]
怎样计算AT指令定义中EXTEND_CMD("cpas", ?, ?, ...)中的HASH值? 请以cpas指令为例,详细说明下计算方法。

[SOLUTION]
这一块并不是HASH算法,仅仅是一个匹配。
方法是:
1 将字符'a', 'b', ... ,'z''0', '1', '2', . .. , '9' 分别对应到数字1,2,3,...,10,11,12,13,...,36 我们记此关系为f(c) = n.其中c是字符,n是对应的数字。
2 将对应at cmd的名称看作一个char[n], 则其计算出来的值value的算法是:
value = 0; value1 = 0; value2 = 0;
if( n<=5) {
for(i=0, i<n, i++)
{ value1 += f(char) * pow(38,i); }
}else
{
for(i=0, i<5, i++)
{ value1 += f(char) * pow(38,i); }
for(i=5, i<n, i++)
{ value1 += f(char) * pow(38,i-5); }
}
value = value1+value2;


举例1:cpas分别对应到3,16,1,19,则value = 3* 38^3+16*38^2 +1*38+19 =187777.
举例2:for AT+ABCDEFGH
hash_value1 = hash(A)*38^4 + hash(B)*38^3 + hash(C)*38^2 + hash(D)*38^1 +hash(E)*38^0 *
= ((((hash(A)+0)*38 + hash(B))*38 + hash(C))*38 + hash(D))*38 + hash(E)
hash_value2 = hash(F)*38^2 + hash(G)*38^1 + hash(H)*38^0 * = ((hash(F) +0)*38 + hash(G))*38 + hash(H)
hash_value = hash_value1 + hash_value2

看下!

管理员每日总结,感觉好丰富啊

多谢分享

thanks for your help...thanks for your help

这样好不好

You are welcome

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top