BLE د مایکروسکوپ لاندې (ATTы GATTы…)

BLE د مایکروسکوپ لاندې (ATTы GATTы...)

BLE د مایکروسکوپ لاندې (ATTы GATTы…)

1 برخه، عمومي کتنه

د بلوتوث 4.0 لپاره د لومړي توضیحاتو له خپریدو راهیسې ډیر وخت تیر شوی. او، که څه هم د BLE موضوع خورا په زړه پورې ده، دا لاهم د پیچلتیا له امله ډیری پراختیا کونکي پریږدي. زما په تیرو مقالو کې، ما په عمده توګه د ټیټې کچې، د لینک پرت او فزیکي پرت ته وکتل. دې موږ ته اجازه راکړه چې داسې پیچلي او مغشوشونکي مفکورو ته د رسیدو مخه ونیسو لکه د خاصیت پروتوکول (ATT) او عمومي خاصیت پروفایل (GATT). په هرصورت، د تګ لپاره هیڅ ځای شتون نلري، پرته له دې چې دوی پوه شي، د مناسبو وسایلو پراختیا ناممکن ده. نن زه غواړم دا پوهه له تاسو سره شریک کړم. زما په مقاله کې به زه تکیه وکړم درسي کتاب د نورډیک ویب پاڼې څخه د پیل کونکو لپاره. نو راځئ چې پیل وکړو.

ولې هرڅه دومره ستونزمن دي؟

زما په اند، دا سمدلاسه روښانه وه چې د سمارټ فونونو له لارې د وسیلو اداره کول خورا امید لرونکې او اوږدمهاله موضوع ده. له همدې امله، دوی پریکړه وکړه چې دا سمدلاسه او اعظمي ته تنظیم کړي. نو د دې لپاره چې د مختلف ګیجټونو تولید کونکي د خپلو پروتوکولونو سره نه راځي ، کوم چې بیا به مطابقت نلري. له همدې امله مشکل. لا دمخه په لومړي مرحله کې، دوی هڅه وکړه چې د BLE پروتوکول کې هرڅه ممکنه کړي. او دا مهمه نده چې ایا دا به وروسته ګټور وي یا نه. برسېره پردې، دوی د راتلونکي لپاره د وسایطو لیست پراخولو امکانات چمتو کړل.

راځئ چې عکس ته یو نظر وګورو چیرې چې د BLE پروتوکول ډیاګرام رسم شوی. دا د څو طبقو څخه جوړه ده. ترټولو ټیټ، فزیکي پرت (PHY) د آلې د راډیو چینل لپاره مسؤل دی. د لینک پرت (LL) په لیږدول شوي پیغام کې د بایټس ټول ترتیب لري. په تیرو مقالو کې موږ په سمه توګه دا مطالعه کړې. د کوربه کنټرولر انٹرفیس (HCI) د BLE پرتونو یا چپسونو ترمینځ د تبادلې پروتوکول دی که چیرې کنټرولر او کوربه په مختلف چپس کې پلي شي. د منطقي لینک کنټرول او تطابق پروتوکول (L2CAP) د بسته بندۍ ، چوکاټ کولو ، خطا کنټرول او د بسته بندۍ لپاره مسؤل دی. د امنیت مدیر پروتوکول (SMP) د پاکټونو کوډ کولو مسولیت لري. د عمومي لاسرسي پروفایل (GAP) د وسیلو ترمینځ د معلوماتو لومړني تبادلې مسؤلیت لري ترڅو مشخص کړي چې "څوک څوک دی". پدې کې سکین کول او اعلانونه هم شامل دي. په دې مقاله کې به زه د پروتوکول په دوو پاتې برخو تمرکز وکړم - GATT او ATT. GATT د ATT یو ستر جوړښت دی، نو دوی نږدې سره تړلي دي.

BLE د مایکروسکوپ لاندې (ATTы GATTы...)

د کیسې د ساده کولو لپاره، زه غواړم یو مشابهت ته مخه کړم. ما دا یو ځای اوریدلی او غواړم ملاتړ یې وکړم. د BLE وسیلې په اړه د څو الماریو سره د کتاب المارۍ په توګه فکر وکړئ. هر شیلف جلا موضوع ده. د مثال په توګه، موږ د ساینسي افسانو، ریاضياتو، او انسیکلوپیډیا سره المارۍ لرو. په هر شیلف کې د ټاکل شوې موضوع سره کتابونه شتون لري. او ځینې کتابونه حتی د نوټونو سره د کاغذ بک مارکونه لري. برسېره پردې، موږ د ټولو کتابونو یو کوچنی کاغذ کتلاګ لرو. که تاسو په یاد ولرئ، د ښوونځي کتابتونونه د کاغذ کارتونو سره یو تنګ بکس دی. د دې مشابهت سره، کابینه زموږ د وسیلې پروفایل دی. المارۍ خدمتونه دي، کتابونه ځانګړتیاوې دي، او کتلاګ د ځانګړتیا جدول دی. په کتابونو کې کتابچه بیانونکي دي، چې زه به یې وروسته په تفصیل سره خبرې وکړم.

هر هغه څوک چې وسایل یې رامینځته کړي پوهیږي چې ډیری پروژې ورته کوډونه لري. حقیقت دا دی چې ډیری وسایل ورته فعالیت لري. د مثال په توګه، که وسایل د بیټرۍ لخوا پرمخ وړل کیږي، نو د چارج کولو او د دوی د کچې څارنه به ورته وي. ورته د سینسرونو لپاره ځي. په حقیقت کې، د پروګرام کولو لپاره د اعتراض پر بنسټ چلند "د شیانو رامینځته کولو وړتیا چمتو کوي چې ملکیتونه او چلندونه په ځان کې شامل اتحادیه کې یوځای کوي چې بیا کارول کیدی شي". زما په نظر، BLE ورته ورته چلند هڅه وکړه. پروفایلونه د بلوتوټ ځانګړي ګټو ګروپ (SIG) لخوا رامینځته شوي. د مختلف تولید کونکو وسیلې چې ورته پروفایلونه لري باید د یو بل سره پرته له ستونزې کار وکړي. پروفایلونه، په بدل کې، د خدماتو، او ځانګړتیاوو خدمتونه لري، چې د تشریح کونکو لخوا ضمیمه شوي. په عمومي توګه دا کیدای شي داسې ښکاري:

BLE د مایکروسکوپ لاندې (ATTы GATTы...)

د مثال په توګه، د زړه د اندازې څارونکي پروفایل ډیاګرام په پام کې ونیسئ (فټنس بریسلیټ). دا دوه خدمتونه او څو ځانګړتیاوې لري. له دې څخه د پروفایل درجه بندي سمدلاسه روښانه کیږي. د پوستې ځانګړتیا د کالوري ټول لګښت حساب صفر ته راګرځوي.

1. د زړه د نرخ خدمت درې ځانګړتیاوې لري (0x180D):
    الف) د لازمي زړه ضربان ځانګړتیا (0x2A37)
    b) د اختیاري بدن سینسر موقعیت ځانګړتیا (0x2A38)
    c) د زړه ضربان کنټرول نقطه شرطي ځانګړتیاوې (0x2A39)
2. د بیټرۍ د ساتنې خدمت (0x180F):
    الف) د لازمي بیټرۍ چارج کچه ځانګړتیا (0x2A19)

یوډی

د دې لپاره چې موږ په ځانګړي ډول د پروفایل عناصرو (خدمتونو، ځانګړتیاوو او توضیحاتو) ته لاسرسی ومومئ، موږ اړتیا لرو چې دا ټول په یو ډول شمیرو. د دې هدف لپاره، یو مفهوم لکه یونیورسلی یونیک ID (UUID) یا یونیورسلی یونیک پیژندونکی معرفي شوی. UUID د هرې کرښې په قوسونو کې ښودل شوی. او دلته یو ځانګړتیا شتون لري. د UUID لپاره، موږ پریکړه وکړه چې د 16 او 128 بټونو اوږدوالی کوډ وکاروو. ولې، تاسو پوښتنه کوئ؟ په BLE پروتوکول کې، هر څه د انرژۍ د ساتنې په اړه دي. له همدې امله، د 16 بټونو ابعاد خورا مناسب دی. دا امکان نلري چې په نږدې راتلونکي کې به له 65 زرو څخه ډیر جوړ شي. ځانګړي خدمتونه او ځانګړتیاوې. په اوس وخت کې، هرڅه چې دوی یې کولی شي حساب شوي وي (په یاد ولرئ چې دا له کوم ځای څخه راغلی - "هغه تاسو هم شمیرلي" :-)) شمیرل شوي عناصر پروفایلونه, خدمتونه, ب .ې и تشریح کوونکي تاسو کولی شئ لینکونه وګورئ.

په هرصورت، زه فکر کوم چې هرڅوک په انټرنیټ کې د IP پتې د 4 بائٹس سره کیسه یادوي. په لومړي سر کې موږ فکر کاوه چې دا بس دی، مګر اوس موږ نشو کولی د 6 بایټ پته ته لاړ شو. د دې لپاره چې دا تېروتنه تکرار نه شي او د DIYers لوبو لاسونو ته وړیا لاس ورکړئ، SIG سمدلاسه پریکړه وکړه چې 128-bit UUIDs معرفي کړي. دا په شخصي توګه ما ته د غیر جواز لرونکي 433 MHz بینډ یادونه کوي، کوم چې د راډیو چینل څخه هر ډول کولیبین ته ورکړل شوی و. زموږ په قضیه کې، د خدماتو او ځانګړتیاوو 128-bit پیژندونکی فارم شوی و. دا پدې مانا ده چې موږ، زموږ د خدماتو او وسیلو لپاره، نږدې هر ډول 128-bit ارزښت وکاروو. په ورته ډول، د ورته UUID سره د راتلو احتمال صفر ته رسیږي.

په حقیقت کې، لنډ 16-bit UUIDs د 128-bit ارزښت ته د دوی توسیع لري. په مشخصاتو کې، دا توسیع د بلوتوټ بیس UUID نومیږي او ارزښت لري 00000000-0000-1000-8000-00805F9B34FB. که د مثال په توګه، د 16-bit خاصیت UUID ارزښت 0x1234 ولري، نو د 128-bit مساوي UUID به ارزښت ولري 00001234-0000-1000-8000-00805F9B34FB. او حتی ورته فورمول ورکړل شوی دی:

                                128_bit_value = 16_bit_value * 2^96 + Bluetooth_Base_UUID

زه نه پوهیږم چې دا جادو نمبر له کوم ځای څخه راغلی. که کوم لوستونکي پوهیږي، اجازه راکړئ په نظرونو کې ولیکئ (د سینوپټیک مستعار کارونکي دمخه دا کار کړی دی. نظرونه وګورئ). لکه څنګه چې د 128-bit UUIDs سره راځي، په اصل کې تاسو کولی شئ یو ځانګړی وکاروئ جنراتورڅوک به دا ستاسو لپاره وکړي.

ATty GATTy...

په حقیقت کې، بیا تفریح ​​​​پیل کیږي. اجازه راکړئ تاسو ته یادونه وکړم چې ATT د پیرودونکي - سرور اړیکو پراساس دی. اوس موږ د سرور وسیله ګورو. دا معلومات لري لکه د سینسر ارزښتونه، د رڼا سویچ حالت، د موقعیت ډاټا، او نور. اوس چې ټول "زموږ په پریډ کې برخه اخیستونکي" شمیرل شوي ، موږ اړتیا لرو په یو ډول دوی د وسیلې په حافظه کې ځای په ځای کړو. د دې کولو لپاره، موږ دوی په یو جدول کې واچوو چې د ځانګړتیا جدول نومیږي. دا ښه په یاد ولرئ. دا د BLE زړه دی. دا هغه څه دي چې موږ به نور په پام کې ونیسو. اوس به موږ هرې کرښې ته یو خاصیت وایو. دا میز په سټیک کې ژور موقعیت لري او د یوې قاعدې په توګه، موږ دې ته مستقیم لاسرسی نلرو. موږ دا پیل کوو او لاسرسی ورته کوو ، مګر هغه څه چې دننه پیښیږي زموږ څخه د اوو سیلونو شاته پټ دي.

راځئ چې د ځانګړتیاوو څخه انځور ته وګورو، مګر مخکې له دې، زه غواړم په سمدستي توګه په اصطلاحاتو کې د پرله پسې ګډوډۍ پام ځانته راواړوم، د بیلګې په توګه په تشریح کونکو کې. د تشریح کونکي رول د ځانګړتیا توضیحات بشپړول دي. کله چې د دې وړتیاوې پراخولو ته اړتیا وي، نو بیا تشریح کونکي کارول کیږي. دوی هم ځانګړتیاوې دي، او یوازې د خدماتو او ځانګړتیاو په څیر، دوی د ځانګړتیا جدول کې موقعیت لري. موږ به دوی د مقالې په دویمه برخه کې په تفصیل سره وڅیړو. په هرصورت، ځینې وختونه تشریح کونکي د صفاتو په جدول کې د قطار شمیرې ته اشاره کوي. دا باید په ذهن کې وساتل شي. د ګډوډۍ څخه مخنیوي لپاره، موږ به د دې موخو لپاره د "ځانګړتیا نښه" اصطلاح وکاروو.
BLE د مایکروسکوپ لاندې (ATTы GATTы...)

نو یو خاصیت یو متفاوت ارزښت دی چې لاندې ملکیتونه ورسره تړاو لري:
1. د خاصیت لاسوند د جدول شاخص دی چې د ځانګړتیا سره مطابقت لري
2. د خاصیت ډول یو UUID دی چې خپل ډول بیانوي
3. د خاصیت ارزښت هغه معلومات دي چې د خاصیت پوائنټر لخوا ترتیب شوي
4. د خاصیت اجازې د یو خاصیت برخه ده، اجازې، چې د ځانګړتیا پروتوکول په کارولو سره لوستل یا لیکل کیدی نشي.

دا ټول څنګه درک کول؟ د خاصیت پوائنټر په نسبي ډول خبرې کوي ، زموږ په جدول کې یې شمیره ده.
دا پیرودونکي ته اجازه ورکوي چې د لوستلو یا لیکلو غوښتنو کې یو خاصیت حواله کړي. موږ کولی شو خپلې کرښې (صفات) له 0x0001 څخه تر 0xFFFF پورې شمیرو. د کتابونو سره زموږ په اتحادیه کې، دا د کاغذ په کتلاګ کې د کارت شمیره ده. په ورته ډول، لکه څنګه چې د کتابتون په کتلاګ کې، کارتونه د شمیر په زیاتیدونکي ترتیب کې تنظیم شوي. د هرې بلې کرښې شمیر باید د تیرې کرښې څخه ډیر وي. لکه څنګه چې په کتابتون کې، ځینې وختونه ځینې کارتونه له لاسه ورکوي، نو زموږ سره، ممکن د لاین شمیرې کې تشې وي. دا اجازه لري. اصلي شی دا دی چې دوی په تدریجي ډول پرمخ ځي.

د خاصیت ډول ټاکي چې د ځانګړتیا استازیتوب کوي. د C ژبې سره په ورته والی سره،
چیرته چې بولین، عددي تغیرات او تارونه شتون لري، نو دا دلته دی. د خاصیت ډول سره موږ پیژنو
موږ له څه سره معامله کوو او څنګه کولی شو د دې ځانګړتیا سره کار ته دوام ورکړو. لاندې به موږ د ځانګړتیاوو ځینې ځانګړي ډولونه وګورو. د مثال په توګه، د "خدمت اعالمیه" (0x2800)، "ځانګړتیا اعالمیه" (0x2803)، "د توضیحاتو اعلامیه" (0x2902).

د صفت ارزښت د هغه اصلي معنی ده، د توتولوژي بخښنه. که د خاصیت ډول یو تار وي، نو د ځانګړتیا ارزښت کیدی شي، د بیلګې په توګه، نعره "هیلو ورلډ !!!". که د خاصیت ډول د "خدمت اعالمیه" وي، نو بیا د هغې ارزښت پخپله خدمت دی. او ځینې وختونه دا د نورو ځانګړتیاو او د دوی ملکیتونو موندلو په اړه معلومات دي.

د خاصیت اجازه سرور ته اجازه ورکوي چې پوه شي چې لوستل یا لیکلو ته لاسرسی اجازه لري.
په یاد ولرئ چې دا اجازې یوازې د خاصیت ارزښت لپاره پلي کیږي، نه په نښه کونکي، ډول، یا د اجازې ساحې ته. هغوی. که د منسوب ثبتولو اجازه وي، نو موږ کولی شو بدل کړو، د بیلګې په توګه، کرښه "هیلو ورلډ !!!" "سهار مو پخیر" کرښې ته. مګر موږ نشو کولی د نوې کرښې لیکل منع کړو یا د ځانګړتیا ډول بدل کړو او کرښه د "خدمت اعلامیې" په توګه وټاکو. کله چې یو پیرودونکی له سرور سره اړیکه ونیسي، پیرودونکی د خپلو ځانګړتیاو غوښتنه کوي. دا پیرودونکي ته اجازه ورکوي چې پوه شي چې سرور څه شی چمتو کولی شي. که څه هم د ارزښتونو لوستل او لیکل اړین ندي.

دا څه ډول ښکاري

د GATT مفهوم دا دی چې د ځانګړتیاو په جدول کې په یو خورا مشخص او منطقي ترتیب سره یوځای شي. راځئ چې لاندې د زړه د اندازې پروفایل ته نږدې وګورو. د دې جدول تر ټولو کیڼ ستون اختیاري دی. دا په ساده ډول موږ ته تشریح کوي چې دا کرښه (صفت) څه شی دی. نور ټول کالمونه لا دمخه موږ ته پیژندل شوي دي.

BLE د مایکروسکوپ لاندې (ATTы GATTы...)

د هرې ډلې په سر کې موږ تل د خدماتو اعالمیه ځانګړتیا لرو. د دې ډول تل 0x2800 وي، او پوائنټر په دې پورې اړه لري چې څومره ځانګړتیاوې لا دمخه په جدول کې شتون لري. د دې اجازې تل یوازې د لوستلو وړ دي ، پرته له کوم تصدیق یا جواز. موږ به لږ وروسته د دې مفکورو په اړه خبرې وکړو. ارزښت یو بل UUID دی چې دا پیژني چې خدمت څه دی. په جدول کې، ارزښت 0x180D دی، کوم چې د بلوتوټ SIG لخوا د زړه د نرخ خدمت په توګه تعریف شوی.

د خدماتو اعلان وروسته، د ځانګړتیاوو اعلان راځي. دا د خدماتو اعالمیې په بڼه کې ورته دی. د دې UUID تل 0x2803 وي، او د هغې اجازې تل پرته له کوم تصدیق یا واک څخه لوستل کیږي. راځئ چې د خاصیت ارزښت ساحه وګورو، کوم چې ځینې معلومات پکې شامل دي. دا تل یو پوائنټر، یو UUID، او د ملکیتونو سیټ لري. دا درې عناصر د ځانګړتیا ارزښت وروسته اعلان بیانوي. پوائنټر په طبیعي ډول د ځانګړتیاو په جدول کې د ځانګړتیا ارزښت اعالمیه موقعیت په ګوته کوي. UUID تشریح کوي چې کوم ډول معلومات یا ارزښت موږ تمه کولی شو. د مثال په توګه، د تودوخې ارزښت، د رڼا د سویچ حالت، یا ځینې نور خپل سري ارزښت. او په نهایت کې ملکیتونه ، کوم چې تشریح کوي چې د ځانګړتیا ارزښت سره څنګه تعامل کیدی شي.

دلته یو بل خنډ زموږ په تمه دی. دا د خصوصیت اجازې او د ځانګړتیاو ملکیتونو سره تړاو لري. راځئ چې د ځانګړتیاو څخه د بټ فیلډ ملکیتونو عکس وګورو.

BLE د مایکروسکوپ لاندې (ATTы GATTы...)

لکه څنګه چې تاسو لیدلی شئ، دلته داسې ساحې هم شتون لري چې د لوستلو او لیکلو وړتیاوې چمتو کوي. تاسو شاید حیران یاست چې ولې موږ د خاصیت او ملکیت لپاره د لوستلو / لیکلو اجازه لرو
د ځانګړتیا ارزښت لپاره لوستل / لیکل؟ ایا دوی باید تل یو شان نه وي؟ حقیقت دا دی چې د ځانګړتیا ارزښت لپاره ملکیتونه په حقیقت کې یوازې د پیرودونکي لپاره سپارښتنې دي چې په GATT او غوښتنلیک پرتونو کې کارول کیږي. دا په ساده ډول د هغه څه په اړه اشارې دي چې پیرودونکی ممکن د ځانګړتیا اعلان کولو ځانګړتیا څخه تمه وکړي. راځئ چې دا په ډیر تفصیل سره وګورو. یو خاصیت کوم ډول اجازه لري؟

1. د لاسرسي اجازه:
     - لوستل
     - ریکارډ
     - لوستل او لیکل
2. د تصدیق اجازه:
     - تصدیق ته اړتیا ده
     - هیڅ تصدیق ته اړتیا نشته
3. د جواز اجازه:
     - اجازه ورکول اړین دي
     - هیڅ جواز ته اړتیا نشته

د خاصیت ریزولوشن او ځانګړتیاو ملکیتونو ترمنځ اصلي توپیر دا دی چې پخوانی په سرورونو کې پلي کیږي، او وروستی د پیرودونکو لپاره. سرور ته اجازه ورکول کیدی شي چې د ځانګړتیا ارزښت ولولي، مګر ممکن تصدیق یا واک ته اړتیا ولري. نو ځکه، کله چې پیرودونکي د ځانګړتیاوو د ملکیت غوښتنه وکړي، موږ به ترلاسه کړو چې لوستلو ته اجازه ورکړل شوې ده. مګر کله چې موږ د لوستلو هڅه کوو، موږ تېروتنه ترلاسه کوو. له همدې امله ، موږ کولی شو په خوندي ډول د ملکیتونو په اړه د اجازې لومړیتوب په اړه وغږیږو. د پیرودونکي اړخ کې، موږ نشو کولی پوهه ترلاسه کړو چې کوم اجازې ځانګړتیاوې لري.

تشریح کونکی

راځئ چې خپل میز ته راستون شو. د ځانګړتیاوو د ارزښت اعلانولو وروسته، د لاندې ځانګړتیاوو اعالمیه ممکنه ده:
1. د ځانګړتیاوو نوې اعلامیه (یو خدمت کولی شي ډیری ځانګړتیاوې ولري)
2. د نوي خدماتو اعالمیه (ممکن په جدول کې ډیری یې وي)
3. د لاسوند اعلان کول

د زړه د اندازې اندازه کولو ځانګړتیاوو په صورت کې، زموږ په جدول کې، د ځانګړتیا ارزښت اعالمیه د بیان کونکي اعلان سره یوځای کیږي. تشریح کونکی یو ځانګړتیا ده چې د ځانګړتیاو په اړه اضافي معلومات لري. د تشریح کونکي څو ډولونه شتون لري. موږ به د دې مقالې په دویمه برخه کې د دوی په اړه په تفصیل سره خبرې وکړو. د اوس لپاره، موږ به یوازې د مراجعینو ځانګړتیاو ترتیب کوونکی (CCCD) سره اړیکه ونیسو. دا د 0x2902 سره مساوي UUID لري. د دې تشریح کونکي په کارولو سره ، پیرودونکی د دې وړتیا لري چې په سرور کې نښې یا خبرتیا فعاله کړي. د دوی ترمنځ توپیر کوچنی دی، مګر لاهم شتون لري. خبرتیا د پیرودونکي څخه د رسید تایید ته اړتیا نلري. اشاره دې ته اړتیا لري، که څه هم دا د GATT په کچه واقع کیږي، د غوښتنلیک کچې ته نه رسیږي. ولې داسې، تاسو پوښتنه کوئ؟ افسوس، زه پدې نه پوهیږم. اجازه راکړئ یوازې ووایم چې نورډیک ماهرین د خبرتیاو کارولو وړاندیز کوي. سربیره پردې ، د کڅوړې بشپړتیا چیک کول (د CRC په کارولو سره) په دواړو حالتونو کې پیښیږي.

پایلې

د مقالې په پای کې زه غواړم دا ووایم. وروستی جدول یو څه ګډوډ دی. په هرصورت، ما دا غوره کړه ځکه چې دا ورکړل شوی مقالې، کوم چې زه تکیه کوم. زما د مقالې په دویمه برخه کې، زه اراده لرم چې د بلوتوث 4.0 ځانګړتیاوو ته ژوره ورسوم. نور سم ډیاګرامونه او نقاشي موږ ته هلته انتظار باسي. په دریمه برخه کې، زه غواړم هغه لاګ تجزیه کړم چې د ویرشارک برنامه په کارولو سره ترلاسه شوي د یو ګیجټ څخه او ټول هغه تیوري "ژوندی" وګورم چې موږ یې مطالعه کوو.

د شرکتونو ګروپ کارمند "قیصر سپوږمکۍ"
Pecherskikh ولادیمیر

سرچینه: www.habr.com

Add a comment