Example #1
0
			return Q.Promise(function(resolve, reject) {
				try {
					log.verbose(TAG, 'parse');
					log.info(TAG, 'parsing %j', val);

					self.base.parse(val);

					var bh = new self.base.bitsHelper(val, 96);

					if (bh.bits.slice(0, 8) !== header)
						throw new Error(val + ' is not a valid GSRN.');

					self.parts.Header = bh.bits.slice(0, 8);
					self.parts.Filter = parseInt(bh.bits.slice(8, 11), 2);
					self.parts.Partition = parseInt(bh.bits.slice(11, 14), 2);

					var companyPrefixEnd = 14 + partition.bits.company[self.parts.Partition];

					var company = parseInt(bh.bits.slice(14, companyPrefixEnd), 2).toString();
					company = Array(partition.digits.company[self.parts.Partition] - company.length + 1).join('0') + company;

					self.parts.CompanyPrefix = company;

					var reference = parseInt(bh.bits.slice(companyPrefixEnd, companyPrefixEnd + partition.bits.reference[self.parts.Partition]), 2).toString();
					reference = Array(partition.digits.reference[self.parts.Partition] - reference.length + 1).join('0') + reference;

					self.parts.ServiceReference = reference;

					resolve(self);
				} catch (e) {
					log.error(TAG, e);

					reject(e);
				}
			});
Example #2
0
			return Q.Promise(function(resolve, reject) {
				try {
					log.verbose(TAG, 'canParse');

					var bh = new self.base.bitsHelper(val, 96);

					resolve(bh.bits.slice(0, 8) === header);
				} catch (e) {
					log.error(TAG, e);

					reject(e);
				}
			});
Example #3
0
			return Q.Promise(function(resolve, reject) {
				try {
					log.verbose(TAG, 'getUri');

					self.base.getUri(val);

					self.parse(val)
						.then(function(parsed) {
							resolve('urn:epc:tag:grai:' + parsed.parts.CompanyPrefix + '.' + parsed.parts.AssetType + '.' + parsed.parts.SerialNumber);
						});
				} catch (e) {
					log.error(TAG, e);

					reject(e);
				}
			});
Example #4
0
			return Q.Promise(function(resolve, reject) {
				try {
					log.verbose(TAG, 'getUri');

					self.base.getUri(val);

					self.parse(val)
						.then(function(parsed) {
							resolve('urn:epc:tag:gid:' + parsed.parts.ManagerNumber + '.' + parsed.parts.ObjectClass + '.' + parsed.parts.SerialNumber);
						});
				} catch (e) {
					log.error(TAG, e);

					reject(e);
				}
			});
Example #5
0
			return Q.Promise(function(resolve, reject) {
				try {
					log.verbose(TAG, 'getUri');

					self.base.getUri(val);

					self.parse(val)
						.then(function(parsed) {
							resolve('urn:epc:tag:gsrn:' + parsed.parts.CompanyPrefix + '.' + parsed.parts.ServiceReference);
						});
				} catch (e) {
					log.error(TAG, e);

					reject(e);
				}
			});
Example #6
0
			return Q.Promise(function(resolve, reject) {
				try {
					log.verbose(TAG, 'parse');
					log.info(TAG, 'parsing %j', val);

					// initialize base
					self.base.parse(val);

					// initalize the bit helper
					var bh = new self.base.bitsHelper(val, 96);

					// make sure the incoming value is really SGTIN by checking the header
					if (bh.bits.slice(0, 8) !== header)
						throw new Error(val + ' is not a valid SGTIN.');

					// ok, looks good.  parse the stuff we'll need to figure out the rest
					self.parts.Header = bh.bits.slice(0, 8);
					self.parts.Filter = parseInt(bh.bits.slice(8, 11), 2);
					self.parts.Partition = parseInt(bh.bits.slice(11, 14), 2);

					// find the end of the company portion by calculating the number of bits 
					// and adding it to the starting offset
					var companyPrefixEnd = 14 + partition.bits.company[self.parts.Partition];

					// get the company value from the bits, convert to a string
					var company = parseInt(bh.bits.slice(14, companyPrefixEnd), 2).toString();

					// pad the string with leading zeros to make-up the length according to the calculate length
					company = Array(partition.digits.company[self.parts.Partition] - company.length + 1).join('0') + company;

					self.parts.CompanyPrefix = company;

					var item = parseInt(bh.bits.slice(companyPrefixEnd, companyPrefixEnd + partition.bits.reference[self.parts.Partition]), 2).toString();
					item = Array(partition.digits.reference[self.parts.Partition] - item.length + 1).join('0') + item;

					self.parts.ItemReference = item;
					self.parts.SerialNumber = parseInt(bh.bits.slice(58), 2);

					resolve(self);
				} catch (e) {
					log.error(TAG, e);

					reject(e);
				}
			});
Example #7
0
			return Q.Promise(function(resolve, reject) {
				try {
					log.verbose(TAG, 'parse');
					log.info(TAG, 'parsing %j', val);

					self.base.parse(val);

					var bh = new self.base.bitsHelper(val, 96);

					if (bh.bits.slice(0, 8) !== header)
						throw new Error(val + ' is not a valid GID.');

					self.parts.Header = bh.bits.slice(0, 8);
					self.parts.ManagerNumber = parseInt(bh.bits.slice(8, 36), 2);
					self.parts.ObjectClass = parseInt(bh.bits.slice(36, 60), 2);
					self.parts.SerialNumber = parseInt(bh.bits.slice(60), 2);

					resolve(self);
				} catch (e) {
					log.error(TAG, e);

					reject(e);
				}
			});
Example #8
0
		value: function() {
			log.verbose(TAG, 'getName');

			return 'GRAI';
		}
Example #9
0
		value: function() {
			log.verbose(TAG, 'getName');

			return 'SGTIN';
		}