@@ -13,10 +13,14 @@ var SERVICE_UUID = 'ae5946d4-e587-4ba8-b6a5-a97cca6affd3';
13
13
var AdvertisementData =
14
14
require ( 'eddystone-beacon/lib/util/advertisement-data' ) ;
15
15
var Eir = require ( 'eddystone-beacon/lib/util/eir' ) ;
16
+ var Gatt = require ( 'bleno/lib/hci-socket/gatt' ) ;
16
17
17
18
var FAT_BEACON_FRAME_TYPE = 0x0e ;
18
19
var MAX_URL_LENGTH = 18 ;
19
20
var ADVERTISING_HEADER_UUID = 'feaa' ;
21
+ var ATT_OP_MTU_RESP = 0x03 ; // Refer to bleno/lib/hci-socket/gatt for doc
22
+ var MIN_MTU = 23 ;
23
+ var MAX_MTU = 505 ;
20
24
21
25
/**
22
26
* this patch ensures that the correct Fatbeacon eir flag (0x06) is added
@@ -52,14 +56,41 @@ AdvertisementData.makeUrlBuffer = function(name) {
52
56
return AdvertisementData . makeEirData ( serviceData ) ;
53
57
}
54
58
59
+ /**
60
+ * This allows us to change the negotiate the MTU size from 0 - 505. We have
61
+ * set REQUESTING_MTU to 505 for maximum transfer rate.
62
+ */
63
+ Gatt . prototype . handleMtuRequest = function ( request ) {
64
+ var mtu = request . readUInt16LE ( 1 ) ;
65
+
66
+ if ( mtu < MIN_MTU ) {
67
+ mtu = MIN_MTU ;
68
+ } else if ( mtu > MAX_MTU ) {
69
+ mtu = MAX_MTU ;
70
+ }
71
+
72
+ this . _mtu = mtu ;
73
+
74
+ this . emit ( 'mtuChange' , this . _mtu ) ;
75
+
76
+ var response = Buffer . alloc ( 3 ) ;
77
+
78
+ response . writeUInt8 ( ATT_OP_MTU_RESP , 0 ) ;
79
+ response . writeUInt16LE ( mtu , 1 ) ;
80
+
81
+ return response ;
82
+ } ;
83
+
55
84
/*********************************************************/
56
85
57
86
var characteristic = new webpageCharacteristic ( ) ;
58
87
59
88
fs . readFile ( "./html/fatBeaconDefault.html" , function ( err , data ) {
60
- if ( err ) throw err ;
89
+ if ( err ) {
90
+ throw err ;
91
+ }
92
+
61
93
characteristic . onWriteRequest ( data , 0 , null , null ) ;
62
- console . log ( service ) ;
63
94
} ) ;
64
95
65
96
var service = new bleno . PrimaryService ( {
@@ -71,7 +102,7 @@ var service = new bleno.PrimaryService({
71
102
72
103
bleno . once ( 'advertisingStart' , function ( err ) {
73
104
74
- if ( err ) {
105
+ if ( err ) {
75
106
throw err ;
76
107
}
77
108
0 commit comments