1/*
2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * The contents of this file constitute Original Code as defined in and
7 * are subject to the Apple Public Source License Version 1.1 (the
8 * "License").  You may not use this file except in compliance with the
9 * License.  Please obtain a copy of the License at
10 * http://www.apple.com/publicsource and read it before using this file.
11 *
12 * This Original Code and all software distributed under the License are
13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
17 * License for the specific language governing rights and limitations
18 * under the License.
19 *
20 * @APPLE_LICENSE_HEADER_END@
21 */
22/*
23 * IOSerialStreamSync.cpp
24 *
25 * 2000-10-21	gvdl	Initial real change to IOKit serial family.
26 *
27 */
28
29#include "IOSerialDriverSync.h"
30
31#include "IOSerialStreamSync.h"
32#include "IORS232SerialStreamSync.h"
33#include "IOModemSerialStreamSync.h"
34
35OSDefineMetaClassAndAbstractStructors(IOSerialDriverSync, IOService);
36OSMetaClassDefineReservedUnused(IOSerialDriverSync,  0);
37OSMetaClassDefineReservedUnused(IOSerialDriverSync,  1);
38OSMetaClassDefineReservedUnused(IOSerialDriverSync,  2);
39OSMetaClassDefineReservedUnused(IOSerialDriverSync,  3);
40OSMetaClassDefineReservedUnused(IOSerialDriverSync,  4);
41OSMetaClassDefineReservedUnused(IOSerialDriverSync,  5);
42OSMetaClassDefineReservedUnused(IOSerialDriverSync,  6);
43OSMetaClassDefineReservedUnused(IOSerialDriverSync,  7);
44OSMetaClassDefineReservedUnused(IOSerialDriverSync,  8);
45OSMetaClassDefineReservedUnused(IOSerialDriverSync,  9);
46OSMetaClassDefineReservedUnused(IOSerialDriverSync, 10);
47OSMetaClassDefineReservedUnused(IOSerialDriverSync, 11);
48OSMetaClassDefineReservedUnused(IOSerialDriverSync, 12);
49OSMetaClassDefineReservedUnused(IOSerialDriverSync, 13);
50OSMetaClassDefineReservedUnused(IOSerialDriverSync, 14);
51OSMetaClassDefineReservedUnused(IOSerialDriverSync, 15);
52
53OSDefineMetaClassAndStructors(IOSerialStreamSync, IOService);
54OSMetaClassDefineReservedUnused(IOSerialStreamSync,  0);
55OSMetaClassDefineReservedUnused(IOSerialStreamSync,  1);
56OSMetaClassDefineReservedUnused(IOSerialStreamSync,  2);
57OSMetaClassDefineReservedUnused(IOSerialStreamSync,  3);
58OSMetaClassDefineReservedUnused(IOSerialStreamSync,  4);
59OSMetaClassDefineReservedUnused(IOSerialStreamSync,  5);
60OSMetaClassDefineReservedUnused(IOSerialStreamSync,  6);
61OSMetaClassDefineReservedUnused(IOSerialStreamSync,  7);
62OSMetaClassDefineReservedUnused(IOSerialStreamSync,  8);
63OSMetaClassDefineReservedUnused(IOSerialStreamSync,  9);
64OSMetaClassDefineReservedUnused(IOSerialStreamSync, 10);
65OSMetaClassDefineReservedUnused(IOSerialStreamSync, 11);
66OSMetaClassDefineReservedUnused(IOSerialStreamSync, 12);
67OSMetaClassDefineReservedUnused(IOSerialStreamSync, 13);
68OSMetaClassDefineReservedUnused(IOSerialStreamSync, 14);
69OSMetaClassDefineReservedUnused(IOSerialStreamSync, 15);
70
71OSDefineMetaClassAndStructors(IORS232SerialStreamSync, IOSerialStreamSync);
72OSDefineMetaClassAndStructors(IOModemSerialStreamSync, IOSerialStreamSync);
73
74#define super IOService
75
76bool IOSerialStreamSync::init(OSDictionary *dictionary, void *refCon)
77{
78    if (!super::init(dictionary))
79        return false;
80
81    fRefCon = refCon;
82    return true;
83}
84
85bool IOSerialStreamSync::attach(IOService *provider)
86{
87    if (!super::attach(provider))
88        return false;
89
90    fProvider = OSDynamicCast(IOSerialDriverSync, provider);
91    if (fProvider)
92        return true;
93    else {
94        super::detach(provider);
95        return false;
96    }
97}
98
99IOReturn IOSerialStreamSync::
100acquirePort(bool sleep)
101    { return fProvider->acquirePort(sleep, fRefCon); }
102
103IOReturn IOSerialStreamSync::
104releasePort()
105    { return fProvider->releasePort(fRefCon); }
106
107IOReturn IOSerialStreamSync::
108setState(UInt32 state, UInt32 mask)
109    { return fProvider->setState(state, mask, fRefCon); }
110
111UInt32 IOSerialStreamSync::
112getState()
113    { return fProvider->getState(fRefCon); }
114
115IOReturn IOSerialStreamSync::
116watchState(UInt32 *state, UInt32 mask)
117    { return fProvider->watchState(state, mask, fRefCon); }
118
119UInt32 IOSerialStreamSync::
120nextEvent()
121    { return fProvider->nextEvent(fRefCon); }
122
123IOReturn IOSerialStreamSync::
124executeEvent(UInt32 event, UInt32 data)
125    { return fProvider->executeEvent(event, data, fRefCon); }
126
127IOReturn IOSerialStreamSync::
128requestEvent(UInt32 event, UInt32 *data)
129    { return fProvider->requestEvent(event, data, fRefCon); }
130
131IOReturn IOSerialStreamSync::
132enqueueEvent(UInt32 event, UInt32 data, bool sleep)
133    { return fProvider->enqueueEvent(event, data, sleep, fRefCon); }
134
135IOReturn IOSerialStreamSync::
136dequeueEvent(UInt32 *event, UInt32 *data, bool sleep)
137    { return fProvider->dequeueEvent(event, data, sleep, fRefCon); }
138
139IOReturn IOSerialStreamSync::
140enqueueData(UInt8 *buffer,  UInt32 size, UInt32 *count, bool sleep)
141    { return fProvider->enqueueData(buffer, size, count, sleep, fRefCon); }
142
143IOReturn IOSerialStreamSync::
144dequeueData(UInt8 *buffer, UInt32 size, UInt32 *count, UInt32 min)
145    { return fProvider->dequeueData(buffer, size, count, min, fRefCon); }
146