సూక్ష్మదర్శిని క్రింద 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)
    బి) ఐచ్ఛిక శరీర సెన్సార్ స్థానం లక్షణం (0x2A38)
    సి) హృదయ స్పందన నియంత్రణ పాయింట్ యొక్క షరతులతో కూడిన లక్షణాలు (0x2A39)
2. బ్యాటరీ నిర్వహణ సేవ (0x180F):
    ఎ) తప్పనిసరి బ్యాటరీ ఛార్జ్ స్థాయి లక్షణం (0x2A19)

UUID

మేము ప్రొఫైల్ ఎలిమెంట్‌లను (సేవలు, లక్షణాలు మరియు డిస్క్రిప్టర్‌లు) ప్రత్యేకంగా యాక్సెస్ చేయడానికి, మేము వాటన్నింటినీ ఏదో ఒకవిధంగా లెక్కించాలి. ఈ ప్రయోజనం కోసం, యూనివర్సల్లీ యూనిక్ ఐడి (UUID) లేదా యూనివర్సల్లీ యూనిక్ ఐడెంటిఫైయర్ వంటి కాన్సెప్ట్ పరిచయం చేయబడింది. ప్రతి పంక్తి బ్రాకెట్లలో UUID సూచించబడుతుంది. మరియు ఇక్కడ ఒక ప్రత్యేకత ఉంది. UUID కోసం, మేము 16 మరియు 128 బిట్‌ల పొడవు గల కోడ్‌ని ఉపయోగించాలని నిర్ణయించుకున్నాము. ఎందుకు అడుగుతున్నావు? BLE ప్రోటోకాల్‌లో, ప్రతిదీ శక్తి పరిరక్షణకు సంబంధించినది. అందువల్ల, 16 బిట్‌ల పరిమాణం చాలా సహేతుకమైనది. సమీప భవిష్యత్తులో 65 వేలకు మించి సృష్టించే అవకాశం లేదు. ప్రత్యేక సేవలు మరియు లక్షణాలు. ప్రస్తుతానికి, వారు ఇప్పటికే లెక్కించబడగలిగే ప్రతిదాన్ని (ఇది ఎక్కడ నుండి వచ్చిందో గుర్తుంచుకోండి - “అతను మిమ్మల్ని కూడా లెక్కించాడు” :-)) సంఖ్యా అంశాలు ప్రొఫైల్స్, సేవల, లక్షణాలు и వివరణకర్తలు మీరు లింక్‌లను చూడవచ్చు.

అయితే, ఇంటర్నెట్‌లో 4 బైట్ల IP చిరునామాలతో కథనాన్ని ప్రతి ఒక్కరూ గుర్తుంచుకుంటారని నేను భావిస్తున్నాను. మొదట ఇది సరిపోతుందని మేము భావించాము, కానీ ఇప్పుడు మేము ఇప్పటికీ 6-బైట్ చిరునామాకు మారలేము. ఈ తప్పును పునరావృతం చేయకుండా మరియు DIYers యొక్క ఉల్లాసభరితమైన చేతులకు ఉచిత నియంత్రణను అందించడానికి, SIG వెంటనే 128-బిట్ UUIDలను పరిచయం చేయాలని నిర్ణయించుకుంది. ఇది రేడియో ఛానెల్ నుండి అన్ని రకాల కులిబిన్‌లకు అందించబడిన లైసెన్స్ లేని 433 MHz బ్యాండ్‌ని నాకు వ్యక్తిగతంగా గుర్తు చేస్తుంది. మా విషయంలో, సేవలు మరియు లక్షణాల యొక్క 128-బిట్ ఐడెంటిఫైయర్ రూపొందించబడింది. అంటే మేము మా సేవలు మరియు పరికరాల కోసం దాదాపు ఏదైనా 128-బిట్ విలువను ఉపయోగించవచ్చు. అదే, అదే UUIDతో వచ్చే సంభావ్యత సున్నాకి ఉంటుంది.

వాస్తవానికి, చిన్న 16-బిట్ UUIDలు వాటి పొడిగింపును 128-బిట్ విలువకు కలిగి ఉంటాయి. స్పెసిఫికేషన్‌లో, ఈ పొడిగింపును బ్లూటూత్ బేస్ UUID అని పిలుస్తారు మరియు 00000000-0000-1000-8000-00805F9B34FB విలువను కలిగి ఉంది. ఉదాహరణకు, 16-బిట్ అట్రిబ్యూట్ UUID విలువ 0x1234 కలిగి ఉంటే, దానికి సమానమైన 128-బిట్ UUID 00001234-0000-1000-8000-00805F9B34FB విలువను కలిగి ఉంటుంది. మరియు సంబంధిత సూత్రం కూడా ఇవ్వబడింది:

                                128_bit_value = 16_bit_value * 2^96 + Bluetooth_Base_UUID

ఈ మ్యాజిక్ నంబర్ ఎక్కడి నుంచి వచ్చిందో నాకు తెలియదు. పాఠకులలో ఎవరికైనా తెలిస్తే, వారిని వ్యాఖ్యలలో వ్రాయనివ్వండి (Sinopteek అనే మారుపేరుతో ఒక వినియోగదారు ఇప్పటికే దీన్ని చేసారు. వ్యాఖ్యలను చూడండి). 128-బిట్ UUIDలతో ముందుకు రావడం కోసం, సూత్రప్రాయంగా మీరు ప్రత్యేకతను ఉపయోగించవచ్చు జనరేటర్మీ కోసం ఎవరు చేస్తారు.

ATTy GATTy...

అసలైన, అప్పుడు వినోదం ప్రారంభమవుతుంది. ATT అనేది క్లయింట్-సర్వర్ సంబంధంపై ఆధారపడి ఉందని నేను మీకు గుర్తు చేస్తాను. ఇప్పుడు మనం సర్వర్ పరికరాన్ని చూస్తున్నాము. ఇది సెన్సార్ విలువలు, లైట్ స్విచ్ స్థితి, స్థాన డేటా మొదలైన సమాచారాన్ని కలిగి ఉంటుంది. ఇప్పుడు అన్ని "మా కవాతులో పాల్గొనేవారు" లెక్కించబడ్డారు, మేము వాటిని ఏదో ఒకవిధంగా పరికరం యొక్క మెమరీలో ఉంచాలి. దీన్ని చేయడానికి, మేము వాటిని అట్రిబ్యూట్ టేబుల్ అని పిలిచే పట్టికలో ఉంచాము. ఇది బాగా గుర్తుంచుకోండి. ఇది BLE యొక్క హృదయం. ఇది మేము మరింత పరిశీలిస్తాము. ఇప్పుడు మనం ప్రతి పంక్తిని ఒక లక్షణం అని పిలుస్తాము. ఈ పట్టిక స్టాక్‌లో లోతుగా ఉంది మరియు, ఒక నియమం వలె, మాకు దీనికి ప్రత్యక్ష ప్రాప్యత లేదు. మేము దానిని ప్రారంభించాము మరియు దానిని యాక్సెస్ చేస్తాము, కానీ లోపల ఏమి జరుగుతుందో అది ఏడు ముద్రల వెనుక మనకు దాచబడుతుంది.

స్పెసిఫికేషన్ నుండి చిత్రాన్ని చూద్దాం, కానీ దీనికి ముందు, నేను పరంగా తరచుగా గందరగోళానికి గురికావడాన్ని వెంటనే దృష్టిని ఆకర్షించాలనుకుంటున్నాను, అవి డిస్క్రిప్టర్లలో. వివరణకర్త యొక్క పాత్ర లక్షణం యొక్క వివరణను పూర్తి చేయడం. దాని సామర్థ్యాలను విస్తరించడానికి అవసరమైనప్పుడు, అప్పుడు డిస్క్రిప్టర్లు ఉపయోగించబడతాయి. అవి కూడా గుణాలు, మరియు సేవలు మరియు లక్షణాల వలె, అవి లక్షణ పట్టికలో ఉన్నాయి. మేము వాటిని వ్యాసం యొక్క రెండవ భాగంలో వివరంగా పరిశీలిస్తాము. అయితే, కొన్నిసార్లు డిస్క్రిప్టర్లు అట్రిబ్యూట్ టేబుల్‌లోని అడ్డు వరుస సంఖ్యను సూచిస్తాయి. ఇది మనసులో ఉంచుకోవాలి. గందరగోళాన్ని నివారించడానికి, మేము ఈ ప్రయోజనాల కోసం "అట్రిబ్యూట్ పాయింటర్" అనే పదాన్ని ఉపయోగిస్తాము.
సూక్ష్మదర్శిని క్రింద BLE (ATTы GATTы...)

కాబట్టి లక్షణం అనేది దానితో అనుబంధించబడిన క్రింది లక్షణాలను కలిగి ఉన్న వివిక్త విలువ:
1. అట్రిబ్యూట్ హ్యాండిల్ అనేది లక్షణానికి సంబంధించిన పట్టిక సూచిక
2. అట్రిబ్యూట్ టైప్ అనేది దాని రకాన్ని వివరించే UUID
3. అట్రిబ్యూట్ విలువ అనేది అట్రిబ్యూట్ పాయింటర్ ద్వారా సూచిక చేయబడిన డేటా
4. అట్రిబ్యూట్ పర్మిషన్‌లు అట్రిబ్యూట్ ప్రోటోకాల్‌ని ఉపయోగించి చదవడం లేదా వ్రాయడం సాధ్యం కాని ఒక లక్షణం, అనుమతులు యొక్క భాగం

ఇవన్నీ ఎలా అర్థం చేసుకోవాలి? లక్షణం పాయింటర్, సాపేక్షంగా చెప్పాలంటే, మా పట్టికలో దాని సంఖ్య.
ఇది అభ్యర్థనలను చదవడానికి లేదా వ్రాయడానికి ఒక లక్షణాన్ని సూచించడానికి క్లయింట్‌ను అనుమతిస్తుంది. మేము 0x0001 నుండి 0xFFFF వరకు మా పంక్తులు (గుణాలు) సంఖ్య చేయవచ్చు. బుక్‌కేస్‌తో మా అనుబంధంలో, ఇది పేపర్ కేటలాగ్‌లోని కార్డ్ నంబర్. అదేవిధంగా, లైబ్రరీ కేటలాగ్‌లో, కార్డులు సంఖ్యను పెంచే క్రమంలో అమర్చబడి ఉంటాయి. ప్రతి తదుపరి పంక్తి సంఖ్య తప్పనిసరిగా మునుపటి కంటే ఎక్కువగా ఉండాలి. లైబ్రరీలో వలె, కొన్నిసార్లు కొన్ని కార్డ్‌లు పోతాయి, కాబట్టి మనతో పాటు, లైన్ నంబరింగ్‌లో ఖాళీలు ఉండవచ్చు. ఇది అనుమతించబడుతుంది. ప్రధాన విషయం ఏమిటంటే అవి క్రమంగా వెళ్తాయి.

లక్షణ రకం లక్షణం దేనిని సూచిస్తుందో నిర్ణయిస్తుంది. సి భాషతో సారూప్యతతో,
బూలియన్, న్యూమరిక్ వేరియబుల్స్ మరియు స్ట్రింగ్‌లు ఉన్న చోట, అది ఇక్కడ ఉంది. లక్షణం రకం ద్వారా మేము గుర్తిస్తాము
మనం దేనితో వ్యవహరిస్తున్నాము మరియు ఈ లక్షణంతో ఎలా పని చేయడం కొనసాగించవచ్చు. క్రింద మేము కొన్ని నిర్దిష్ట రకాల లక్షణాలను పరిశీలిస్తాము. ఉదాహరణకు, “సర్వీస్ డిక్లరేషన్” (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 స్పెసిఫికేషన్‌ను లోతుగా పరిశోధించాలనుకుంటున్నాను. మరిన్ని సరైన రేఖాచిత్రాలు మరియు డ్రాయింగ్‌లు అక్కడ మాకు వేచి ఉన్నాయి. మూడవ భాగంలో, నేను గాడ్జెట్‌లలో ఒకదాని నుండి వైర్‌షార్క్ ప్రోగ్రామ్‌ను ఉపయోగించి పొందిన లాగ్‌ను అన్వయించాలనుకుంటున్నాను మరియు మేము అధ్యయనం చేస్తున్న అన్ని సిద్ధాంతాలను “ప్రత్యక్షంగా” చూడాలనుకుంటున్నాను.

గ్రూప్ ఆఫ్ కంపెనీస్ ఉద్యోగి "సీజర్ ఉపగ్రహం"
పెచెర్స్కిక్ వ్లాదిమిర్

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి