1#import "IrDAActions.h"
2#import "IrDAStatus.h"
3#import <sys/stat.h>
4#import "Preferences.h"
5
6@implementation IrDAActions
7// IsCheetahNetworkPrefs
8- (NSString *) GetCurrentDriverName{
9	NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
10	return ([defaults objectForKey: DefaultDriverKey]);
11}
12- (IBAction)StartIrDA:(id)sender
13{
14    kern_return_t	kr;
15    io_object_t		netif;
16    io_connect_t	conObj;
17    mach_port_t		masterPort;
18	NSString		*driverName = [self GetCurrentDriverName];
19	const char		*driverCStringName = [driverName cString];
20
21	NSLog(@"StartIrDA");
22    // Get master device port
23    //
24    kr = IOMasterPort(bootstrap_port, &masterPort);
25    if (kr != KERN_SUCCESS) {
26		printf("IOMasterPort() failed: %08lx\n", (unsigned long)kr);
27		return;
28    }
29    netif = getInterfaceWithName(masterPort, driverCStringName);
30    if (netif) {
31		kr = openDevice(netif, &conObj);
32		if (kr == kIOReturnSuccess) {
33			size_t infosize = 0;
34
35			kr = doCommand(conObj, kIrDAUserCmd_Enable, nil, 0, nil, &infosize);
36			if (kr == kIOReturnSuccess) {
37				NSLog(@"StartIrDA: kIrDAUserCmd_Enable worked!");
38			}
39			else{
40				printf("kr is %d\n", kr);
41			}
42			closeDevice(conObj);
43      	}
44		IOObjectRelease(netif);
45    }
46	else{
47		NSLog(@"Unable to find the Requested Driver");
48	}
49}
50- (IBAction)StopIrDA:(id)sender
51{
52    kern_return_t	kr;
53    io_object_t		netif;
54    io_connect_t	conObj;
55    mach_port_t		masterPort;
56	NSString		*driverName = [self GetCurrentDriverName];
57	const char		*driverCStringName = [driverName cString];
58
59	NSLog(@"StopIrDA");
60    // Get master device port
61    //
62    kr = IOMasterPort(bootstrap_port, &masterPort);
63    if (kr != KERN_SUCCESS) {
64		printf("IOMasterPort() failed: %08lx\n", (unsigned long)kr);
65		return;
66    }
67    netif = getInterfaceWithName(masterPort, driverCStringName);
68    if (netif) {
69		kr = openDevice(netif, &conObj);
70		if (kr == kIOReturnSuccess) {
71			size_t infosize = 0;
72
73			kr = doCommand(conObj, kIrDAUserCmd_Disable, nil, 0, nil, &infosize);
74			if (kr == kIOReturnSuccess) {
75				NSLog(@"StopIrDA: kIrDAUserCmd_Disable worked!");
76			}
77			else{
78				printf("kr is %d\n", kr);
79			}
80			closeDevice(conObj);
81      	}
82		IOObjectRelease(netif);
83    }
84	else{
85		NSLog(@"Unable to find the Requested Driver");
86	}
87}
88
89@end
90