Initial Version

This commit is contained in:
Chris Teubert
2014-10-22 15:52:38 -07:00
parent 2f13ce38bd
commit 8013ce1003
153 changed files with 22812 additions and 0 deletions

View File

@@ -0,0 +1,259 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
BEDC620118EDF0F5005DB364 /* xplaneConnect.c in Sources */ = {isa = PBXBuildFile; fileRef = BEDC61FF18EDF0F5005DB364 /* xplaneConnect.c */; };
BEDC620818EDF254005DB364 /* xplaneConnect.c in CopyFiles */ = {isa = PBXBuildFile; fileRef = BEDC61FF18EDF0F5005DB364 /* xplaneConnect.c */; };
BEDC620918EDF257005DB364 /* xplaneConnect.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BEDC620018EDF0F5005DB364 /* xplaneConnect.h */; };
BEF9890F18E4E7F7005554D1 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BEF9890E18E4E7F7005554D1 /* main.cpp */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
BE60308318E5F7A5004B5E1D /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 12;
dstPath = /Users/cteubert/Documents/flightdeckz/connections/src/xplaneconnect;
dstSubfolderSpec = 0;
files = (
BEDC620818EDF254005DB364 /* xplaneConnect.c in CopyFiles */,
BEDC620918EDF257005DB364 /* xplaneConnect.h in CopyFiles */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
BEDC61FF18EDF0F5005DB364 /* xplaneConnect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = xplaneConnect.c; path = ../src/xplaneConnect.c; sourceTree = "<group>"; };
BEDC620018EDF0F5005DB364 /* xplaneConnect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = xplaneConnect.h; path = ../src/xplaneConnect.h; sourceTree = "<group>"; };
BEF9890B18E4E7F7005554D1 /* xpcExample */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = xpcExample; sourceTree = BUILT_PRODUCTS_DIR; };
BEF9890E18E4E7F7005554D1 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
BEF9890818E4E7F7005554D1 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
BE60308618E5F980004B5E1D /* xplaneConnect */ = {
isa = PBXGroup;
children = (
BEDC61FF18EDF0F5005DB364 /* xplaneConnect.c */,
BEDC620018EDF0F5005DB364 /* xplaneConnect.h */,
);
name = xplaneConnect;
sourceTree = "<group>";
};
BEF9890218E4E7F7005554D1 = {
isa = PBXGroup;
children = (
BEF9890D18E4E7F7005554D1 /* xpcExample */,
BE60308618E5F980004B5E1D /* xplaneConnect */,
BEF9890C18E4E7F7005554D1 /* Products */,
);
sourceTree = "<group>";
};
BEF9890C18E4E7F7005554D1 /* Products */ = {
isa = PBXGroup;
children = (
BEF9890B18E4E7F7005554D1 /* xpcExample */,
);
name = Products;
sourceTree = "<group>";
};
BEF9890D18E4E7F7005554D1 /* xpcExample */ = {
isa = PBXGroup;
children = (
BEF9890E18E4E7F7005554D1 /* main.cpp */,
);
path = xpcExample;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
BEF9890A18E4E7F7005554D1 /* xpcExample */ = {
isa = PBXNativeTarget;
buildConfigurationList = BEF9891418E4E7F7005554D1 /* Build configuration list for PBXNativeTarget "xpcExample" */;
buildPhases = (
BEF9890718E4E7F7005554D1 /* Sources */,
BEF9890818E4E7F7005554D1 /* Frameworks */,
BE60308318E5F7A5004B5E1D /* CopyFiles */,
);
buildRules = (
);
dependencies = (
);
name = xpcExample;
productName = xpcExample;
productReference = BEF9890B18E4E7F7005554D1 /* xpcExample */;
productType = "com.apple.product-type.tool";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
BEF9890318E4E7F7005554D1 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0500;
ORGANIZATIONNAME = "Chris Teubert";
};
buildConfigurationList = BEF9890618E4E7F7005554D1 /* Build configuration list for PBXProject "xpcExample" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = BEF9890218E4E7F7005554D1;
productRefGroup = BEF9890C18E4E7F7005554D1 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
BEF9890A18E4E7F7005554D1 /* xpcExample */,
);
};
/* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */
BEF9890718E4E7F7005554D1 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
BEDC620118EDF0F5005DB364 /* xplaneConnect.c in Sources */,
BEF9890F18E4E7F7005554D1 /* main.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
BEF9891218E4E7F7005554D1 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
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__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
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;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.8;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx;
};
name = Debug;
};
BEF9891318E4E7F7005554D1 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
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__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_ENABLE_OBJC_EXCEPTIONS = 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;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.8;
SDKROOT = macosx;
};
name = Release;
};
BEF9891518E4E7F7005554D1 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
HEADER_SEARCH_PATHS = (
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
/Users/cteubert/Documents/xplaneconnect/xpcPlugin,
);
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
BEF9891618E4E7F7005554D1 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
HEADER_SEARCH_PATHS = (
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
/Users/cteubert/Documents/xplaneconnect/xpcPlugin,
);
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
BEF9890618E4E7F7005554D1 /* Build configuration list for PBXProject "xpcExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BEF9891218E4E7F7005554D1 /* Debug */,
BEF9891318E4E7F7005554D1 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
BEF9891418E4E7F7005554D1 /* Build configuration list for PBXNativeTarget "xpcExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
BEF9891518E4E7F7005554D1 /* Debug */,
BEF9891618E4E7F7005554D1 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = BEF9890318E4E7F7005554D1 /* Project object */;
}

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:xpcExample.xcodeproj">
</FileRef>
</Workspace>

View File

@@ -0,0 +1,46 @@
<?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>IDESourceControlProjectFavoriteDictionaryKey</key>
<false/>
<key>IDESourceControlProjectIdentifier</key>
<string>2D8FADF5-8504-4A76-A99F-91CA115CE4E3</string>
<key>IDESourceControlProjectName</key>
<string>xpcExample</string>
<key>IDESourceControlProjectOriginsDictionary</key>
<dict>
<key>D7B4D224-FE26-406E-A48F-C604A5BE6975</key>
<string>https://babelfish.arc.nasa.gov/svn/pcoe/cteubert/xplaneconnect</string>
</dict>
<key>IDESourceControlProjectPath</key>
<string>C/xpcExample/xpcExample.xcodeproj/project.xcworkspace</string>
<key>IDESourceControlProjectRelativeInstallPathDictionary</key>
<dict>
<key>D7B4D224-FE26-406E-A48F-C604A5BE6975</key>
<string>../../../..</string>
</dict>
<key>IDESourceControlProjectRepositoryRootDictionary</key>
<dict>
<key>D7B4D224-FE26-406E-A48F-C604A5BE6975</key>
<string>https://babelfish.arc.nasa.gov/svn/pcoe</string>
</dict>
<key>IDESourceControlProjectURL</key>
<string>https://babelfish.arc.nasa.gov/svn/pcoe/cteubert/xplaneconnect/C/xpcExample/xpcExample.xcodeproj</string>
<key>IDESourceControlProjectVersion</key>
<integer>110</integer>
<key>IDESourceControlProjectWCCIdentifier</key>
<string>D7B4D224-FE26-406E-A48F-C604A5BE6975</string>
<key>IDESourceControlProjectWCConfigurations</key>
<array>
<dict>
<key>IDESourceControlRepositoryExtensionIdentifierKey</key>
<string>public.vcs.subversion</string>
<key>IDESourceControlWCCIdentifierKey</key>
<string>D7B4D224-FE26-406E-A48F-C604A5BE6975</string>
<key>IDESourceControlWCCName</key>
<string>xplaneconnect</string>
</dict>
</array>
</dict>
</plist>

View File

@@ -0,0 +1,23 @@
<?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 = "../src/xplaneConnect.c"
timestampString = "433458275.8587"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "342"
endingLineNumber = "342"
landmarkName = "setCONN()"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

View File

@@ -0,0 +1,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>xpcExample.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>BEF9890A18E4E7F7005554D1</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>

View File

@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0500"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "BEF9890A18E4E7F7005554D1"
BuildableName = "xpcExample"
BlueprintName = "xpcExample"
ReferencedContainer = "container:xpcExample.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "BEF9890A18E4E7F7005554D1"
BuildableName = "xpcExample"
BlueprintName = "xpcExample"
ReferencedContainer = "container:xpcExample.xcodeproj">
</BuildableReference>
</MacroExpansion>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "BEF9890A18E4E7F7005554D1"
BuildableName = "xpcExample"
BlueprintName = "xpcExample"
ReferencedContainer = "container:xpcExample.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
<BuildableProductRunnable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "BEF9890A18E4E7F7005554D1"
BuildableName = "xpcExample"
BlueprintName = "xpcExample"
ReferencedContainer = "container:xpcExample.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@@ -0,0 +1,131 @@
//
// main.cpp
// xpcExample
//
// Created by Chris Teubert on 3/27/14.
// Copyright (c) 2014 Chris Teubert. All rights reserved.
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "xplaneConnect.h"
int main() {
int i,j;
struct xpcSocket sendfd,readfd;
float data[4][9] = {0};
char DREF[100] = {0};
char DREFArray[100][100];
char DREFArray2[100][100];
short DREFSizes[100];
float *recDATA[100];
float POSI[9] = {0.0};
float CTRL[5] = {0.0};
float gear;
char IP[16] = "143.232.73.41";//"127.0.0.1";//;// //IP Address of computer running X-Plane
short PORT = 49009; //xpcPlugin Receiving port (usually 49009)
printf("xplaneconnect Example Script\n- Setting up Simulation\n");
for (i = 0; i < 100; i++) {
recDATA[i] = (float *) malloc(40*sizeof(float));
memset(DREFArray[i],0,100);
memset(DREFArray2[i],0,100);
}
// Open Sockets
readfd = openUDP(49055, IP, PORT); //Open socket for receiving
sendfd = openUDP(49077, IP, PORT); //Open socket for sending
// Set up Connection
setCONN(sendfd, 49055); // Setup so data will be received on port 49055
// Set Location/Orientation (sendPOSI)
// Set Up Position Array
POSI[0] = 37.524; // Lat
POSI[1] = -122.06899; // Lon
POSI[2] = 2500; // Alt
POSI[3] = 0; // Pitch
POSI[4] = 0; // Roll
POSI[5] = 0; // Heading
POSI[6] = 1; // Gear
sendPOSI(sendfd, 0, 7, POSI);
POSI[0] = 37.52465;
POSI[4] = 20;
sendPOSI(sendfd, 1, 7, POSI);
// Set Rates (sendDATA)
for (i=0;i<4;i++) { // Set array to -999
for (j=0;j<9;j++) data[i][j] = -999;
}
// Set up Data Array (first item in row is item number (example: 20=position)
data[0][0] = 18; // Alpha
data[0][1] = 0;
data[0][3] = 0;
data[1][0] = 3;//21; //Velocity
data[1][1] = 130;
data[1][2] = 130;
data[1][3] = 130;
data[1][4] = 130;
data[2][0] = 16; //PQR
data[2][1] = 0;
data[2][2] = 0;
data[2][3] = 0;
sendDATA(sendfd, data, 3); // Throttle/Velocity/Alpha/PQR
// Set CTRL
CTRL[3] = 0.8; // Throttle
sendCTRL(sendfd, 4, CTRL);
// pauseSim
pauseSim(sendfd, 1); // Sending 1 to pause
// Pause for 5 seconds
sleep(5);
// Unpause
pauseSim(sendfd, 0); // Sending 0 to unpause
printf("- Resuming Simulation\n");
// Simulate for 10 seconds
sleep(10);
// SendDREF (Landing Gear)
printf("- Stowing Landing Gear\n");
strcpy(DREF,"cockpit/switches/gear_handle_status"); // Gear handle data reference
DREFSizes[0] = sizeof(DREF);
gear = 1; // Stow gear
sendDREF(sendfd, DREF, DREFSizes[0], &gear, 1); // Set gear to stow
// Simulate for 10 seconds
sleep(10);
// Check Landing gear, Pause
printf("- Confirming Gear Status\n");
strcpy(DREFArray2[0],"sim/cockpit/switches/gear_handle_status");
strcpy(DREFArray2[1],"sim/operation/override/override_planepath");
for (i=0;i<2;i++) {
DREFSizes[i] = (int) strlen(DREFArray2[i]);
}
requestDREF(sendfd, readfd, DREFArray2, DREFSizes, 2, recDATA, DREFSizes); // Request 2 values
if (*(recDATA[0])==0) {
printf("\tGear Stowed\n");
} else {
printf("\tERROR: Gear Stowage unsuccessful\n");
}
printf("---End Program---\n");
return 0;
}

View File

@@ -0,0 +1,79 @@
.\"Modified from man(1) of FreeBSD, the NetBSD mdoc.template, and mdoc.samples.
.\"See Also:
.\"man mdoc.samples for a complete listing of options
.\"man mdoc for the short list of editing options
.\"/usr/share/misc/mdoc.template
.Dd 3/27/14 \" DATE
.Dt xpcExample 1 \" Program name and manual section number
.Os Darwin
.Sh NAME \" Section Header - required - don't modify
.Nm xpcExample,
.\" The following lines are read in generating the apropos(man -k) database. Use only key
.\" words here as the database is built based on the words here and in the .ND line.
.Nm Other_name_for_same_program(),
.Nm Yet another name for the same program.
.\" Use .Nm macro to designate other names for the documented program.
.Nd This line parsed for whatis database.
.Sh SYNOPSIS \" Section Header - required - don't modify
.Nm
.Op Fl abcd \" [-abcd]
.Op Fl a Ar path \" [-a path]
.Op Ar file \" [file]
.Op Ar \" [file ...]
.Ar arg0 \" Underlined argument - use .Ar anywhere to underline
arg2 ... \" Arguments
.Sh DESCRIPTION \" Section Header - required - don't modify
Use the .Nm macro to refer to your program throughout the man page like such:
.Nm
Underlining is accomplished with the .Ar macro like this:
.Ar underlined text .
.Pp \" Inserts a space
A list of items with descriptions:
.Bl -tag -width -indent \" Begins a tagged list
.It item a \" Each item preceded by .It macro
Description of item a
.It item b
Description of item b
.El \" Ends the list
.Pp
A list of flags and their descriptions:
.Bl -tag -width -indent \" Differs from above in tag removed
.It Fl a \"-a flag as a list item
Description of -a flag
.It Fl b
Description of -b flag
.El \" Ends the list
.Pp
.\" .Sh ENVIRONMENT \" May not be needed
.\" .Bl -tag -width "ENV_VAR_1" -indent \" ENV_VAR_1 is width of the string ENV_VAR_1
.\" .It Ev ENV_VAR_1
.\" Description of ENV_VAR_1
.\" .It Ev ENV_VAR_2
.\" Description of ENV_VAR_2
.\" .El
.Sh FILES \" File used or created by the topic of the man page
.Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact
.It Pa /usr/share/file_name
FILE_1 description
.It Pa /Users/joeuser/Library/really_long_file_name
FILE_2 description
.El \" Ends the list
.\" .Sh DIAGNOSTICS \" May not be needed
.\" .Bl -diag
.\" .It Diagnostic Tag
.\" Diagnostic informtion here.
.\" .It Diagnostic Tag
.\" Diagnostic informtion here.
.\" .El
.Sh SEE ALSO
.\" List links in ascending order by section, alphabetically within a section.
.\" Please do not reference files that do not exist without filing a bug report
.Xr a 1 ,
.Xr b 1 ,
.Xr c 1 ,
.Xr a 2 ,
.Xr b 2 ,
.Xr a 3 ,
.Xr b 3
.\" .Sh BUGS \" Document known, unremedied bugs
.\" .Sh HISTORY \" Document history if command behaves in a unique manner