vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Написал на LUA декодилку 16ричных ucs-2 sms-ок которые возвращает uqmi.

Функция ucs2utf8 у меня получилась извращенная, потому что в свежем openwrt lua 5.1, в котором побитовых операций нет. И даже целочисленного деления нет, оно в 5.3 появилось. А тащить всякие левые модули на роутер хочется по минимуму. 9-килобайтный json.lua правда, пришлось притащить.

А ucs2utf8 получилась такая:

function ucs2utf8(c)
    code = ("0x"..c)+0
    if code < 128 then
        return string.format("%c",code)
    elseif code < 2048 then
        return string.format("%c%c",math.floor(code/64) + 192, code % 64 +128)
    else
        return string.format("%c%c%c",math.floor(code/4096) +224,
                              math.floor(code/64) % 64 + 128,
                              code % 64 +128)
    end
 end

Используется вот так:

string.gsub(hexstring,"(....)",ucs2utf8)

Надо еще конкатенацию порезанных на куски sms-ок написать, и удаление. Причем удаление мультипарт-сообщения должно быть одной операцией. По номеру первой части.

Для отладки скрипта, которой я занимаюсь на ноутбуке, я перед вызовом uqmi вставляю ssh root@wifi. Оно так правда, медленнее, но работает.

Upd Почитал ихсодники uqmi. Пожалуй декодирование ucs-2 логичнее туда добавить. Но оно сишное. это среду кросс-компиляции развоворачивать надо.

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

August 2025

S M T W T F S
     1 2
3456789
10111213141516
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 3rd, 2025 07:59 pm
Powered by Dreamwidth Studios