문제

WML 기능 "ProvidelocalInfo"를 사용하여 위치 정보를 GSM 핸드셋의 WIB 메뉴를 통해 보내는 짧은 메시지에 넣습니다.

SmartTrust의 Wig WML v.4 사양을 사용하고 있습니다. 관련 섹션은 "9.4 ProvidelocalInfo 요소"입니다.

예제에서와 같이 코드를 사용한 다음 SMS를 통해 변수를 전송하고 Kannel을 사용하여 SMSC에서 메시지를 검색합니다.

MyServiceCentre]가 실제 서비스 센터가되는 것을 제외하고는 다음은 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE wml PUBLIC "-//SmartTrust//DTD WIG-WML 4.0//EN"
  "http://www.smarttrust.com/DTD/WIG-WML4.0.dtd">
<wml wibletenc="UCS2">  

  <card id="s">
    <p>
      <providelocalinfo cmdqualifier="location" destvar="LOC"/>
      <setvar name="X" value="loc=" class="binary"/>
      <sendsm>
          <destaddress value="367"/>
          <userdata docudenc="hex-binary" dcs="245">
              $(X)$(LOC)
          </userdata>
          <servicecentreaddress value="[myservicecentre]"/>
      </sendsm>
    </p>
  </card>
</wml>

수신 된 메시지에서 볼 수있는 것은 "loc ="와 7 바이트 (옥트) 또는 이진 데이터입니다. 이 데이터를 해독하는 방법을 설명하는 문서를 찾으려고 노력했지만 이것을 명확하게 설명하는 것은 없습니다.

디코딩 된 7 개의 옥셋 중에서, 처음 3 옥트는 항상 동일하며, 다음 2 옥트는 세 가지 고유 값 사이에 달라지는 경향이 있으며, 마지막 2 옥트는 셀 리드 인 것으로 보입니다.

그래서 나는 마지막 두 옥맥을 당기고 16 비트 GSM CellID를 구성하도록 수신기를 코딩했습니다. 대부분의 경우 네트워크에서 알려진 Cellids와 일치합니다. 그러나 종종 가치가 일치하지 않습니다.

그래서 나는 다음에 대한 정보를 찾으려고 노력하고 있습니다.

  1. 안전한 방식으로 위치 정보를 올바르게 전송하는 방법 (인코딩, 캐스트 등)
  2. 정보를 올바르게 해독하는 방법
  3. 이진 위치 데이터를 존중하도록 Kannel을 구성하는 방법

헛된 검색에서 다음 문서를 검사했지만 관련 데이터를 찾지 못했습니다 : GSM 03.38, GSM 04.07, GSM 04.08, GSM 11.15 및 Wig WML Spec v .4.

내가 잘못하고있는 일에 대한 통찰력은 감사 할 것입니다!

도움이 되었습니까?

해결책

위치 정보를 디코딩하려면 GSM 11.14 Page 48을 살펴 봐야합니다.

1.19 위치 정보

          Byte(s)    Description                                           Length
            1         Location Information tag                               1
            2         Length (X) of bytes following                          1
           3-5        Mobile Country & Network Codes (MCC & MNC)             3
           6-7        Location Area Code (LAC)                               2
           8-9        Cell Identity Value (Cell ID)                          2

모바일 국가 코드 (MCC), 모바일 네트워크 코드 (MNC), 위치 영역 코드 (LAC) 및 셀 ID는 TS GSM 04.08 [8]에서 코딩됩니다.

개인적인 경험을 통해 여기에 언급 된 첫 번째 옥넷은 일반적으로 중단되므로 처음 3 개의 변하지 않는 바이트는 길이와 국가입니다. 다음 2는 네트워크 운영자 코드입니다.

다른 팁

이 질문에 너무 많은 물기가 아닙니다! 다른 사람들이 유용하다고 생각할 경우 내 발견을 요약하고 싶었습니다.

  1. DCS 설정이 0이 아닌 메시지를 보내야합니다.

  2. 이진 안전 방식으로 데이터를 구문 분석해야합니다. 이진 데이터 자체가 해당 값이 될 수있을 때 0x0A가 발생할 때 검색을 중지하는 REGEX 표현식이 실패합니다.

  3. Kannel의 기본 구성을 변경할 필요가 없습니다.

건배

면책 조항 : 16 비트 GSM 셀 -ID의 안전한 전송은 기본적으로 구성되지 않았기 때문에 이해하는 몇 가지 설정을 처리해야합니다. 내가 의존했던 다른 기본값이있을 수 있지만 그들이 다를 수 있다는 것을 알지 못합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top