Firenet

Check-in [9778542a31]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:QueFinder added & odetojoy show
Timelines: family | ancestors | descendants | both | NEWNET
Files: files | file ages | folders
SHA1:9778542a316633e3bdbd480ed079a6bcbf81174e
User & Date: jim 2016-01-03 11:01:10
Context
2016-01-06
14:21
Started JavaPlanner Leaf check-in: 7cb2f511ec user: jim tags: NEWNET
2016-01-03
11:01
QueFinder added & odetojoy show check-in: 9778542a31 user: jim tags: NEWNET
2014-12-20
11:00
Use PNG not GIF for images check-in: 18ac40a7b9 user: jim tags: NEWNET
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to Firenet.xcodeproj/project.pbxproj.

661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
...
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799

800
801
802
803
804
805
806
807
808
809
810
811
812
813

814
815
816
817
818
819
820
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		08FB7793FE84155DC02AAC07 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastUpgradeCheck = 0460;
			};
			buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "Firenet" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 1;
			knownRegions = (
				en,
................................................................................
				COPY_PHASE_STRIP = NO;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_MODEL_TUNING = G5;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_VERSION = "";
				INSTALL_PATH = /usr/local/bin;
				PRODUCT_NAME = Firenet;
				SDKROOT = macosx10.9;
			};
			name = Debug;
		};
		1DEB928708733DD80010E9CD /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				GCC_MODEL_TUNING = G5;
				INSTALL_PATH = /usr/local/bin;
				PRODUCT_NAME = Firenet;
				SDKROOT = macosx10.9;
			};
			name = Release;
		};
		1DEB928A08733DD80010E9CD /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ARCHS = "$(NATIVE_ARCH_ACTUAL)";
				GCC_C_LANGUAGE_STANDARD = c99;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_VERSION = com.apple.compilers.llvmgcc42;
				GCC_WARN_ABOUT_RETURN_TYPE = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;

				ONLY_ACTIVE_ARCH = YES;
				OTHER_CFLAGS = "-DBSD_VERSION";
				"OTHER_CPLUSPLUSFLAGS[sdk=macosx10.7][arch=*]" = "$(OTHER_CFLAGS)";
				SDKROOT = macosx;
			};
			name = Debug;
		};
		1DEB928B08733DD80010E9CD /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ARCHS = "$(NATIVE_ARCH_ACTUAL)";
				GCC_C_LANGUAGE_STANDARD = c99;
				GCC_WARN_ABOUT_RETURN_TYPE = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;

				ONLY_ACTIVE_ARCH = YES;
				OTHER_CFLAGS = "-DBSD_VERSION";
				SDKROOT = macosx;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */







|







 







|











|






|





>










<



>







661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
...
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810

811
812
813
814
815
816
817
818
819
820
821
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		08FB7793FE84155DC02AAC07 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastUpgradeCheck = 0720;
			};
			buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "Firenet" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 1;
			knownRegions = (
				en,
................................................................................
				COPY_PHASE_STRIP = NO;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_MODEL_TUNING = G5;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_VERSION = "";
				INSTALL_PATH = /usr/local/bin;
				PRODUCT_NAME = Firenet;
				SDKROOT = macosx;
			};
			name = Debug;
		};
		1DEB928708733DD80010E9CD /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				GCC_MODEL_TUNING = G5;
				INSTALL_PATH = /usr/local/bin;
				PRODUCT_NAME = Firenet;
				SDKROOT = macosx;
			};
			name = Release;
		};
		1DEB928A08733DD80010E9CD /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = c99;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_VERSION = com.apple.compilers.llvmgcc42;
				GCC_WARN_ABOUT_RETURN_TYPE = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				MACOSX_DEPLOYMENT_TARGET = 10.10;
				ONLY_ACTIVE_ARCH = YES;
				OTHER_CFLAGS = "-DBSD_VERSION";
				"OTHER_CPLUSPLUSFLAGS[sdk=macosx10.7][arch=*]" = "$(OTHER_CFLAGS)";
				SDKROOT = macosx;
			};
			name = Debug;
		};
		1DEB928B08733DD80010E9CD /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {

				GCC_C_LANGUAGE_STANDARD = c99;
				GCC_WARN_ABOUT_RETURN_TYPE = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				MACOSX_DEPLOYMENT_TARGET = 10.10;
				ONLY_ACTIVE_ARCH = YES;
				OTHER_CFLAGS = "-DBSD_VERSION";
				SDKROOT = macosx;
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

Added Shows/QueFinder/QueFinder/QueFinder.xcodeproj/project.pbxproj.

















































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		3810F5C11C32B04900336A4E /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 3810F5C01C32B04900336A4E /* main.c */; };
		384794111C32B16500F859F1 /* waverdr.c in Sources */ = {isa = PBXBuildFile; fileRef = 3847940F1C32B16500F859F1 /* waverdr.c */; };
		384794BB1C35378700F859F1 /* PeakFinder.c in Sources */ = {isa = PBXBuildFile; fileRef = 384794B91C35378700F859F1 /* PeakFinder.c */; };
		384794C21C35542E00F859F1 /* Hdr.c in Sources */ = {isa = PBXBuildFile; fileRef = 384794C01C35542E00F859F1 /* Hdr.c */; };
		384794C71C35675500F859F1 /* Nodes.c in Sources */ = {isa = PBXBuildFile; fileRef = 384794C51C35675500F859F1 /* Nodes.c */; };
		384794C81C35675500F859F1 /* Nodes.h in Sources */ = {isa = PBXBuildFile; fileRef = 384794C61C35675500F859F1 /* Nodes.h */; };
/* End PBXBuildFile section */

/* Begin PBXCopyFilesBuildPhase section */
		3810F5BB1C32B04900336A4E /* CopyFiles */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = /usr/share/man/man1/;
			dstSubfolderSpec = 0;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 1;
		};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
		3810F5BD1C32B04900336A4E /* QueFinder */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = QueFinder; sourceTree = BUILT_PRODUCTS_DIR; };
		3810F5C01C32B04900336A4E /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; };
		3847940F1C32B16500F859F1 /* waverdr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = waverdr.c; sourceTree = "<group>"; };
		384794101C32B16500F859F1 /* waverdr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; path = waverdr.h; sourceTree = "<group>"; };
		384794B91C35378700F859F1 /* PeakFinder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = PeakFinder.c; sourceTree = "<group>"; };
		384794BA1C35378700F859F1 /* PeakFinder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; path = PeakFinder.h; sourceTree = "<group>"; };
		384794C01C35542E00F859F1 /* Hdr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Hdr.c; sourceTree = "<group>"; };
		384794C11C35542E00F859F1 /* Hdr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; path = Hdr.h; sourceTree = "<group>"; };
		384794C51C35675500F859F1 /* Nodes.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Nodes.c; sourceTree = "<group>"; };
		384794C61C35675500F859F1 /* Nodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.objj.h; path = Nodes.h; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		3810F5BA1C32B04900336A4E /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		3810F5B41C32B04900336A4E = {
			isa = PBXGroup;
			children = (
				3810F5BF1C32B04900336A4E /* QueFinder */,
				3810F5BE1C32B04900336A4E /* Products */,
			);
			sourceTree = "<group>";
		};
		3810F5BE1C32B04900336A4E /* Products */ = {
			isa = PBXGroup;
			children = (
				3810F5BD1C32B04900336A4E /* QueFinder */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		3810F5BF1C32B04900336A4E /* QueFinder */ = {
			isa = PBXGroup;
			children = (
				3810F5C01C32B04900336A4E /* main.c */,
				384794BD1C3553FF00F859F1 /* Support */,
			);
			path = QueFinder;
			sourceTree = "<group>";
		};
		3847940E1C32B16500F859F1 /* Wave */ = {
			isa = PBXGroup;
			children = (
				3847940F1C32B16500F859F1 /* waverdr.c */,
				384794101C32B16500F859F1 /* waverdr.h */,
			);
			name = Wave;
			path = ../../Wave;
			sourceTree = "<group>";
		};
		384794BD1C3553FF00F859F1 /* Support */ = {
			isa = PBXGroup;
			children = (
				384794C41C3565B000F859F1 /* Nodes */,
				384794BF1C35541B00F859F1 /* Header */,
				384794BE1C35540B00F859F1 /* Peak */,
				3847940E1C32B16500F859F1 /* Wave */,
			);
			name = Support;
			sourceTree = "<group>";
		};
		384794BE1C35540B00F859F1 /* Peak */ = {
			isa = PBXGroup;
			children = (
				384794BA1C35378700F859F1 /* PeakFinder.h */,
				384794B91C35378700F859F1 /* PeakFinder.c */,
			);
			name = Peak;
			sourceTree = "<group>";
		};
		384794BF1C35541B00F859F1 /* Header */ = {
			isa = PBXGroup;
			children = (
				384794C01C35542E00F859F1 /* Hdr.c */,
				384794C11C35542E00F859F1 /* Hdr.h */,
			);
			name = Header;
			sourceTree = "<group>";
		};
		384794C41C3565B000F859F1 /* Nodes */ = {
			isa = PBXGroup;
			children = (
				384794C51C35675500F859F1 /* Nodes.c */,
				384794C61C35675500F859F1 /* Nodes.h */,
			);
			name = Nodes;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		3810F5BC1C32B04900336A4E /* QueFinder */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 3810F5C41C32B04900336A4E /* Build configuration list for PBXNativeTarget "QueFinder" */;
			buildPhases = (
				3810F5B91C32B04900336A4E /* Sources */,
				3810F5BA1C32B04900336A4E /* Frameworks */,
				3810F5BB1C32B04900336A4E /* CopyFiles */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = QueFinder;
			productName = QueFinder;
			productReference = 3810F5BD1C32B04900336A4E /* QueFinder */;
			productType = "com.apple.product-type.tool";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		3810F5B51C32B04900336A4E /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastUpgradeCheck = 0720;
				ORGANIZATIONNAME = "Pandora,Inc";
				TargetAttributes = {
					3810F5BC1C32B04900336A4E = {
						CreatedOnToolsVersion = 7.2;
					};
				};
			};
			buildConfigurationList = 3810F5B81C32B04900336A4E /* Build configuration list for PBXProject "QueFinder" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
			);
			mainGroup = 3810F5B41C32B04900336A4E;
			productRefGroup = 3810F5BE1C32B04900336A4E /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				3810F5BC1C32B04900336A4E /* QueFinder */,
			);
		};
/* End PBXProject section */

/* Begin PBXSourcesBuildPhase section */
		3810F5B91C32B04900336A4E /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				384794C81C35675500F859F1 /* Nodes.h in Sources */,
				384794BB1C35378700F859F1 /* PeakFinder.c in Sources */,
				3810F5C11C32B04900336A4E /* main.c in Sources */,
				384794C71C35675500F859F1 /* Nodes.c in Sources */,
				384794C21C35542E00F859F1 /* Hdr.c in Sources */,
				384794111C32B16500F859F1 /* waverdr.c in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
		3810F5C21C32B04900336A4E /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				CODE_SIGN_IDENTITY = "-";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				MACOSX_DEPLOYMENT_TARGET = 10.10;
				MTL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = macosx;
			};
			name = Debug;
		};
		3810F5C31C32B04900336A4E /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				CODE_SIGN_IDENTITY = "-";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				MACOSX_DEPLOYMENT_TARGET = 10.10;
				MTL_ENABLE_DEBUG_INFO = NO;
				SDKROOT = macosx;
			};
			name = Release;
		};
		3810F5C51C32B04900336A4E /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Debug;
		};
		3810F5C61C32B04900336A4E /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		3810F5B81C32B04900336A4E /* Build configuration list for PBXProject "QueFinder" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				3810F5C21C32B04900336A4E /* Debug */,
				3810F5C31C32B04900336A4E /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		3810F5C41C32B04900336A4E /* Build configuration list for PBXNativeTarget "QueFinder" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				3810F5C51C32B04900336A4E /* Debug */,
				3810F5C61C32B04900336A4E /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 3810F5B51C32B04900336A4E /* Project object */;
}

Added Shows/QueFinder/QueFinder/QueFinder.xcodeproj/project.xcworkspace/contents.xcworkspacedata.















>
>
>
>
>
>
>
1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:QueFinder.xcodeproj">
   </FileRef>
</Workspace>

Added Shows/QueFinder/QueFinder/QueFinder.xcodeproj/project.xcworkspace/xcuserdata/jim.xcuserdatad/UserInterfaceState.xcuserstate.

cannot compute difference between binary files

Added Shows/QueFinder/QueFinder/QueFinder.xcodeproj/xcuserdata/jim.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist.











































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
   type = "1"
   version = "2.0">
   <Breakpoints>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "No"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "../Wave/waverdr.c"
            timestampString = "473511233.890202"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "128"
            endingLineNumber = "128"
            landmarkName = "wave_frame_fread()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "No"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "QueFinder/main.c"
            timestampString = "473268557.429143"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "59"
            endingLineNumber = "59"
            landmarkName = "main()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "No"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "../Wave/waverdr.c"
            timestampString = "473511233.890202"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "303"
            endingLineNumber = "303"
            landmarkName = "wave_open_read()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "No"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "../Wave/waverdr.c"
            timestampString = "473511233.890202"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "266"
            endingLineNumber = "266"
            landmarkName = "wave_open_read()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "No"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "../Wave/waverdr.c"
            timestampString = "473511233.890202"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "260"
            endingLineNumber = "260"
            landmarkName = "wave_open_read()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "No"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "QueFinder/main.c"
            timestampString = "473334761.754467"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "168"
            endingLineNumber = "168"
            landmarkName = "main()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "No"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "QueFinder/main.c"
            timestampString = "473268557.429143"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "154"
            endingLineNumber = "154"
            landmarkName = "main()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "No"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "QueFinder/PeakFinder.c"
            timestampString = "473268557.429143"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "56"
            endingLineNumber = "56"
            landmarkName = "ScanData()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "No"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "QueFinder/Hdr.c"
            timestampString = "473258369.147145"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "44"
            endingLineNumber = "44"
            landmarkName = "GetHeader()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "No"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "QueFinder/Hdr.c"
            timestampString = "473258694.428339"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "70"
            endingLineNumber = "70"
            landmarkName = "GetHeader()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "No"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "QueFinder/Hdr.c"
            timestampString = "473258722.739692"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "61"
            endingLineNumber = "61"
            landmarkName = "GetHeader()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "No"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "QueFinder/main.c"
            timestampString = "473268557.429143"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "77"
            endingLineNumber = "77"
            landmarkName = "main()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "No"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "QueFinder/PeakFinder.c"
            timestampString = "473268557.429143"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "115"
            endingLineNumber = "115"
            landmarkName = "ScanDataOutput()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "Yes"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "QueFinder/PeakFinder.h"
            timestampString = "473268557.429143"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "31"
            endingLineNumber = "31">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "No"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "QueFinder/Nodes.c"
            timestampString = "473334598.524275"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "65"
            endingLineNumber = "65"
            landmarkName = "GetNextNode()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "Yes"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "QueFinder/main.c"
            timestampString = "473509969.60155"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "139"
            endingLineNumber = "139"
            landmarkName = "main()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
      <BreakpointProxy
         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
         <BreakpointContent
            shouldBeEnabled = "Yes"
            ignoreCount = "0"
            continueAfterRunningActions = "No"
            filePath = "../Wave/waverdr.c"
            timestampString = "473511229.857623"
            startingColumnNumber = "9223372036854775807"
            endingColumnNumber = "9223372036854775807"
            startingLineNumber = "412"
            endingLineNumber = "412"
            landmarkName = "wave_find_data()"
            landmarkType = "7">
         </BreakpointContent>
      </BreakpointProxy>
   </Breakpoints>
</Bucket>

Added Shows/QueFinder/QueFinder/QueFinder.xcodeproj/xcuserdata/jim.xcuserdatad/xcschemes/QueFinder.xcscheme.



















































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
   LastUpgradeVersion = "0720"
   version = "1.3">
   <BuildAction
      parallelizeBuildables = "YES"
      buildImplicitDependencies = "YES">
      <BuildActionEntries>
         <BuildActionEntry
            buildForTesting = "YES"
            buildForRunning = "YES"
            buildForProfiling = "YES"
            buildForArchiving = "YES"
            buildForAnalyzing = "YES">
            <BuildableReference
               BuildableIdentifier = "primary"
               BlueprintIdentifier = "3810F5BC1C32B04900336A4E"
               BuildableName = "QueFinder"
               BlueprintName = "QueFinder"
               ReferencedContainer = "container:QueFinder.xcodeproj">
            </BuildableReference>
         </BuildActionEntry>
      </BuildActionEntries>
   </BuildAction>
   <TestAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      shouldUseLaunchSchemeArgsEnv = "YES">
      <Testables>
      </Testables>
      <MacroExpansion>
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "3810F5BC1C32B04900336A4E"
            BuildableName = "QueFinder"
            BlueprintName = "QueFinder"
            ReferencedContainer = "container:QueFinder.xcodeproj">
         </BuildableReference>
      </MacroExpansion>
      <AdditionalOptions>
      </AdditionalOptions>
   </TestAction>
   <LaunchAction
      buildConfiguration = "Debug"
      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
      launchStyle = "0"
      useCustomWorkingDirectory = "NO"
      ignoresPersistentStateOnLaunch = "NO"
      debugDocumentVersioning = "YES"
      debugServiceExtension = "internal"
      allowLocationSimulation = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "3810F5BC1C32B04900336A4E"
            BuildableName = "QueFinder"
            BlueprintName = "QueFinder"
            ReferencedContainer = "container:QueFinder.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
      <CommandLineArguments>
         <CommandLineArgument
            argument = "-v"
            isEnabled = "NO">
         </CommandLineArgument>
         <CommandLineArgument
            argument = "-i x.wav"
            isEnabled = "NO">
         </CommandLineArgument>
         <CommandLineArgument
            argument = "-i ode.wav -hdr ode.hdr -nodes 8 -o ode.json"
            isEnabled = "YES">
         </CommandLineArgument>
      </CommandLineArguments>
      <AdditionalOptions>
      </AdditionalOptions>
   </LaunchAction>
   <ProfileAction
      buildConfiguration = "Release"
      shouldUseLaunchSchemeArgsEnv = "YES"
      savedToolIdentifier = ""
      useCustomWorkingDirectory = "NO"
      debugDocumentVersioning = "YES">
      <BuildableProductRunnable
         runnableDebuggingMode = "0">
         <BuildableReference
            BuildableIdentifier = "primary"
            BlueprintIdentifier = "3810F5BC1C32B04900336A4E"
            BuildableName = "QueFinder"
            BlueprintName = "QueFinder"
            ReferencedContainer = "container:QueFinder.xcodeproj">
         </BuildableReference>
      </BuildableProductRunnable>
   </ProfileAction>
   <AnalyzeAction
      buildConfiguration = "Debug">
   </AnalyzeAction>
   <ArchiveAction
      buildConfiguration = "Release"
      revealArchiveInOrganizer = "YES">
   </ArchiveAction>
</Scheme>

Added Shows/QueFinder/QueFinder/QueFinder.xcodeproj/xcuserdata/jim.xcuserdatad/xcschemes/xcschememanagement.plist.













































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>SchemeUserState</key>
	<dict>
		<key>QueFinder.xcscheme</key>
		<dict>
			<key>orderHint</key>
			<integer>0</integer>
		</dict>
	</dict>
	<key>SuppressBuildableAutocreation</key>
	<dict>
		<key>3810F5BC1C32B04900336A4E</key>
		<dict>
			<key>primary</key>
			<true/>
		</dict>
	</dict>
</dict>
</plist>

Added Shows/QueFinder/QueFinder/QueFinder/Hdr.c.





























































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//
//  Hdr.c		Read header files
//  QueFinder
//
//	Of the form
//	# <comment>
//	Show name
//	Show file
//	Show time (MM:SS)
//
//  Created by Jim on 31/12/2015.
//  Copyright © 2015 Pandora,Inc. All rights reserved.
//

#include <stdlib.h>
#include <string.h>
#include "Hdr.h"

#if 0
	#pragma mark -
	#pragma mark External API
#endif

//------------------------------------------------------------------------------
/*
	SHOW_HDR *GetHeader( char *name ) - Read header file
	
	INPUT:	name	- Header file name
	
	OUTPUT:	SHOW_HDR struct or NULL
*/
//------------------------------------------------------------------------------

SHOW_HDR *GetHeader( char *name )
{
	SHOW_HDR *hdr = NULL;
	FILE *fp;
	char buffer[HDR_SIZE];
	int slot = 0;
	size_t n;

	// (1) Can we open the file ?

	fp = fopen(name,"r");
	if( fp != NULL )
	{
		// Build a header struct

		hdr = (SHOW_HDR *)calloc(sizeof(SHOW_HDR),1);
		if( hdr != NULL )
		{

			// Ok read the file line by line
			while(fgets(buffer,HDR_SIZE,fp) != NULL )
			{
				// Coment ?

				if( buffer[0] != CMT_MARK && buffer[0] != '\n')
				{
					n = strlen( buffer );
					buffer[n-1] = '\0';		// Trim \n
					switch( slot )
					{
						case 0:	strncpy(hdr->name,buffer,HDR_SIZE);
								break;

						case 1:	strncpy(hdr->file,buffer,HDR_SIZE);
								break;

						case 2:	strncpy(hdr->time,buffer,HDR_SIZE);
								break;
					}

					slot = slot +1;
					if( slot > 2 )
						break;
				}
			}

			fclose(fp);

			if( slot != 3 )
			{
				// Bad file

				FreeHeader(hdr);
				hdr = NULL;
			}
		}
	}

	return hdr;
}
void Print_Header(SHOW_HDR *hdr,FILE *out);

//------------------------------------------------------------------------------
/*
	void FreeHeader(SHOW_HDR *hdr) - Delete header
	
	INPUT:	hdr	- Header structure
	
	OUTPUT:	NONE
*/
//------------------------------------------------------------------------------

void FreeHeader(SHOW_HDR *hdr)
{
	if( hdr != NULL )
		free( hdr );
}

Added Shows/QueFinder/QueFinder/QueFinder/Hdr.h.























































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//
//  Hdr.h
//  QueFinder
//
//  Created by Jim on 31/12/2015.
//  Copyright © 2015 Pandora,Inc. All rights reserved.
//

#ifndef Hdr_h
#define Hdr_h

#include <stdio.h>

#define HDR_SIZE	64
#define CMT_MARK	'#'

typedef struct {
				char name[HDR_SIZE+1];
				char file[HDR_SIZE+1];
				char time[HDR_SIZE+1];
				} SHOW_HDR;

SHOW_HDR *GetHeader( char *name );
void Print_Header(SHOW_HDR *hdr,FILE *out);
void FreeHeader(SHOW_HDR *hdr);

#endif /* Hdr_h */

Added Shows/QueFinder/QueFinder/QueFinder/Nodes.c.











































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
//
//  Nodes.c
//  QueFinder
//
//  Created by Jim on 31/12/2015.
//  Copyright © 2015 Pandora,Inc. All rights reserved.
//

#include "stdlib.h"
#include "Nodes.h"


#if 0
	#pragma mark -
	#pragma mark External API
#endif

//------------------------------------------------------------------------------
/*
	NODES *BuildNodes(int n) - Build a set of nodes
	
	INPUT:	n	- # of nodes
	
	OUTPUT:	NODES struct or NULL
*/
//------------------------------------------------------------------------------

NODES *BuildNodes(int n)
{
	NODES *base;

	base = (NODES *)calloc(1,sizeof(NODES));
	if( base != NULL )
	{
		base->count = n;
		base->list = (NODE *)calloc(1,n * sizeof(NODE));
		if( base->list == NULL )
		{
			// FAILURE

			free(base);
			base = NULL;
		}
	}

	return base;
}

//------------------------------------------------------------------------------
/*
	int GetNextNode(NODES *list,NODE *nd);
	
	INPUT:	list	- List of nodes
			node	- Node found
			channel	- Channel on node found
	
	OUTPUT:	0 if returned node, <> 0 if not
*/
//------------------------------------------------------------------------------

int GetNextNode(NODES *list,int *node,int *channel)
{
	int i,j;

	for( i=0; i<list->count; i++)
	{
		for(j=0;j<6;j++)
		{
			if( list->list[i].channel[j] == 0 )
			{
				*node = i + 1;
				*channel = j + 1;
				list->list[i].channel[j] = 1;
				return 0;		// Success
			}
		}
	}
	return -1;
}

//------------------------------------------------------------------------------
/*
	void FreeNodes(NODES *list) - Free node list
	
	INPUT:	list	- List of nodes

	
	OUTPUT:	Free list
*/
//------------------------------------------------------------------------------

void FreeNodes(NODES *list)
{
	if( list != NULL )
	{
		if(list->list != NULL)
			free(list->list);

		free(list);
	}
	}

Added Shows/QueFinder/QueFinder/QueFinder/Nodes.h.

























































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//
//  Nodes.h
//  QueFinder
//
//  Created by Jim on 31/12/2015.
//  Copyright © 2015 Pandora,Inc. All rights reserved.
//

#ifndef Nodes_h
#define Nodes_h

#include <stdio.h>

typedef struct {
			int node;
			char channel[6];
		} NODE;

typedef struct {
			int count;
			NODE *list;
		} NODES;

NODES *BuildNodes(int n);
int GetNextNode(NODES *list,int *node,int *channel);
void FreeNodes(NODES *list);

#endif /* Nodes_h */

Added Shows/QueFinder/QueFinder/QueFinder/PeakFinder.c.















































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
//
//  PeakFinder.c
//  QueFinder
//
//  Created by Jim on 30/12/2015.
//  Copyright © 2015 Pandora,Inc. All rights reserved.
//

#include "PeakFinder.h"
#if 0
	#pragma mark -
	#pragma mark Data
#endif

static PEAK *MakePeak( WAVE_HDL *wave,float *data,NODES *list,int psn);

#if 0
	#pragma mark -
	#pragma mark External API
#endif

//------------------------------------------------------------------------------
/*
	PEAK *ScanData( WAVE_HDL *wave,float *data,NODES *listfloat,int threshold,float width) - Find peaks
	
	INPUT:	wave		- Handle to open wave file
			data		- Floating point sound data from proc file
			list		- Node data list
			threahold	- 0-1.0 value for peak value
			width		- width of peak in ms
			
	OUTPUT:	Linked list of wave peaks
*/
//------------------------------------------------------------------------------

PEAK *ScanData( WAVE_HDL *wave,float *data,NODES *list,float threshold,float width)
{
	PEAK *base = NULL;
	PEAK *p = NULL;
	PEAK *last = NULL;
	int i;
	int peak_blank;

	// Calculate how long to blank after each peak

	peak_blank = (int) (width/1000 * wave->rate);

	// Scan data and capture peaks

	for( i=0; i< wave->frames; i++)
	{
		if( data[i] > threshold)
		{
			// Starting a new peak

			p = MakePeak(wave,data,list,i);

			// Add to list

			if( base == NULL )
			{
				base = p;
				last = p;
			}
			else
			{
				last->next = p;
				last = p;
			}

			// Skip fwd over blanking time

			i = i + peak_blank;
		}
	}

	return base;
}

//------------------------------------------------------------------------------
/*
	int ScanDataSize(PEAK *p)	- Count peaks
		
	INPUT:	p	- Peak list
	OUTPUT:	count of # of peaks
*/
//------------------------------------------------------------------------------

int ScanDataSize(PEAK *p)
{
	int rtnval = 0;
	while( p != NULL )
	{
		p = p->next;
		rtnval++;
	}
	
	return rtnval;
}

//------------------------------------------------------------------------------
/*
	int ScanDataOutput(PEAK *p,NODES *list,SHOW_HDR *hdr,char *outfile);
		
	INPUT:	p		- Peak list
			list	- Node list
			hdr		- Header data
			outfile	- Output file name

	OUTPUT:	0 if OK <> 0 if not
*/
//------------------------------------------------------------------------------

int ScanDataOutput(PEAK *p,NODES *list,SHOW_HDR *hdr,char *outfile)
{
	int delay;
	FILE *out;
	int rtnval = -1;

	// (1) open the file and quit if bad

	out = fopen(outfile,"w");
	if( out != NULL )
	{
		// (2) Do the header

		fprintf(out,"{\n");
		fprintf(out,"\t\"show\"\t\t:\t\"%s\",\n",hdr->name);
		fprintf(out,"\t\"music\"\t\t:\t\"%s\",\n",hdr->file);
		fprintf(out,"\t\"time\"\t\t:\t\"%s\",\n",hdr->time);
		fprintf(out,"\t\"nodes\"\t\t:\t\"%d\",\n",list->count);

		// Do the prograrm
		fprintf(out,"\t\"program\"\t: [\n");

		while( p != NULL )
		{
			delay = (int)(p->time * 1000.0 + 0.5);
			fprintf(out,"\t\t\t{\"node\" : \"%d\" , \"ch\" : \"%d\" , \"delay\" : \"%d\" }",
										p->node,
										p->channel,
										delay);
			p = p->next;
			if( p != NULL )
				fprintf(out,",\n");
			else
				fprintf(out,"\n");
		}

		// Close the json

		fprintf(out,"\t\t\t\t]\n");
		fprintf(out,"}\n");

		fclose(out);
		rtnval = 0;
	}

	return rtnval;
}
void ScanDataFree( PEAK *p)
{
	PEAK *pn;

	while( p != NULL )
	{
		pn = p->next;
		free(p);
		p = pn;
	}
}

#if 0
	#pragma mark -
	#pragma mark Internal API
#endif

static PEAK *MakePeak( WAVE_HDL *wave,float *data,NODES *list,int psn)
{
	PEAK *p;
	int node,channel;

	p = calloc(1, sizeof(PEAK));
	if( p != NULL )
	{
		// Fill it in

		p->peak_value = data[psn];
		p->index = psn;
		p->time = (float)psn / (float)wave->rate;
		if( list != NULL && GetNextNode(list, &node, &channel) == 0)
		{
			p->node = node;
			p->channel = channel;
		}
	}

	return p;
}

Added Shows/QueFinder/QueFinder/QueFinder/PeakFinder.h.









































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//
//  PeakFinder.h
//  QueFinder
//
//  Created by Jim on 30/12/2015.
//  Copyright © 2015 Pandora,Inc. All rights reserved.
//

#ifndef PeakFinder_h
#define PeakFinder_h

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "Hdr.h"
#include "Nodes.h"
#include "waverdr.h"

typedef struct dummy_cue {
								struct dummy_cue *next;
								float peak_value;		// Value @ peak
								int index;				// Index into data
								float time;				// MS into musical piece
								int fire_time;			// Time after DTMF time subtracted
								int node;
								int channel;
							} PEAK;

// External API

PEAK *ScanData( WAVE_HDL *wave,float *data,NODES *list,float threshold,float width);
int ScanDataSize(PEAK *p);
int ScanDataOutput(PEAK *p,NODES *list,SHOW_HDR *hdr,char *outfile);
void ScanDataFree( PEAK *p);

#endif /* PeakFinder_h */

Added Shows/QueFinder/QueFinder/QueFinder/main.c.































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255

//------------------------------------------------------------------------------
/*
	main.c
	QueFinder

	Created by Jim on 29/12/2015.
	Copyright © 2015 Pandora,Inc. All rights reserved.
	
	Cmd line:
		-i	<input files>	-nodes <# nodes> -hdr <header file> -o <output file>

*/
//------------------------------------------------------------------------------

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "waverdr.h"
#include "Hdr.h"
#include "Nodes.h"
#include "PeakFinder.h"


static int flag_srch(int argc,const char *argv[],
					char *flag,int get_value,
					char **rtn );
static void print_help(void);


int main(int argc, const char * argv[])
{
	char *ptr;
	WAVE_HDL *ifile;
	SHOW_HDR *hdr;
	NODES *nlist;
	float *buffer;
	int frames;
	PEAK *base;
	int count = 0;
	char inbuf[25];
	float threshold = 0.8;
	float width = 100.0;
	int n;
	int nodes;
	char *outfile;

	//------------------------------------------------------------------------------
	// (1) Handle input options
	
	if( flag_srch( argc,argv,"-v",0,&ptr) )		// Handle -v
	{
		print_help();
		return( 0 );
	}

	if( flag_srch( argc,argv,"-i",1,&ptr) )		// Input sound file
	{
		ifile = wave_open(ptr,"r",NULL);

		if( ifile == NULL )
		{
			printf("*** ERROR Could not read [%s] Input sound file\n",ptr);
			print_help();
			return(-1);
		}
	}
	else
	{
		printf("*** ERROR NO Input Sound File\n");
		print_help();
		return( - 1 );
	}

	if( flag_srch( argc,argv,"-hdr",1,&ptr) )		// Input header file
	{
		hdr = GetHeader(ptr);

		if( hdr == NULL )
		{
			printf("*** ERROR Could not read [%s] Input header file\n",ptr);
			print_help();
			return(-1);
		}
	}
	else
	{
		printf("*** ERROR NO Input Header File\n");
		print_help();
		return( - 1 );
	}

	if( flag_srch( argc,argv,"-nodes",1,&ptr) )		// Input # nodes
	{
		nodes = (int)strtol(ptr,NULL,0);

		if( nodes < 0 || nodes > 10 )
		{
			printf("*** Bad node count [%d]\n",nodes);
			print_help();
			return(-1);
		}
		else
		{
			nlist = BuildNodes(nodes);
			if( nlist == NULL )
			{
				printf("*** ERROR Bad node list\n");
				print_help();
				return( - 1 );
			}
		}
	}
	else
	{
		printf("*** ERROR NO nodes value\n");
		print_help();
		return( - 1 );
	}

	if( flag_srch( argc,argv,"-o",1,&ptr) )		// Out pgm file
	{
		outfile = ptr;
	}
	else
	{
		printf("*** ERROR NO Output Program File\n");
		print_help();
		return( - 1 );
	}

	//------------------------------------------------------------------------------
	// Process file
	// Read the data file

	buffer = (float *)calloc(2,sizeof(float) * ifile->frames);
	if( buffer != NULL )
	{
		frames = wave_frame_fread(ifile, (int)ifile->frames, buffer);
		printf("Frames Read %d\n",frames);

		// Get an acceptable # of peaks

		while( 1 )
		{
			printf("Input threshold (0-1.0): ");
			fgets(inbuf,25,stdin);
			n = sscanf(inbuf,"%f",&threshold);

			printf("Input Width (ms): ");
			fgets(inbuf,25,stdin);
			n = sscanf(inbuf,"%f",&width);

			base = ScanData(ifile,buffer,NULL,threshold,width);
			count = ScanDataSize(base);
			ScanDataFree(base);		// Free up trial

			printf("Found %d peaks\n",count);
			printf("OK (Y/n):");
			fgets(inbuf,25,stdin);
			if( inbuf[0] == 'Y')
				break;

		}

		// Run with current parameters
		base = ScanData(ifile,buffer,nlist,threshold,width);
		ScanDataOutput(base,nlist,hdr,outfile);

		ScanDataFree(base);
		FreeHeader(hdr);
		wave_close(ifile);
	}
	

    return 0;
}

/***********************************************************************
*
*  print_help(void)
*
*	INPUT:	NONE
*
*	OUTPUT:	NONE
*			Print program help
*
**********************************************************************/

static void print_help(void)
{
	printf("QueFinder - Find Que's in WAV File %s %s\n",__DATE__,__TIME__);
	printf("SYNTAX: firewalker   -i <Wave IN> -o <Queue OUT>\n");
	printf("\n");
	printf("    -i <Audio IN>       Stereo WAV file for queuing\n");
	printf("    -nodes <# nodes>    # Firing nodes\n");
	printf("    -hdr <header file>  File with show data\n");
	printf("    -o  <output file>   Show output file\n");
	printf("    [-v]                Show this message and return\n");
	printf("\n");
}

/***********************************************************************
*
*  FLAG_SRCH(argc,argv,flag,get_value,&rtn )
*
*	INPUT:	argc,argv	- Command line parameters
*		flag		- String (flag) to be found
*		get_value	- TRUE return pointer to next item
*				  FALSE no pointer returned
*		rtn		- Return pointer (NULL if not used or
*						  *				  found)
*
*	OUTPUT:	TRUE if flag found
*		FALSE if not
*		Scan argument list for flag
*		If found then TRUE is returned and if get_value TRUE
*		return rtn pointing to string in argv[] following
*		the flag
*		NOTE only exact matches will be found
*
**********************************************************************/

static int flag_srch(int argc,const char *argv[],char *flag,int get_value,char **rtn )
{
	int i;
	const char *ptr;

	/*  Scan through the argv's and look for a matching flag */

	for( i=0; i<argc; i++ )
	{
		ptr = argv[i];
		if( strcmp(ptr,flag) == 0 )
		{

			/*  Match found, return pointer to the following
			(if requested or NULL if not)
			*/
			i++;
			if( get_value && i < argc )
				*rtn = (char *)argv[i];
			else
				*rtn = NULL;
			return( 1 );
		}
	}

	/*  Failure exit here, so return to user with FALSE */

	return( 0 );
}



Added Shows/QueFinder/Wave/waverdr.c.









































































































































































































































































































































































































































































































































































































































































































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
/***************************************************************************
*  Copyright (C) 2005,  Pandora Products
*						vze35xda@verizon.net
* This is FREE SOFTWARE it can be used for any purpose and can be included
* in any project with no obligations to Pandora Products.
****************************************************************************/
/*
	waverdr.c	- File to read/write WAVE files
	
	API:	WAVE_HDL *wave_open( char *name,char *mode,WAVE_HDL *proto);
			void wave_close( WAVE_HDL *h );
			int wave_frame_fread( WAVE_HDL *h,int frames,float *frame_buf);
			int wave_frame_fwrite( WAVE_HDL *h,int frames,float *frame_buf);


	Changes	15-Dec-2005		Initial version
 */
//************************************************************************

#include <string.h>
#include <stdlib.h>
#include "waverdr.h"

// Internal routines

static WAVE_HDL *wave_open_read( FILE *h );
static WAVE_HDL *wave_open_write( FILE *h, WAVE_HDL *proto );
static int wave_find_data(int start,int size,char *buffer);


#pragma mark -- EXTERNAL API --

/*****************************************************************************
*
*  WAVE_HDL *wave_open( char *name,char *mode,WAVE_HDL *proto) - Open wave file
*
*	INPUT:	name	- Name of file to open
*			mode	- "r" or "w"
*			proto	- Prototype for "w" open will create header info using
*					this information
*					IGNORED on read
*
*	OUTPUT:	Pointer to handle for read or write of file
*
******************************************************************************/

WAVE_HDL *wave_open( char *name,char *mode,WAVE_HDL *proto)
{
	WAVE_HDL *fp = NULL;
	FILE *h;
	char internal_mode[10];
	
	// (1) Open the file and fail if not
	// Make the open "rb" or "wb"
	
	strncpy(internal_mode,mode,10);
	strncat(internal_mode,"b",10);
	h = fopen(name,internal_mode);
	if( h != NULL )
	{
		// (2) Open OK so handle READ or WRITE
		
		switch( mode[0] )
		{
			case 'r':		fp = wave_open_read( h );
							break;
							
			case 'w':		fp = wave_open_write(h,proto );
							break;
					
			default:		fp = NULL;
							break;
		}
	}
	
	return( fp );
}
	
/*****************************************************************************
*
*  void wave_close( WAVE_HDL *h )
*
*	INPUT:	h	- Open wave handle
*
*	OUTPUT:	Close file and wipe structure
*
******************************************************************************/

void wave_close( WAVE_HDL *h )
{
	if( h != NULL )
	{
		fclose( h->fp );
		free( h );
	}
}

/*****************************************************************************
*
*  int wave_frame_fread( WAVE_HDL *h,int frames,float *frame_buf)
*
*	INPUT:	h			Handle structure
*			frames		Read this many frames
*			frame_buf	Put output float here (must be large enought to hold data)
*
*	OUTPUT:	Read input, little endian -32768 to 32767 -> -1.0 to 1.0 float
*			return # frames read
*
******************************************************************************/

int wave_frame_fread( WAVE_HDL *hdl,int frames,float *frame_buf)
{
	char *buffer;
	int i,j,size;
	int psn = 0;
	int outpsn = 0;
	short val;
	
	// (1) Calculate # bytes to read & build a buffer to hold it
	
	size = hdl->frame_size * frames;
	buffer = (char *)calloc(1,size);
	if( buffer != NULL )
	{
		// (2) Read in buffer
		
		size = (int)fread(buffer,1,size,hdl->fp);
		if( size > 0 )
		{
			// (3) Now convert the input value into a float
			// Calculate how many frames we have
			
			frames = size / hdl->frame_size;

			// (3a) Move FWD to 'data' + 3 bytes to start of data

			psn = wave_find_data(0,size,buffer);

			// (4) Now read frames
			
			for( i=0; i<frames; i++ )
			{
				// On each frame generate the 2 byte
				// word for each and convert to -1.0/1.0 float
				
				for(j=0,val=0; j<hdl->channels; j++ )
				{
					val = 0xff & (0xff & buffer[psn++]);		// Low order first
					val = val + ((0xff & buffer[psn++])<<8);	// High order
					
					// Convert to float
					
					frame_buf[outpsn++] = (float)val/32768.0;
				}
			}
		}
		else
			frames = 0;
	
		// Free the read buffer
		
		 free( buffer );
	}
	else
		frames = 0;

	return( frames );
}

/*****************************************************************************
*
*  int wave_frame_fwrite( WAVE_HDL *h,int frames,float *frame_buf)
*
*	INPUT:	h			Handle structure
*			frames		Write this many frames
*			frame_buf	From here
*
*	OUTPUT:	Write data as frames, little endian -32768 to 32767 -> -1.0 to 1.0 float
*			Return # Frames written
*
******************************************************************************/

int wave_frame_fwrite( WAVE_HDL *hdl,int frames,float *frame_buf)
{
	char *buffer;
	int i,j,size;
	int psn = 0;
	int outpsn = 0;
	short val;

	// (1) Calculate # bytes to write & build a buffer to hold it
	
	size = hdl->frame_size * frames;
	buffer = (char *)calloc(1,size);
	if( buffer != NULL )
	{
		// (2) Write the input floats to this buffer
		// After conversion to +/- 32768
		
		for( i=0; i<frames; i++ )
		{
			// Generate the short from the float then
			// write in little endian order to buffer
			
			for(j=0; j<hdl->channels; j++ )
			{
				val = (short)(32768.0 * frame_buf[psn++]);
				
				buffer[outpsn++] = (char)(val & 0xff);
				buffer[outpsn++] = (char)((val>>8) & 0xff);
			}
		}
		
		// (3) Now write this output to the buffer
		// Calculate # frames written
		
		size = (int)fwrite(buffer,1,size,hdl->fp);
		frames = size / hdl->frame_size;
		
		// Free the read buffer
		
		 free( buffer );
	}
	else
		frames = 0;

	return( frames );
}


#pragma mark -- Internal API --

/*****************************************************************************
*
*  WAVE_HDL *wave_open_read( char *name) - Open wave file
*
*	INPUT:	h	- Open wave file
*
*	OUTPUT:	Handle to wave file filled out with internal data
*
******************************************************************************/

static WAVE_HDL *wave_open_read( FILE *h )
{
	int size;
	WAVE_HDL *hdl;
	
	// (1) Create wave file handle
	
	hdl = (WAVE_HDL *)calloc(1,sizeof(WAVE_HDL));
	if( hdl != NULL )
	{
		// (2) Read in the file chunks 
		
		size = (int)fread(hdl->hdr.buffer,1,WAVE_FILE_HDR_DATA,h);			// Header data
		if( size == WAVE_FILE_HDR_DATA )
		{
			// Get size of file, if start == RIFF then next is little
			// endian data size
			if( hdl->hdr.buffer[0] == 'R' &&
				hdl->hdr.buffer[1] == 'I' &&
				hdl->hdr.buffer[2] == 'F' &&
				hdl->hdr.buffer[3] == 'F' )
			{
				// Get the size as little endian
				hdl->frames = 0;
				hdl->frames += (0xff & hdl->hdr.buffer[7])<<24;
				hdl->frames += (0xff & hdl->hdr.buffer[6])<<16;
				hdl->frames += (0xff & hdl->hdr.buffer[5])<<8;
				hdl->frames += (0xff & hdl->hdr.buffer[4]);
			}

			size = (int)fread(hdl->fmt.buffer,1,WAVE_FMT_DATA,h);			// Format header chunk
			if( size == WAVE_FMT_DATA )
			{
				size = (int)fread(hdl->data.buffer,1,WAVE_DATA_DATA,h );	// Data header
				if( size == WAVE_DATA_DATA )
				{
					// At this point the header points to the data area
					// So fill in the handle with the needed data
					
					hdl->fp = h;		// File handle
					
					// # Channels = Byte 10 of format data buffer
					
					hdl->channels = 0xff & hdl->fmt.buffer[10];
					
					// Rate = bytes 12 & 13 of fmt block in little endian format
					
					hdl->rate = 0xff & hdl->fmt.buffer[13];
					hdl->rate = hdl->rate<<8;					// Move to top byte
					hdl->rate += 0xff &  hdl->fmt.buffer[12];	// Bottom byte
					
					// Bits/sample = byte 22 of fmt data buffer
					// then divide this by 8 to and mul by channels =  bytes/frame
					
					hdl->frame_size = 0xff & hdl->fmt.buffer[22];
					hdl->frame_size = (hdl->frame_size * hdl->channels)/8;
					
					// # Frames First get data size (long value 4-7 in data hdr)
					// In little endian order
					// Then divide this by frame size
					
					hdl->frames /= hdl->frame_size;
				}
			}
		}
	}
	
	return( hdl );
}

/*****************************************************************************
*
*  WAVE_HDL *wave_open_write( char *name)
*
*	INPUT:	h		Open wave file
*			proto	Prototype file (copy this file)
*
*	OUTPUT:	Handle to wave file handle filled out with internal data
*			And header data written to output file
*
******************************************************************************/

static WAVE_HDL *wave_open_write( FILE *fp, WAVE_HDL *proto )
{
	int size;
	WAVE_HDL *hdl;
	
	// (1) Create wave file handle
	
	hdl = (WAVE_HDL *)calloc(1,sizeof(WAVE_HDL));
	if( hdl != NULL )
	{
		// (2) Copy the prototype data into this handle
		
		hdl->channels		= proto->channels;
		hdl->rate			= proto->rate;
		hdl->frames			= proto->frames;
		hdl->frame_size		= proto->frame_size;
		hdl->fp				= fp;
		hdl->write_access	= 1;
		
		// (3) Copy the header blocks
		
		memcpy(hdl->hdr.buffer,proto->hdr.buffer,WAVE_FILE_HDR_DATA);
		memcpy(hdl->fmt.buffer,proto->fmt.buffer,WAVE_FMT_DATA);
		memcpy(hdl->data.buffer,proto->data.buffer,WAVE_DATA_DATA);
		
		// (4) Write the header data to the output file
		
		size = (int)fwrite(hdl->hdr.buffer,1,WAVE_FILE_HDR_DATA,fp);
		size = (int)fwrite(hdl->fmt.buffer,1,WAVE_FMT_DATA,fp);
		size = (int)fwrite(hdl->data.buffer,1,WAVE_DATA_DATA,fp);
	}
	
	return( hdl );
}

/*****************************************************************************
*
*  int wave_find_data(int start,char *buffer)	- Find start of data
*
*	INPUT:	start	- Psn to start search
*			size	- # bytes in buffer
*			buffer	- Data buffer
*
*	OUTPUT:	Find 'data' marker and move to start of data
*			- 1 if not found
*
*	DATA Chunk 
*		data		- 4 Bytes char
*		size		- 4 bytes
*
******************************************************************************/

static int wave_find_data(int start,int size,char *buffer)
{
	int rtnval = -1;
	int i;
	int step = 0;

	// Search for data

	for( i=start;i<size;i++)
	{
		switch( step )
		{
			case 0:	if( buffer[i] == 'd')
						step++;
					break;

			case 1:	if( buffer[i] == 'a')
						step++;
					else
						step = 0;
					break;

			case 2:	if( buffer[i] == 't')
						step++;
					else
						step = 0;
					break;

			case 3:	if( buffer[i] == 'a')
						step ++;
					else
						step = 0;
					break;

			case 4:	// Found, move past size and to data
					rtnval = i + 4;
					return( rtnval );
		}
	}

			return rtnval;
}

		

Added Shows/QueFinder/Wave/waverdr.h.















































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/***************************************************************************
*  Copyright (C) 2005,  Pandora Products
*						vze35xda@verizon.net
* This is FREE SOFTWARE it can be used for any purpose and can be included
* in any project with no obligations to Pandora Products.
****************************************************************************/
/*
	waverdr.h	- File to read/write WAVE files
	
	API:	WAVE_HDL *wave_open( char *name,char *mode,WAVE_HDL *proto);
			void wave_close( WAVE_HDL *h );
			int wave_frame_fread( WAVE_HDL *h,int frames,float *frame_buf);
			int wave_frame_fwrite( WAVE_HDL *h,int frames,float *frame_buf);


	Changes	15-Dec-2005		Initial version
 */
//************************************************************************

#include <stdio.h>

#ifndef WAVERDR_H
#define WAVERDR_H

#define WAVE_FILE_HDR_DATA	12			// Length in bytes
typedef struct {
					int length;
					unsigned char buffer[WAVE_FILE_HDR_DATA];		// Raw data
				} WAVE_FILE_HDR;
				
#define WAVE_FMT_DATA		24			// Length in bytes
typedef struct {
					int channels;		// # Channels/frame
					int rate;			// Frames/sec
					int channel_bits;	// Bits/channel
					
					unsigned char buffer[WAVE_FMT_DATA];
				} WAVE_FMT;
				
#define WAVE_DATA_DATA		8			// Length in bytes
typedef struct {
					long datasize;		// # Bytes in data
					unsigned char buffer[WAVE_DATA_DATA];
				} WAVE_DATA;
				
typedef struct {
					// Wave handle used for file access to WAVE data file
					
					WAVE_FILE_HDR		hdr;		// Header data from file
					WAVE_FMT			fmt;		// Format data from file
					WAVE_DATA			data;		// Data header from file
					
					int channels;		// # Channels/frame
					int rate;			// Rate in frames/sec
					unsigned long frames;// # Frames of data following
					int frame_size;		// # bytes/frame
					
					int					write_access;// TRUE on write
					FILE				*fp;		// File handle
			} WAVE_HDL;

// ****
// API
// ****

WAVE_HDL *wave_open( char *name,char *mode,WAVE_HDL *proto);
void wave_close( WAVE_HDL *h );
int wave_frame_fread( WAVE_HDL *h,int frames,float *frame_buf);
int wave_frame_fwrite( WAVE_HDL *h,int frames,float *frame_buf);

#endif

Added Shows/ode.json.









































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{
	"show"		:	"Ode to Joy",
	"music"		:	"odeToJoy.mp3",
	"time"		:	"2:05",
	"nodes"		:	"8",
	"program"	: [
			{"node" : "1" , "ch" : "1" , "delay" : "15601" },
			{"node" : "1" , "ch" : "2" , "delay" : "21242" },
			{"node" : "1" , "ch" : "3" , "delay" : "32817" },
			{"node" : "1" , "ch" : "4" , "delay" : "37265" },
			{"node" : "1" , "ch" : "5" , "delay" : "41681" },
			{"node" : "1" , "ch" : "6" , "delay" : "43487" },
			{"node" : "2" , "ch" : "1" , "delay" : "45324" },
			{"node" : "2" , "ch" : "2" , "delay" : "46577" },
			{"node" : "2" , "ch" : "3" , "delay" : "68111" },
			{"node" : "2" , "ch" : "4" , "delay" : "69472" },
			{"node" : "2" , "ch" : "5" , "delay" : "69795" },
			{"node" : "2" , "ch" : "6" , "delay" : "73039" },
			{"node" : "3" , "ch" : "1" , "delay" : "73144" },
			{"node" : "3" , "ch" : "2" , "delay" : "73244" },
			{"node" : "3" , "ch" : "3" , "delay" : "73397" },
			{"node" : "3" , "ch" : "4" , "delay" : "73505" },
			{"node" : "3" , "ch" : "5" , "delay" : "76256" },
			{"node" : "3" , "ch" : "6" , "delay" : "77167" },
			{"node" : "4" , "ch" : "1" , "delay" : "77703" },
			{"node" : "4" , "ch" : "2" , "delay" : "78028" },
			{"node" : "4" , "ch" : "3" , "delay" : "78919" },
			{"node" : "4" , "ch" : "4" , "delay" : "80824" },
			{"node" : "4" , "ch" : "5" , "delay" : "82145" },
			{"node" : "4" , "ch" : "6" , "delay" : "83365" },
			{"node" : "5" , "ch" : "1" , "delay" : "83513" },
			{"node" : "5" , "ch" : "2" , "delay" : "83642" },
			{"node" : "5" , "ch" : "3" , "delay" : "84379" },
			{"node" : "5" , "ch" : "4" , "delay" : "87552" },
			{"node" : "5" , "ch" : "5" , "delay" : "87874" },
			{"node" : "5" , "ch" : "6" , "delay" : "87984" },
			{"node" : "6" , "ch" : "1" , "delay" : "92100" },
			{"node" : "6" , "ch" : "2" , "delay" : "94440" },
			{"node" : "6" , "ch" : "3" , "delay" : "94649" },
			{"node" : "6" , "ch" : "4" , "delay" : "95228" },
			{"node" : "6" , "ch" : "5" , "delay" : "97954" },
			{"node" : "6" , "ch" : "6" , "delay" : "98414" },
			{"node" : "7" , "ch" : "1" , "delay" : "102450" },
			{"node" : "7" , "ch" : "2" , "delay" : "106127" },
			{"node" : "7" , "ch" : "3" , "delay" : "108798" },
			{"node" : "7" , "ch" : "4" , "delay" : "114409" },
			{"node" : "7" , "ch" : "5" , "delay" : "114589" },
			{"node" : "7" , "ch" : "6" , "delay" : "123734" },
			{"node" : "8" , "ch" : "1" , "delay" : "123847" },
			{"node" : "8" , "ch" : "2" , "delay" : "124217" }
				]
}

Added Shows/odeToJoy.mp3.

cannot compute difference between binary files

Changes to Shows/shows.json.

1
2
3
4
5
6
7
8
9
10
..
19
20
21
22
23
24
25
26
27





28



{
	"shows" : [
	{ "show"		:		"La Mariseillaise 4",
		  "file"		:	"mariseillaise4.json",
		  "nodes"		:	"4",
		  "time"		:	"1:02"
		  },
		  
		{ "show"		:	"La Mariseillaise 6",
		  "file"		:	"mariseillaise6.json",
................................................................................
		  },
		  
		  {
		  	"show"		:	"Stars & Stripes Forever",
		  	"file"		:	"ss_forever.json",
		  	"nodes"		:	"10",
		  	"time"		:	"3:38"
		  }
		]





}  





|







 







|
|
>
>
>
>
>
|
>
>
>
1
2
3
4
5
6
7
8
9
10
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
{
	"shows" : [
		{ "show"		:		"La Mariseillaise 4",
		  "file"		:	"mariseillaise4.json",
		  "nodes"		:	"4",
		  "time"		:	"1:02"
		  },
		  
		{ "show"		:	"La Mariseillaise 6",
		  "file"		:	"mariseillaise6.json",
................................................................................
		  },
		  
		  {
		  	"show"		:	"Stars & Stripes Forever",
		  	"file"		:	"ss_forever.json",
		  	"nodes"		:	"10",
		  	"time"		:	"3:38"
		  },
		  
		  {
			"show"		:	"Ode to Joy",
			"file"		:	"ode.json",
			"nodes"		:	"8",
			"time"		:	"2:05"
		  }

		]
}  

Changes to Shows/ss_forever.json.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
	"show"		:	"Stars & Stripes Forever",
	"music" 	:	"stars_stripes_forever.mp3",
	"time"		:	"3:38",
	"nodes"		:	"10",
	"program" : [
							{ "node" : "1", "ch" : "1" , "delay" : "320" },
			{ "node" : "2", "ch" : "1" , "delay" : "3960" },
			{ "node" : "3", "ch" : "1" , "delay" : "6540" },
			{ "node" : "4", "ch" : "1" , "delay" : "7480" },
			{ "node" : "5", "ch" : "1" , "delay" : "8590" },
			{ "node" : "6", "ch" : "1" , "delay" : "10020" },
			{ "node" : "7", "ch" : "1" , "delay" : "11460" },
			{ "node" : "8", "ch" : "1" , "delay" : "13240" },






|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
	"show"		:	"Stars & Stripes Forever",
	"music" 	:	"stars_stripes_forever.mp3",
	"time"		:	"3:38",
	"nodes"		:	"10",
	"program" : [
			{ "node" : "1", "ch" : "1" , "delay" : "320" },
			{ "node" : "2", "ch" : "1" , "delay" : "3960" },
			{ "node" : "3", "ch" : "1" , "delay" : "6540" },
			{ "node" : "4", "ch" : "1" , "delay" : "7480" },
			{ "node" : "5", "ch" : "1" , "delay" : "8590" },
			{ "node" : "6", "ch" : "1" , "delay" : "10020" },
			{ "node" : "7", "ch" : "1" , "delay" : "11460" },
			{ "node" : "8", "ch" : "1" , "delay" : "13240" },

Changes to Site/rest/main.lua.

9
10
11
12
13
14
15

16
17
18
19
20
21
22
..
67
68
69
70
71
72
73

74
75
76
77
78
79
80
..
88
89
90
91
92
93
94







95
96
97
98
99
100
101
...
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
--
--	This handles the top level
--
--	20-Nov-2011	[7f829d5df2] & [9eae8bcde5] Support for automated shows and PROGRAM
--				rest commands
--	23-Nov-2011	[7f829d5df2] Read cmd line input and pull in the http &
--				show locations

--
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
--                  SUPPORT FUNCTIONS
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
--
................................................................................
-- Pull up items from command line
-- NOTE THESE ARE GLOBALS FOR THE REST
-- OF THE SYSTEM

REST_LCN = flag_srch( arg,"-rest",1 )
HTTP_LCN = flag_srch(arg,"-http",1)
SHOW_LCN = flag_srch(arg,"-show",1)


if( REST_LCN == nil )
then
	print("SYNTAX ERROR: -rest <REST file lcn> NOT GIVEN")
	print("Shutting down")
	os.exit(-1)
end
................................................................................

if( SHOW_LCN == nil )
then
	print("WARNING: -show <SHOW file lcn> NOT GIVEN")
	print("Automated Shows Disabled")
end








-- Set that into the package search path							
_G.package.path = REST_LCN .. "/?.lua;" .. _G.package.path

-- Now all modules will load with just a simple require + name

require "rest_sup"
require "login"
................................................................................
state = {}
state.RUN = 1

-- Site operation

-- (1) Open channel and start HTTP

val = http.start(8081,HTTP_LCN,"rest")
if( val ~= nil )
then
	-- Open FIRENET, if fail then bail
	
	if( firenet_open() )
	then
	







>







 







>







 







>
>
>
>
>
>
>







 







|







9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
..
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
..
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
...
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
--
--	This handles the top level
--
--	20-Nov-2011	[7f829d5df2] & [9eae8bcde5] Support for automated shows and PROGRAM
--				rest commands
--	23-Nov-2011	[7f829d5df2] Read cmd line input and pull in the http &
--				show locations
--	28-Dec-2015 Add -port to set HTTP port
--
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
--                  SUPPORT FUNCTIONS
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
--
................................................................................
-- Pull up items from command line
-- NOTE THESE ARE GLOBALS FOR THE REST
-- OF THE SYSTEM

REST_LCN = flag_srch( arg,"-rest",1 )
HTTP_LCN = flag_srch(arg,"-http",1)
SHOW_LCN = flag_srch(arg,"-show",1)
PORT_USED = flag_srch(arg,"-port",1)

if( REST_LCN == nil )
then
	print("SYNTAX ERROR: -rest <REST file lcn> NOT GIVEN")
	print("Shutting down")
	os.exit(-1)
end
................................................................................

if( SHOW_LCN == nil )
then
	print("WARNING: -show <SHOW file lcn> NOT GIVEN")
	print("Automated Shows Disabled")
end

if( PORT_USED == nil )
then
	PORT_USED = 8081
	print("WARNING: -port not present using 8081")
end
PORT_USED = PORT_USED + 0

-- Set that into the package search path							
_G.package.path = REST_LCN .. "/?.lua;" .. _G.package.path

-- Now all modules will load with just a simple require + name

require "rest_sup"
require "login"
................................................................................
state = {}
state.RUN = 1

-- Site operation

-- (1) Open channel and start HTTP

val = http.start(PORT_USED,HTTP_LCN,"rest")
if( val ~= nil )
then
	-- Open FIRENET, if fail then bail
	
	if( firenet_open() )
	then
	

Changes to Tools/AVRpgmr/.DS_Store.

cannot compute difference between binary files

Changes to Tools/AVRpgmr/pgmr.xcodeproj/project.pbxproj.

158
159
160
161
162
163
164


165
166

167



168
169
170
171
172
173
174
...
195
196
197
198
199
200
201

202

203
204
205
206
207
208
209
210
211
212
213
214

215

216
217
218
219
220
221
222
223
224
225

226

227
228
229
230
231
232
233
			productType = "com.apple.product-type.tool";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		08FB7793FE84155DC02AAC07 /* Project object */ = {
			isa = PBXProject;


			buildConfigurationList = 38FBA1E5099828CD0087E94A /* Build configuration list for PBXProject "pgmr" */;
			compatibilityVersion = "Xcode 3.2";

			hasScannedForEncodings = 1;



			mainGroup = 08FB7794FE84155DC02AAC07 /* pgmr */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				8DD76FA90486AB0100D96B5E /* pgmr */,
			);
		};
................................................................................
				COPY_PHASE_STRIP = NO;
				FRAMEWORK_SEARCH_PATHS = /Users/jim/Dev/AVR/arvpgmr/pgmr;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_ENABLE_FIX_AND_CONTINUE = YES;
				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				INSTALL_PATH = "$(HOME)/bin";

				PRODUCT_NAME = pgmr;

				ZERO_LINK = NO;
			};
			name = Development;
		};
		38FBA1E3099828CD0087E94A /* Deployment */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				COPY_PHASE_STRIP = YES;
				FRAMEWORK_SEARCH_PATHS = /Users/jim/Dev/AVR/arvpgmr/pgmr;
				GCC_ENABLE_FIX_AND_CONTINUE = NO;
				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
				INSTALL_PATH = "$(HOME)/bin";

				PRODUCT_NAME = pgmr;

				ZERO_LINK = NO;
			};
			name = Deployment;
		};
		38FBA1E4099828CD0087E94A /* Default */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				FRAMEWORK_SEARCH_PATHS = /Users/jim/Dev/AVR/arvpgmr/pgmr;
				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
				INSTALL_PATH = "$(HOME)/bin";

				PRODUCT_NAME = pgmr;

			};
			name = Default;
		};
		38FBA1E6099828CD0087E94A /* Development */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;







>
>


>

>
>
>







 







>

>












>

>










>

>







158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
...
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
			productType = "com.apple.product-type.tool";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		08FB7793FE84155DC02AAC07 /* Project object */ = {
			isa = PBXProject;
			attributes = {
			};
			buildConfigurationList = 38FBA1E5099828CD0087E94A /* Build configuration list for PBXProject "pgmr" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 1;
			knownRegions = (
				en,
			);
			mainGroup = 08FB7794FE84155DC02AAC07 /* pgmr */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				8DD76FA90486AB0100D96B5E /* pgmr */,
			);
		};
................................................................................
				COPY_PHASE_STRIP = NO;
				FRAMEWORK_SEARCH_PATHS = /Users/jim/Dev/AVR/arvpgmr/pgmr;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_ENABLE_FIX_AND_CONTINUE = YES;
				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				INSTALL_PATH = "$(HOME)/bin";
				MACOSX_DEPLOYMENT_TARGET = 10.10;
				PRODUCT_NAME = pgmr;
				SDKROOT = macosx;
				ZERO_LINK = NO;
			};
			name = Development;
		};
		38FBA1E3099828CD0087E94A /* Deployment */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				COPY_PHASE_STRIP = YES;
				FRAMEWORK_SEARCH_PATHS = /Users/jim/Dev/AVR/arvpgmr/pgmr;
				GCC_ENABLE_FIX_AND_CONTINUE = NO;
				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
				INSTALL_PATH = "$(HOME)/bin";
				MACOSX_DEPLOYMENT_TARGET = 10.10;
				PRODUCT_NAME = pgmr;
				SDKROOT = macosx;
				ZERO_LINK = NO;
			};
			name = Deployment;
		};
		38FBA1E4099828CD0087E94A /* Default */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				FRAMEWORK_SEARCH_PATHS = /Users/jim/Dev/AVR/arvpgmr/pgmr;
				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
				INSTALL_PATH = "$(HOME)/bin";
				MACOSX_DEPLOYMENT_TARGET = 10.10;
				PRODUCT_NAME = pgmr;
				SDKROOT = macosx;
			};
			name = Default;
		};
		38FBA1E6099828CD0087E94A /* Development */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;

Changes to luasupport/JSON/JSON/qdj_token.c.

377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
									run = 0;
									buf->eob = 0;
									break;
									
				case '\\':			// Escapes in front of " are a special case
									// Check for this condition
									
									buf->psn++;		// Get \ 
									len++;
									
									// If the next character a ", if so then
									// suck it up also as this is NOT the end of the
									// string
									
									if( *buf->psn == '"' )







|







377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
									run = 0;
									buf->eob = 0;
									break;
									
				case '\\':			// Escapes in front of " are a special case
									// Check for this condition
									
									buf->psn++;		// Get pa
									len++;
									
									// If the next character a ", if so then
									// suck it up also as this is NOT the end of the
									// string
									
									if( *buf->psn == '"' )