Difference between revisions of "OpenIGTLink/Library"
From NAMIC Wiki
Line 55: | Line 55: | ||
header.version = IGTL_HEADER_VERSION; | header.version = IGTL_HEADER_VERSION; | ||
header.timestamp = 0; | header.timestamp = 0; | ||
− | header.body_size = | + | header.body_size = IGTL_TRANSFORM_SIZE; |
− | header.crc = crc64((unsigned char*) | + | header.crc = crc64((unsigned char*)transform, IGTL_TRANSFORM_SIZE, crc); |
strncpy(header.name, "TRANSFORM", 12); /* Device Type: should be "TRANSFORM" */ | strncpy(header.name, "TRANSFORM", 12); /* Device Type: should be "TRANSFORM" */ | ||
Line 62: | Line 62: | ||
igtl_header_convert_byte_order(h); /* convert endian if necessary */ | igtl_header_convert_byte_order(h); /* convert endian if necessary */ | ||
+ | |||
+ | Then send package (in case of BSD code) | ||
+ | send(sock, (void*) &header, IGTL_HEADER_SIZE, 0); | ||
+ | send(sock, (void*) transform, IGTL_TRANSFORM_SIZE, 0); |
Revision as of 22:18, 23 June 2008
Home < OpenIGTLink < LibrarySource code
An Open Source implementation of the OpenIGTLink protocol is available at
http://www.na-mic.org/svn/NAMICSandBox/trunk/OpenIGTLink/
License
This code is distributed under the new BSD License.
Design
Building instructions
Tutorial
C-code implementation (w/o socket)
The library contains c codes in the Source/igtlutil directory to generate Open IGT Link message byte stream. The followings are core parts of source codes to create Open IGT Link message.
Include declarations for transformation data:
#include "igtl_util.h" #include "igtl_header.h" #include "igtl_transform.h"
Transform package creation:
/********** pack data body **********/ igtl_float32 transform[12]; transform[0] = tx; transform[1] = ty; transform[2] = tz; transform[3] = sx; transform[4] = sy; transform[5] = sz; transform[6] = nx; transform[7] = ny; transform[8] = nz; transform[9] = px; transform[10] = py; transform[11] = pz; igtl_transform_convert_byte_order(transform); /* convert endian if necessary */ /********** general header **********/ igtl_header header; igtl_uint64 crc = crc64(0, 0, 0LL); /* initial crc */ header.version = IGTL_HEADER_VERSION; header.timestamp = 0; header.body_size = IGTL_TRANSFORM_SIZE; header.crc = crc64((unsigned char*)transform, IGTL_TRANSFORM_SIZE, crc); strncpy(header.name, "TRANSFORM", 12); /* Device Type: should be "TRANSFORM" */ strncpy(header.device_name, "Tracker", 20); /* Device name */ igtl_header_convert_byte_order(h); /* convert endian if necessary */
Then send package (in case of BSD code)
send(sock, (void*) &header, IGTL_HEADER_SIZE, 0); send(sock, (void*) transform, IGTL_TRANSFORM_SIZE, 0);