{"id":37916,"date":"2019-10-31T22:20:31","date_gmt":"2019-10-31T19:20:31","guid":{"rendered":"https:\/\/prohoster.info\/blog\/sip-telefon-na-stm32f7-discovery\/"},"modified":"2019-10-31T22:20:31","modified_gmt":"2019-10-31T19:20:31","slug":"sip-telefon-na-stm32f7-discovery","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery","title":{"rendered":"SIP telefon na STM32F7-Discovery","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Pozdrav svima.<\/p>\n<p>Nedavno smo <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/259721\">pisali<\/a><\/noindex> o tome kako smo uspjeli pokrenuti SIP telefon na STM32F4-Discovery s 1 MB ROM-a i 192 KB RAM-a na osnovi <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\">Embox<\/a><\/noindex>. Treba re\u0107i da je ta verzija bila minimalna i povezivala je dva telefona izravno bez poslu\u017eitelja, a prijenos glasa je bio samo u jednom smjeru. Zato smo odlu\u010dili pokrenuti funkcionalniji telefon s pozivom kroz poslu\u017eitelj, prijenosom glasa u oba smjera, ali uz \u0161to manju potro\u0161nju memorije.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"W6wuEIZJf8o\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/W6wuEIZJf8o\/hqdefault.jpg\" alt=\"Pogledajte video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nZa telefon je odlu\u010deno da se izabere aplikacija <i>simple_pjsua<\/i> iz biblioteke PJSIP. To je minimalna aplikacija koja mo\u017ee registrirati se na poslu\u017eitelju, primati i odgovarati na pozive. U nastavku \u0107u odmah navesti opis kako to pokrenuti na STM32F7-Discovery.<\/p>\n<h3>Kako pokrenuti<\/h3>\n<p><\/p>\n<ol>\n<li> Konfiguriramo Embox\n<pre><code class=\"bash\">make confload-platform\/pjsip\/stm32f7cube<\/code><\/pre>\n<\/li>\n<li>U datoteci conf\/mods.config postavljamo potrebni SIP ra\u010dun.\n<pre><code class=\"bash\">\ninclude platform.pjsip.cmd.simple_pjsua_imported(\n    sip_domain=\"server\",\n    sip_user=\"username\",\n    sip_passwd=\"password\")\n<\/code><\/pre>\n<p>\ngdje <i>Poslu\u017eitelj<\/i> \u2014 to je SIP poslu\u017eitelj (na primjer, sip.linphone.org), <i>korisni\u010dko_ime<\/i> i <i>lozinka<\/i> \u2014 korisni\u010dko ime i lozinka za ra\u010dun.\n<\/li>\n<li>Sakupljamo Embox naredbom <i>make<\/i>. O firmware-u plo\u010de imamo na <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\/wiki\/Running-Embox-on-STM32xxDiscovery\">wiki<\/a><\/noindex> i u <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/349034\/\">\u010dlanku<\/a><\/noindex>.\n<\/li>\n<li>Pokre\u0107emo u konzoli Embox naredbu \u201csimple_pjsua_imported\u201d\n<pre><code class=\"bash\">\n00:00:12.870    pjsua_acc.c  ....SIP outbound status for acc 0 is not active\n00:00:12.884    pjsua_acc.c  ....sip:alexk2222@sip.linphone.org: registration success, status=200 (Registration success\n00:00:12.911    pjsua_acc.c  ....Keep-alive timer started for acc 0, destination:91.121.209.194:5060, interval:15s\n<\/code><\/pre>\n<p>\n<\/li>\n<li>Na kraju, treba povezati zvu\u010dnike ili slu\u0161alice u audio izlaz i govoriti u dva mala MEMS mikrofona blizu ekrana. Zovemo s Linux-a koriste\u0107i aplikaciju simple_pjsua, pjsua. Ili se mo\u017ee koristiti bilo koja druga, poput linphone.\n<\/li>\n<\/ol>\n<p>\nSve to je opisano na na\u0161em <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\/wiki\/AUDIO-on-STM32\">wiki<\/a><\/noindex>.<\/p>\n<h3>Kako smo do\u0161li do toga<\/h3>\n<p>\nDakle, prvotno se postavilo pitanje odabira hardverske platforme. Kako je bilo o\u010dito da STM32F4-Discovery ne\u0107e biti dovoljno zbog memorije, izabrali smo STM32F7-Discovery. Ima 1 MB flash memorije i 256 KB RAM-a (+ 64 MB brze specijalne memorije koju \u0107emo tako\u0111er koristiti). To nije mnogo za pozive kroz poslu\u017eitelj, ali odlu\u010dili smo poku\u0161ati.<\/p>\n<p>Uslovno smo zadatak podijelili na nekoliko faza:<\/p>\n<ul>\n<li>Pokretanje PJSIP-a na QEMU. To je bilo zgodno za debagiranje, plus smo ve\u0107 imali podr\u0161ku za AC97 kodek. <\/li>\n<li>Snima glas i reproducira na QEMU i na STM32. <\/li>\n<li> Portiranje aplikacije <i>simple_pjsua<\/i> iz PJSIP paketa. Omogu\u0107uje registraciju na SIP poslu\u017eitelju i pozivanje. <\/li>\n<li>Postaviti vlastiti poslu\u017eitelj na bazi Asteriska i testirati na njemu, a zatim poku\u0161ati vanjske, kao \u0161to je sip.linphone.org <\/li>\n<\/ul>\n<p>\nZvuk u Emboxu radi putem Portaudio, koji se koristi i u PISIP-u. Na QEMU su se pojavili prvi problemi \u2014 WAV datoteke su se dobro reproducirale na 44100 Hz, dok ne\u0161to nije bilo u redu na 8000. Ispostavilo se da je problem u postavkama frekvencije \u2014 prema zadanim postavkama bio je 44100, a to nismo mogli programatski promijeniti. <\/p>\n<p>Ovdje je mo\u017eda potrebno malo pojasniti kako uop\u0107e dolazi do reprodukcije zvuka. Zvukovnoj kartici mo\u017ee se postaviti pokaziva\u010d na dio memorije iz kojeg se treba reproducirati ili snimati na unaprijed postavljenoj frekvenciji. Nakon \u0161to se bafer zavr\u0161i, generira se prekid, a izvr\u0161avanje se nastavlja s sljede\u0107im baferom. Stvar je u tome da se ti baferi moraju pravovremeno puniti dok se reproducira prethodni. S ovim problemom \u0107emo se jo\u0161 susresti dalje na STM32F7. <\/p>\n<p>Nakon toga, iznajmili smo server i postavili Asterisk na njega. Budu\u0107i da je bilo potrebno puno raditi na debuggiranju, a nije se \u017eeljelo previ\u0161e govoriti u mikrofon, trebalo je izraditi automatsku reprodukciju i snimanje. Za to smo modificirali simple_pjsua da bi mogli koristiti datoteke umjesto audio ure\u0111aja. U PJSIP-u se to radi prili\u010dno lako, jer imaju koncept porta koji mo\u017ee biti i ure\u0111aj i datoteka. A ti portovi se mogu fleksibilno povezivati s drugim portovima. Pogledajte kod u na\u0161em pjsipu. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/pjsip\">repozitoriju<\/a><\/noindex>Na serveru Asterisk stvorio sam dva ra\u010duna \u2014 za Linux i za Embox. Nakon toga na Emboxu izvr\u0161ava se naredba <i>simple_pjsua_imported<\/i>, Embox se registrira na serveru, a potom s Linuxa zovemo Embox. Tijekom spajanja provjeravamo na serveru Asterisk da li je sve povezano, i nakon izvjesnog vremena trebali bismo \u010duti zvuk iz Linuksa u Emboxu, a u Linuxu \u010duvamo onaj datoteku koja se reproducira iz Emboxa.<\/p>\n<p>Nakon \u0161to je to proradilo na QEMU-u, pre\u0161li smo na portiranje na STM32F7-Discovery. Prvi problem \u2014 nismo stizali u 1 MB ROM bez uklju\u010dene optimizacije kompajlera \"-Os\" po veli\u010dini slike. Stoga smo uklju\u010dili \"-Os\". Nadalje, patch-om smo isklju\u010dili podr\u0161ku za C++, jer je ona potrebna samo za pjsua, a mi koristimo simple_pjsua. <\/p>\n<p>Nakon \u0161to smo stisnuli <i>simple_pjsua<\/i>, odlu\u010dili smo da sada imamo \u0161anse da to pokrenemo. No prvo smo morali razjasniti snimanje i reprodukciju glasa. Pitanje \u2014 gdje snimati? Odabrali smo vanjsku memoriju \u2014 SDRAM (128 MB). Mo\u017eete to isprobati sami:<\/p>\n<p>Stvara stereo WAV s frekvencijom od 16000 Hz i trajanjem od 10 sekundi:<\/p>\n<pre><code class=\"bash\">\nrecord -r 16000 -c 2 -d 10000 -m C0000000\n<\/code><\/pre>\n<p>\nSviramo:<\/p>\n<pre><code class=\"bash\">\nplay -m C0000000\n<\/code><\/pre>\n<p>\nOvdje su nastala dva problema. Prvi je bio s kodekom \u2014 koristi se WM8994, i u njemu postoji pojam kao slot, a slotova ima 4. Tako, prema zadanim postavkama, ako to ne prilagodite, pri reprodukciji zvuka, reprodukcija se odvija u svih \u010detiri slota. Stoga, na frekvenciji od 16000 Hz dobivali smo 8000 Hz, a za 8000 Hz reprodukcija jednostavno nije radila. Kada smo odabrali samo slotove 0 i 2, sve je po\u010delo raditi kako treba. Drugi problem bio je audio su\u010delje u STM32Cube, u kojem se audio izlaz radi putem SAI (Serial Audio Interface) sinkrono s audio ulazom (nisam se previ\u0161e bavio detaljima, ali ispada da dijele zajedni\u010dki sat i prilikom inicijalizacije audio izlaza, audio ulaz se na neki na\u010din povezuje s njim). To zna\u010di da ih ne mo\u017eete pokrenuti odvojeno, pa smo u\u010dinili sljede\u0107e \u2014 audio ulaz i audio izlaz uvijek rade (uklju\u010duju\u0107i generiranje prekida). No kada se u sustavu ni\u0161ta ne reproducira, jednostavno pru\u017eamo prazni buferski izlaz, a kada zapo\u010dne reprodukcija, po\u0161teno po\u010dinjemo puniti taj buffer.<\/p>\n<p>Nakon toga suo\u010dili smo se s problemom da je zvuk prilikom snimanja glasa bio vrlo tih. To se doga\u0111a zbog toga \u0161to MEMS mikrofoni na STM32F7-Discovery nekako lo\u0161e rade na frekvencijama ispod 16000 Hz. Zbog toga smo odabrali 16000 Hz, \u010dak i ako dolazi 8000 Hz. Za to je, dodu\u0161e, bilo potrebno dodati softversku pretvorbu jedne frekvencije u drugu.<\/p>\n<p>Nakon toga morali smo pove\u0107ati veli\u010dinu hrpe koja se nalazi u RAM-u. Prema na\u0161im prora\u010dunima, pjsip je zahtijevao oko 190 KB, a nama je ostalo samo oko 100 KB. Ovdje smo morali uklju\u010diti malo vanjske memorije \u2014 SDRAM (oko 128 KB).<\/p>\n<p>Nakon svih ovih ispravki vidio sam prve pakete izme\u0111u Linuxa i Emboxa, i \u010duo zvuk! Ali zvuk je bio grozan, ni\u0161ta nije bilo poput onog na QEMU-u, ni\u0161ta se nije moglo razabrati. Tada smo se zapitali \u0161to bi moglo biti u pitanju. Debagiranje je pokazalo da Embox jednostavno ne uspijeva popuniti\/isprazniti audio buffere. Dok pjsip obra\u0111uje jedan frame, ve\u0107 su se dogodila 2 prekida o zavr\u0161etku obrade buffera, \u0161to je previ\u0161e. Prva misao za ubrzavanje bila je optimizacija kompajlera, ali ona je ve\u0107 bila uklju\u010dena u PJSIP. Drugo \u2014 hardverska plava to\u010dka, o kojoj smo pri\u010dali u <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/embox\/blog\/418295\">\u010dlanku<\/a><\/noindex>. No, kao \u0161to pokazuje praksa, FPU nije donio zna\u010dajan porast brzine. Sljede\u0107i korak bio je postavljanje prioriteta tokova. U Embox-u postoje razli\u010dite strategije planiranja, i uklju\u010dio sam onu koja podr\u017eava prioritete, daju\u0107i audio tokovima najvi\u0161i prioritet. To tako\u0111er nije pomoglo.<\/p>\n<p>Sljede\u0107a ideja bila je da radimo s vanjskom memorijom i bilo bi dobro premjestiti strukture u nju, do kojih se izuzetno \u010desto pristupa. Proveo sam preliminarnu analizu kada i za \u0161to <i>simple_pjsua<\/i> se dodjeljuje memorija. Ispostavilo se da od 190 Kb, prvih 90 Kb se dodjeljuje za unutarnje potrebe PJSIP-a i njihovo kori\u0161tenje nije ba\u0161 u\u010destalo. Zatim, tijekom dolaznog poziva, poziva se funkcija pjsua_call_answer, u kojoj se tada dodjeljuju baferi za rad s dolaznim i izlaznim okvirima. To je bilo jo\u0161 oko 100 Kb. I tada smo postupili ovako. Do trenutka poziva, podatke smje\u0161tamo u vanjsku memoriju. \u010cim poziv zapo\u010dne \u2014 odmah zamjenjujemo hrpu s drugom \u2014 u RAM-u. Tako su svi \u201evru\u0107i\u201c podaci preneseni u br\u017eu i predvidljiviju memoriju.<\/p>\n<p>Na kraju, sve ovo zajedno omogu\u0107ilo je pokretanje <i>simple_pjsua<\/i> i pozivanje putem vlastitog servera. A zatim i putem drugih servera poput sip.linphone.org.<\/p>\n<h3>Zaklju\u010dci<\/h3>\n<p>\nNa kraju je uspjelo pokrenuti <i>simple_pjsua<\/i> s prijenosom glasa u oba smjera preko servera. Problem s dodatno potro\u0161enih 128 Kb SDRAM-a mo\u017ee se rije\u0161iti kori\u0161tenjem malo mo\u0107nijeg Cortex-M7 (na primjer, STM32F769NI s 512 Kb RAM-a), ali jo\u0161 uvijek se nadamo da \u0107emo stati i u 256 Kb \ud83d\ude42 Bit \u0107emo sretni ako se netko zainteresira, a jo\u0161 bolje \u2014 isproba. Svi izvori, kao i obi\u010dno, dostupni su na na\u0161em <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/embox\/embox\">repozitoriju<\/a><\/noindex>.<br \/>\n<br \/>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/embox\/blog\/431134\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u043d\u0430\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c SIP \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043d\u0430 STM32F4-Discovery c 1 \u041c\u0431 ROM \u0438 192 \u041a\u0431 RAM) \u043d\u0430 \u0431\u0430\u0437\u0435 Embox. \u0422\u0443\u0442 \u043d\u0430\u0434\u043e \u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u0447\u0442\u043e \u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u0431\u044b\u043b\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u043b\u0430 \u0434\u0432\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0431\u0435\u0437 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u0441 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0435\u0439 \u0433\u043e\u043b\u043e\u0441\u0430 \u043b\u0438\u0448\u044c \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u043e\u0440\u043e\u043d\u0443. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0440\u0435\u0448\u0438\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37916","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u043d\u0430\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c SIP \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043d\u0430 STM32F4-Discovery c 1 \u041c\u0431.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"hr_HR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47SIP \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043d\u0430 STM32F7-Discovery | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u043d\u0430\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c SIP \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043d\u0430 STM32F4-Discovery c 1 \u041c\u0431.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:20:31+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:20:31+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47SIP telefon na STM32F7-Discovery | ProHoster","description":"Pozdrav svima. Prije nekog vremena pisali smo o tome kako smo uspjeli pokrenuti SIP telefon na STM32F4-Discovery s 1 Mb.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47SIP \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043d\u0430 STM32F7-Discovery | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u043e \u0442\u043e\u043c \u043a\u0430\u043a \u043d\u0430\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c SIP \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u043d\u0430 STM32F4-Discovery c 1 \u041c\u0431.","og:url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/sip-telefon-na-stm32f7-discovery","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:20:31+00:00","article:modified_time":"2019-10-31T19:20:31+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37916","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 19:45:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:18:22","updated":"2026-01-23 19:45:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/37916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=37916"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/37916\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=37916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=37916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=37916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}