[2061] | 1 | function varargout = wl_ver(varargin) |
---|
[2037] | 2 | |
---|
[1915] | 3 | MAJOR = 7; |
---|
[4819] | 4 | MINOR = 7; |
---|
[5626] | 5 | REVISION = 1; |
---|
[2077] | 6 | XTRA = ''; |
---|
[2074] | 7 | RELEASE = 1; |
---|
[1915] | 8 | |
---|
[4818] | 9 | if (RELEASE == 0) |
---|
[2061] | 10 | fprintf('*********************************************************************\n'); |
---|
| 11 | fprintf('You are running a version of WARPLab that may not be compatible\n'); |
---|
| 12 | fprintf('with released WARPLab bitstreams. Users should run wl_setup.m from\n'); |
---|
| 13 | fprintf('the zip file provided in the release download.\n'); |
---|
| 14 | fprintf('*********************************************************************\n\n'); |
---|
| 15 | end |
---|
| 16 | |
---|
[4818] | 17 | outputs = {MAJOR, MINOR, REVISION, XTRA}; |
---|
[2061] | 18 | |
---|
| 19 | % Process the inputs: |
---|
| 20 | % 0 => Print standard WARPLab output |
---|
| 21 | % 1 => Takes a argument string: 'x.y.z'; |
---|
| 22 | % Issues a warning if current framework is newer. |
---|
| 23 | % Issues an error if current framework is older. |
---|
| 24 | % Take wl_node objects as argument |
---|
| 25 | % Issues an error if MAJOR and MINOR do not match |
---|
| 26 | % |
---|
| 27 | if nargin == 0 |
---|
| 28 | % Print standard WARPLab output |
---|
| 29 | if(nargout == 0) |
---|
[4818] | 30 | % WARPLab version |
---|
| 31 | fprintf('WARPLab v%d.%d.%d %s\n', MAJOR, MINOR, REVISION, XTRA); |
---|
| 32 | |
---|
| 33 | % MEX version |
---|
| 34 | try |
---|
| 35 | mex_version = wl_mex_udp_transport('version'); |
---|
| 36 | fprintf('WARPLab MEX UDP Transport v%s\n', mex_version); |
---|
| 37 | catch ME |
---|
| 38 | end |
---|
| 39 | |
---|
| 40 | fprintf('\nFramework Location:\n') |
---|
| 41 | [wl_path, ig, ig] = fileparts(which('wl_ver')); |
---|
| 42 | I = strfind(wl_path,sprintf('%sutil', filesep)); |
---|
[2061] | 43 | wl_path = wl_path(1:I); |
---|
[4818] | 44 | fprintf('%s\n',wl_path); |
---|
[2061] | 45 | else |
---|
| 46 | varargout(1:nargout) = outputs(1:nargout); |
---|
| 47 | end |
---|
| 48 | |
---|
| 49 | elseif nargin == 1 |
---|
| 50 | switch( class(varargin{1}) ) |
---|
| 51 | case 'wl_node' |
---|
| 52 | nodes = varargin{1}; |
---|
| 53 | numNodes = length(nodes); |
---|
| 54 | |
---|
| 55 | for n = numNodes:-1:1 |
---|
| 56 | currNode = nodes(n); |
---|
| 57 | |
---|
| 58 | % Error if MAJOR and MINOR versions do not match |
---|
| 59 | if ( ~((currNode.wlVer_major == MAJOR) && (currNode.wlVer_minor == MINOR)) ) |
---|
[2865] | 60 | error('Node %d with Serial # %d has version "%d.%d.%d" which does not match WARPLab v%d.%d.%d', currNode.ID, currNode.serialNumber, currNode.wlVer_major, currNode.wlVer_minor, currNode.wlVer_revision, MAJOR, MINOR, REVISION); |
---|
[2061] | 61 | end |
---|
| 62 | |
---|
| 63 | % Print a warning if MAJOR, MINOR, and REVISION do not match |
---|
| 64 | if ( ~((currNode.wlVer_major == MAJOR) && (currNode.wlVer_minor == MINOR) && (currNode.wlVer_revision == REVISION) ) ) |
---|
[2865] | 65 | warning('Node %d with Serial # %d has version "%d.%d.%d" which does not match WARPLab v%d.%d.%d', currNode.ID, currNode.serialNumber, currNode.wlVer_major, currNode.wlVer_minor, currNode.wlVer_revision, MAJOR, MINOR, REVISION); |
---|
[2061] | 66 | end |
---|
| 67 | end |
---|
| 68 | |
---|
| 69 | case 'char' |
---|
[4818] | 70 | version = varargin{1}; |
---|
[2061] | 71 | |
---|
[4818] | 72 | if (~(strcmp(version,sprintf('%d.%d.%d', MAJOR, MINOR, REVISION)))) |
---|
[2061] | 73 | |
---|
| 74 | [VER, count] = sscanf(version, '%d.%d.%d'); |
---|
| 75 | |
---|
[4818] | 76 | if (~(count == 3)) |
---|
[2865] | 77 | error('Unknown argument. Argument provided is: "%s", need "x.y.z" where x, y, and z are integers specifying the WARPLab version.', version); |
---|
[2061] | 78 | end |
---|
| 79 | |
---|
[4818] | 80 | if (VER(1) == MAJOR) |
---|
| 81 | if (VER(2) == MINOR) |
---|
| 82 | if (VER(3) == REVISION) |
---|
[2061] | 83 | % Versions are equal do nothing |
---|
| 84 | else |
---|
| 85 | % Versions are not equal; Since MAJOR and MINOR versions match, only print a warning |
---|
[4818] | 86 | if (lt(VER(3),REVISION)) |
---|
[2865] | 87 | warning('Specified version "%s" is older than WARPLab v%d.%d.%d', version, MAJOR, MINOR, REVISION); |
---|
[2061] | 88 | else |
---|
[2865] | 89 | warning('Specified version "%s" is newer than WARPLab v%d.%d.%d', version, MAJOR, MINOR, REVISION); |
---|
[2061] | 90 | end |
---|
| 91 | end |
---|
| 92 | else |
---|
| 93 | % Versions are not equal |
---|
[4818] | 94 | if (lt(VER(2),MINOR)) |
---|
[2865] | 95 | warning('Specified version "%s" is older than WARPLab v%d.%d.%d', version, MAJOR, MINOR, REVISION); |
---|
[2061] | 96 | else |
---|
[2865] | 97 | error('Specified version "%s" is newer than WARPLab v%d.%d.%d', version, MAJOR, MINOR, REVISION); |
---|
[2061] | 98 | end |
---|
| 99 | end |
---|
| 100 | else |
---|
| 101 | % Versions are not equal |
---|
[4818] | 102 | if (lt(VER(1),MAJOR)) |
---|
[2865] | 103 | warning('Specified version "%s" is older than WARPLab v%d.%d.%d', version, MAJOR, MINOR, REVISION); |
---|
[2061] | 104 | else |
---|
[2865] | 105 | error('Specified version "%s" is newer than WARPLab v%d.%d.%d', version, MAJOR, MINOR, REVISION); |
---|
[2061] | 106 | end |
---|
| 107 | end |
---|
| 108 | end |
---|
| 109 | |
---|
| 110 | otherwise |
---|
[2865] | 111 | error('Unknown argument. Argument is of type "%s", need "wl_node" or "char"', class(varargin{1})); |
---|
[2061] | 112 | end |
---|
[1915] | 113 | else |
---|
[2865] | 114 | error('Too many arguments provided'); |
---|
[1915] | 115 | end |
---|
| 116 | end |
---|