summaryrefslogtreecommitdiff
authorzecke <zecke>2002-07-13 12:54:47 (UTC)
committer zecke <zecke>2002-07-13 12:54:47 (UTC)
commitd7f3722f9b7913731978437085b14cc2cccbfa24 (patch) (unidiff)
tree1b190105693609cc01d1ad9730e8925e957209c9
parent8be0a8e108eaf8ff99301aa175298ddeb48eae67 (diff)
downloadopie-d7f3722f9b7913731978437085b14cc2cccbfa24.zip
opie-d7f3722f9b7913731978437085b14cc2cccbfa24.tar.gz
opie-d7f3722f9b7913731978437085b14cc2cccbfa24.tar.bz2
LIB updates
Class IdList per Service can have more than one line
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/lib/parser.cc8
-rw-r--r--noncore/net/opietooth/lib/services.cc26
-rw-r--r--noncore/net/opietooth/lib/services.h13
3 files changed, 22 insertions, 25 deletions
diff --git a/noncore/net/opietooth/lib/parser.cc b/noncore/net/opietooth/lib/parser.cc
index 00ec84a..0699309 100644
--- a/noncore/net/opietooth/lib/parser.cc
+++ b/noncore/net/opietooth/lib/parser.cc
@@ -75,114 +75,112 @@ void Parser::parse( const QString& string) {
75 if (parseName( (*it) ) ) ;//continue; 75 if (parseName( (*it) ) ) ;//continue;
76 if (parseRecHandle( (*it) ) ) ;//continue; 76 if (parseRecHandle( (*it) ) ) ;//continue;
77 if (parseClassId( (*it) ) ) ;//continue; 77 if (parseClassId( (*it) ) ) ;//continue;
78 if (parseProtocol( (*it) ) ) ;//continue; 78 if (parseProtocol( (*it) ) ) ;//continue;
79 if (parseProfile( (*it) ) ) ;//continue; 79 if (parseProfile( (*it) ) ) ;//continue;
80 } 80 }
81 // missed the last one 81 // missed the last one
82 if (m_complete) { 82 if (m_complete) {
83 qWarning("adding"); 83 qWarning("adding");
84 if (!m_item.serviceName().isEmpty() ) 84 if (!m_item.serviceName().isEmpty() )
85 m_list.append(m_item ); 85 m_list.append(m_item );
86 } 86 }
87 QValueList<Services>::Iterator it2; 87 QValueList<Services>::Iterator it2;
88 88
89 if (m_list.isEmpty() ) 89 if (m_list.isEmpty() )
90 qWarning("m_list is empty"); 90 qWarning("m_list is empty");
91 for (it2 = m_list.begin(); it2 != m_list.end(); ++it2 ) { 91 for (it2 = m_list.begin(); it2 != m_list.end(); ++it2 ) {
92 qWarning("name %s", (*it2).serviceName().latin1() ); 92 qWarning("name %s", (*it2).serviceName().latin1() );
93 } 93 }
94} 94}
95bool Parser::parseName( const QString& str) { 95bool Parser::parseName( const QString& str) {
96 if (str.startsWith("Service Name:") ) { 96 if (str.startsWith("Service Name:") ) {
97 m_item.setServiceName( str.mid(13).stripWhiteSpace() ); 97 m_item.setServiceName( str.mid(13).stripWhiteSpace() );
98 qWarning(m_item.serviceName() ); 98 qWarning(m_item.serviceName() );
99 return true; 99 return true;
100 } 100 }
101 return false; 101 return false;
102} 102}
103bool Parser::parseRecHandle( const QString& str) { 103bool Parser::parseRecHandle( const QString& str) {
104 if (str.startsWith("Service RecHandle:" ) ) { 104 if (str.startsWith("Service RecHandle:" ) ) {
105 QString out = str.mid(18 ).stripWhiteSpace(); 105 QString out = str.mid(18 ).stripWhiteSpace();
106 qWarning("out %s", out.latin1() ); 106 qWarning("out %s", out.latin1() );
107 int value = out.mid(2).toInt(&m_ok, 16 ); 107 int value = out.mid(2).toInt(&m_ok, 16 );
108 if (m_ok && (value != -1) ) 108 if (m_ok && (value != -1) )
109 m_complete = true; 109 m_complete = true;
110 else 110 else
111 m_complete = false; 111 m_complete = false;
112 qWarning("rec handle %d", value); 112 qWarning("rec handle %d", value);
113 m_item.setRecHandle( value ); 113 m_item.setRecHandle( value );
114 return true; 114 return true;
115 115
116 } 116 }
117 return false; 117 return false;
118} 118}
119bool Parser::parseClassId( const QString& str) { 119bool Parser::parseClassId( const QString& str) {
120 if (str.startsWith("Service Class ID List:") ) { 120 if (str.startsWith("Service Class ID List:") ) {
121 m_classOver = true; 121 m_classOver = true;
122 return true; 122 return true;
123 }else if ( m_classOver ) { // ok now are the informations in place 123 }else if ( m_classOver && str.startsWith(" " ) ){ // ok now are the informations in place
124 124
125 m_classOver = false;
126 125
127 // "Obex Object Push" (0x1105) 126 // "Obex Object Push" (0x1105)
128 // find backwards the " and the from 0 to pos and the mid pos+1 127 // find backwards the " and the from 0 to pos and the mid pos+1
129 // then stripWhiteSpace add name replace '"' with "" 128 // then stripWhiteSpace add name replace '"' with ""
130 // and then convert 0x1105 toInt() 129 // and then convert 0x1105 toInt()
131 QString classes; 130 QString classes;
132 int ids; 131 int ids;
133 ids = convert( str, classes ); 132 ids = convert( str, classes );
134 qWarning("ids %d", ids ); 133 qWarning("ids %d", ids );
135 m_item.setClassIdList( classes ); 134 m_item.insertClassId( ids, classes );
136 m_item.setClassIdList( ids );
137 135
138 return true; 136 return true;
139 }else 137 }else
140 m_classOver = true; 138 m_classOver = false;
141 return false; 139 return false;
142} 140}
143bool Parser::parseProtocol( const QString& str) { 141bool Parser::parseProtocol( const QString& str) {
144 if (str.startsWith("Protocol Descriptor List:") ) { 142 if (str.startsWith("Protocol Descriptor List:") ) {
145 m_protocolOver = true; 143 m_protocolOver = true;
146 m_protocolAdded = false; 144 m_protocolAdded = false;
147 return true; 145 return true;
148 146
149 }else if (m_protocolOver && str.startsWith(" ") ) { // "L2CAP" (0x0100) 147 }else if (m_protocolOver && str.startsWith(" ") ) { // "L2CAP" (0x0100)
150 qWarning("double protocol filter"); 148 qWarning("double protocol filter");
151 149
152 if (!m_protocolAdded ) { // the protocol does neither supply a channel nor port so add it now 150 if (!m_protocolAdded ) { // the protocol does neither supply a channel nor port so add it now
153 Services::ProtocolDescriptor desc( m_protName, m_protId ); 151 Services::ProtocolDescriptor desc( m_protName, m_protId );
154 m_item.insertProtocolDescriptor( desc ); 152 m_item.insertProtocolDescriptor( desc );
155 } 153 }
156 m_protocolAdded = false; 154 m_protocolAdded = false;
157 { // the find function 155 { // the find function
158 m_protId = convert(str, m_protName ); 156 m_protId = convert(str, m_protName );
159 } 157 }
160 return true; 158 return true;
161 }else if (m_protocolOver && str.startsWith(" ") ) { 159 }else if (m_protocolOver && str.startsWith(" ") ) {
162 qWarning("tripple protocol filter"); 160 qWarning("tripple protocol filter");
163 m_protocolAdded = true; 161 m_protocolAdded = true;
164 QString dummy = str.stripWhiteSpace(); 162 QString dummy = str.stripWhiteSpace();
165 int pos = dummy.findRev(':'); 163 int pos = dummy.findRev(':');
166 if ( pos > -1 ) { 164 if ( pos > -1 ) {
167 int port = dummy.mid(pos+1 ).stripWhiteSpace().toInt(); 165 int port = dummy.mid(pos+1 ).stripWhiteSpace().toInt();
168 Services::ProtocolDescriptor desc( m_protName, m_protId, port ); 166 Services::ProtocolDescriptor desc( m_protName, m_protId, port );
169 m_item.insertProtocolDescriptor( desc ); 167 m_item.insertProtocolDescriptor( desc );
170 } 168 }
171 return true; 169 return true;
172 }else if (m_protocolOver ) { 170 }else if (m_protocolOver ) {
173 m_protocolOver = false; 171 m_protocolOver = false;
174 } 172 }
175 return false; 173 return false;
176} 174}
177bool Parser::parseProfile( const QString& str) { 175bool Parser::parseProfile( const QString& str) {
178 if (str.startsWith("Profile Descriptor List:") ) { 176 if (str.startsWith("Profile Descriptor List:") ) {
179 m_profOver = true; 177 m_profOver = true;
180 }else if ( m_profOver && str.startsWith(" ") ) { 178 }else if ( m_profOver && str.startsWith(" ") ) {
181 m_profId = convert( str, m_profName ); 179 m_profId = convert( str, m_profName );
182 }else if ( m_profOver && str.startsWith(" ") ) { 180 }else if ( m_profOver && str.startsWith(" ") ) {
183 // now find 181 // now find
184 int pos = str.findRev(':'); 182 int pos = str.findRev(':');
185 if ( pos > 0 ) { 183 if ( pos > 0 ) {
186 int dummy = str.mid(pos+1 ).stripWhiteSpace().toInt(); 184 int dummy = str.mid(pos+1 ).stripWhiteSpace().toInt();
187 qWarning("dummyInt:%d", dummy ); 185 qWarning("dummyInt:%d", dummy );
188 Services::ProfileDescriptor desc( m_profName, m_profId, dummy ); 186 Services::ProfileDescriptor desc( m_profName, m_profId, dummy );
diff --git a/noncore/net/opietooth/lib/services.cc b/noncore/net/opietooth/lib/services.cc
index 93ee70a..23b760b 100644
--- a/noncore/net/opietooth/lib/services.cc
+++ b/noncore/net/opietooth/lib/services.cc
@@ -68,115 +68,113 @@ Services::ProtocolDescriptor::~ProtocolDescriptor(){
68} 68}
69QString Services::ProtocolDescriptor::name() const{ 69QString Services::ProtocolDescriptor::name() const{
70 return m_name; 70 return m_name;
71} 71}
72void Services::ProtocolDescriptor::setName(const QString& name ){ 72void Services::ProtocolDescriptor::setName(const QString& name ){
73 m_name = name; 73 m_name = name;
74} 74}
75int Services::ProtocolDescriptor::id()const { 75int Services::ProtocolDescriptor::id()const {
76 return m_number; 76 return m_number;
77} 77}
78void Services::ProtocolDescriptor::setId( int id ){ 78void Services::ProtocolDescriptor::setId( int id ){
79 m_number = id; 79 m_number = id;
80} 80}
81int Services::ProtocolDescriptor::port()const { 81int Services::ProtocolDescriptor::port()const {
82 return m_channel; 82 return m_channel;
83} 83}
84void Services::ProtocolDescriptor::setPort( int port ){ 84void Services::ProtocolDescriptor::setPort( int port ){
85 m_channel = port; 85 m_channel = port;
86} 86}
87Services::ProtocolDescriptor &Services::ProtocolDescriptor::operator=( const Services::ProtocolDescriptor& desc ){ 87Services::ProtocolDescriptor &Services::ProtocolDescriptor::operator=( const Services::ProtocolDescriptor& desc ){
88 m_name = desc.m_name; 88 m_name = desc.m_name;
89 m_channel = desc.m_channel; 89 m_channel = desc.m_channel;
90 m_number = desc.m_number; 90 m_number = desc.m_number;
91 return *this; 91 return *this;
92} 92}
93bool operator==( const Services::ProtocolDescriptor &first, 93bool operator==( const Services::ProtocolDescriptor &first,
94 const Services::ProtocolDescriptor &second ){ 94 const Services::ProtocolDescriptor &second ){
95 if( ( first.name() == second.name() ) && 95 if( ( first.name() == second.name() ) &&
96 ( first.id() == second.id() ) && 96 ( first.id() == second.id() ) &&
97 ( first.port() == second.port() ) ) 97 ( first.port() == second.port() ) )
98 return true; 98 return true;
99 99
100 return false; 100 return false;
101 101
102} 102}
103 103
104Services::Services(){ 104Services::Services(){
105 105
106} 106}
107Services::Services(const Services& service ){ 107Services::Services(const Services& service ){
108 (*this) = service; 108 (*this) = service;
109} 109}
110Services::~Services(){ 110Services::~Services(){
111 111
112} 112}
113Services &Services::operator=( const Services& ser){ 113Services &Services::operator=( const Services& ser){
114 m_name = ser.m_name; 114 m_name = ser.m_name;
115 m_recHandle = ser.m_recHandle; 115 m_recHandle = ser.m_recHandle;
116 m_classList = ser.m_classList; 116 m_classIds = ser.m_classIds;
117 m_classId = ser.m_classId;
118 m_protocols = ser.m_protocols; 117 m_protocols = ser.m_protocols;
119 m_profiles = ser.m_profiles; 118 m_profiles = ser.m_profiles;
120 return *this; 119 return *this;
121} 120}
122bool operator==( const Services& one, 121bool operator==( const Services& one,
123 const Services& two){ 122 const Services& two){
124 if ( ( one.recHandle() == two.recHandle() ) && 123 if ( ( one.recHandle() == two.recHandle() ) &&
125 ( one.classIdListInt() == two.classIdListInt() ) &&
126 ( one.serviceName() == two.serviceName() ) && 124 ( one.serviceName() == two.serviceName() ) &&
127 ( one.classIdList() == two.classIdList() ) &&
128 ( one.protocolDescriptorList() == two.protocolDescriptorList() ) && 125 ( one.protocolDescriptorList() == two.protocolDescriptorList() ) &&
129 ( one.profileDescriptor() == two.profileDescriptor() ) ) 126 ( one.profileDescriptor() == two.profileDescriptor() )
127 /* ( one.classIdList() == two.classIdList() ) */ )
130 return true; 128 return true;
131 return false; 129 return false;
132} 130}
133QString Services::serviceName() const{ 131QString Services::serviceName() const{
134 return m_name; 132 return m_name;
135} 133}
136void Services::setServiceName( const QString& service ){ 134void Services::setServiceName( const QString& service ){
137 m_name = service; 135 m_name = service;
138} 136}
139int Services::recHandle() const{ 137int Services::recHandle() const{
140 return m_recHandle; 138 return m_recHandle;
141} 139}
142void Services::setRecHandle( int handle){ 140void Services::setRecHandle( int handle){
143 m_recHandle = handle; 141 m_recHandle = handle;
144} 142}
145QString Services::classIdList() const{ 143QMap<int, QString> Services::classIdList()const {
146 return m_classList; 144 return m_classIds;
145};
146void Services::insertClassId( int id, const QString& str ) {
147 m_classIds.insert( id, str );
147} 148}
148void Services::setClassIdList( const QString& str){ 149void Services::removeClassId(int id) {
149 m_classList = str; 150 m_classIds.remove( id );
150} 151}
151int Services::classIdListInt() const{ 152void Services::clearClassId() {
152 return m_classId; 153 m_classIds.clear();
153}
154void Services::setClassIdList(int id){
155 m_classId = id;
156} 154}
157void Services::insertProtocolDescriptor( const ProtocolDescriptor& prot){ 155void Services::insertProtocolDescriptor( const ProtocolDescriptor& prot){
158 m_protocols.append( prot ); 156 m_protocols.append( prot );
159} 157}
160void Services::clearProtocolDescriptorList(){ 158void Services::clearProtocolDescriptorList(){
161 m_protocols.clear(); 159 m_protocols.clear();
162} 160}
163void Services::removeProtocolDescriptor( const ProtocolDescriptor& prot){ 161void Services::removeProtocolDescriptor( const ProtocolDescriptor& prot){
164 m_protocols.remove( prot ); 162 m_protocols.remove( prot );
165} 163}
166Services::ProtocolDescriptor::ValueList Services::protocolDescriptorList()const{ 164Services::ProtocolDescriptor::ValueList Services::protocolDescriptorList()const{
167 return m_protocols; 165 return m_protocols;
168} 166}
169 167
170 168
171void Services::insertProfileDescriptor( const ProfileDescriptor& prof){ 169void Services::insertProfileDescriptor( const ProfileDescriptor& prof){
172 m_profiles.append( prof ); 170 m_profiles.append( prof );
173} 171}
174void Services::clearProfileDescriptorList(){ 172void Services::clearProfileDescriptorList(){
175 m_profiles.clear(); 173 m_profiles.clear();
176} 174}
177void Services::removeProfileDescriptor( const ProfileDescriptor& prof){ 175void Services::removeProfileDescriptor( const ProfileDescriptor& prof){
178 m_profiles.remove(prof ); 176 m_profiles.remove(prof );
179} 177}
180Services::ProfileDescriptor::ValueList Services::profileDescriptor() const{ 178Services::ProfileDescriptor::ValueList Services::profileDescriptor() const{
181 return m_profiles; 179 return m_profiles;
182} 180}
diff --git a/noncore/net/opietooth/lib/services.h b/noncore/net/opietooth/lib/services.h
index 881d383..7cce5e1 100644
--- a/noncore/net/opietooth/lib/services.h
+++ b/noncore/net/opietooth/lib/services.h
@@ -1,52 +1,53 @@
1 1
2#ifndef OpieToothServices_H 2#ifndef OpieToothServices_H
3#define OpieToothServices_H 3#define OpieToothServices_H
4 4
5#include <qmap.h>
5#include <qvaluelist.h> 6#include <qvaluelist.h>
6 7
7namespace OpieTooth { 8namespace OpieTooth {
8 /** 9 /**
9 * Services lets shows you all available services 10 * Services lets shows you all available services
10 * on a remote device 11 * on a remote device
11 */ 12 */
12 class Services { 13 class Services {
13 14
14 /** The profile descriptor 15 /** The profile descriptor
15 * 16 *
16 */ 17 */
17 class ProfileDescriptor{ 18 class ProfileDescriptor{
18 public: 19 public:
19 /** typedef */ 20 /** typedef */
20 typedef QValueList<ProfileDescriptor> ValueList; 21 typedef QValueList<ProfileDescriptor> ValueList;
21 /** c'tor for QValueList */ 22 /** c'tor for QValueList */
22 ProfileDescriptor(); 23 ProfileDescriptor();
23 /** 24 /**
24 * c'tor 25 * c'tor
25 * @param id The id or name ("Lan Access Using PPP") 26 * @param id The id or name ("Lan Access Using PPP")
26 * @param idInt The id as uint ( 0x1102 ) 27 * @param idInt The id as uint ( 0x1102 )
27 * @param version Version of the Profile ( 1 ) 28 * @param version Version of the Profile ( 1 )
28 */ 29 */
29 ProfileDescriptor(const QString &id, int idInt, int version ); 30 ProfileDescriptor(const QString &id, int idInt, int version );
30 /** 31 /**
31 * copy c'tor 32 * copy c'tor
32 */ 33 */
33 ProfileDescriptor(const ProfileDescriptor& ); 34 ProfileDescriptor(const ProfileDescriptor& );
34 /** 35 /**
35 * returns the id 36 * returns the id
36 */ 37 */
37 QString id()const; 38 QString id()const;
38 /** 39 /**
39 * sets the id 40 * sets the id
40 */ 41 */
41 void setId(const QString& id); 42 void setId(const QString& id);
42 43
43 /** 44 /**
44 * sets the int id 45 * sets the int id
45 */ 46 */
46 void setId(int ); 47 void setId(int );
47 /** 48 /**
48 * reutns the id as int 49 * reutns the id as int
49 */ 50 */
50 int idInt()const; 51 int idInt()const;
51 /** 52 /**
52 * returns the version 53 * returns the version
@@ -71,73 +72,73 @@ namespace OpieTooth {
71 }; 72 };
72 /** 73 /**
73 * Protocol Descriptor 74 * Protocol Descriptor
74 */ 75 */
75 class ProtocolDescriptor { 76 class ProtocolDescriptor {
76 public: 77 public:
77 typedef QValueList<ProtocolDescriptor> ValueList; 78 typedef QValueList<ProtocolDescriptor> ValueList;
78 /** 79 /**
79 * c'tor 80 * c'tor
80 */ 81 */
81 ProtocolDescriptor(); 82 ProtocolDescriptor();
82 /** 83 /**
83 * name 84 * name
84 * number 85 * number
85 * channel/port 86 * channel/port
86 */ 87 */
87 ProtocolDescriptor(const QString&, int, int port = -1 ); // Q_UINT8 ? 88 ProtocolDescriptor(const QString&, int, int port = -1 ); // Q_UINT8 ?
88 ProtocolDescriptor(const ProtocolDescriptor& ); 89 ProtocolDescriptor(const ProtocolDescriptor& );
89 ~ProtocolDescriptor(); 90 ~ProtocolDescriptor();
90 QString name()const; 91 QString name()const;
91 void setName(const QString& ); 92 void setName(const QString& );
92 int id()const; 93 int id()const;
93 void setId(int ); 94 void setId(int );
94 int port()const; 95 int port()const;
95 void setPort(int ); 96 void setPort(int );
96 ProtocolDescriptor &operator=( const ProtocolDescriptor& ); 97 ProtocolDescriptor &operator=( const ProtocolDescriptor& );
97 //friend bool operator==( const ProtocolDescriptor&, 98 //friend bool operator==( const ProtocolDescriptor&,
98 // const ProtocolDescriptor& ); 99 // const ProtocolDescriptor& );
99 private: 100 private:
100 QString m_name; 101 QString m_name;
101 int m_number; 102 int m_number;
102 int m_channel; 103 int m_channel;
103 }; 104 };
104 105
105 public: 106 public:
106 typedef QValueList<Services> ValueList; 107 typedef QValueList<Services> ValueList;
107 Services(); 108 Services();
108 Services(const Services& service ); 109 Services(const Services& service );
109 ~Services(); 110 ~Services();
110 111
111 Services &operator=( const Services& ); 112 Services &operator=( const Services& );
112 friend bool operator==(const Services&, const Services& ); 113 friend bool operator==(const Services&, const Services& );
113 QString serviceName()const; 114 QString serviceName()const;
114 void setServiceName( const QString& service ); 115 void setServiceName( const QString& service );
115 116
116 int recHandle()const; 117 int recHandle()const;
117 void setRecHandle( int ); 118 void setRecHandle( int );
118 119
119 QString classIdList()const; 120
120 void setClassIdList( const QString& ); 121 QMap<int, QString> classIdList()const;
121 int classIdListInt()const; 122 void insertClassId( int id, const QString& className );
122 void setClassIdList(int ); 123 void removeClassId( int id );
124 void clearClassId();
123 125
124 void insertProtocolDescriptor(const ProtocolDescriptor& ); 126 void insertProtocolDescriptor(const ProtocolDescriptor& );
125 void clearProtocolDescriptorList(); 127 void clearProtocolDescriptorList();
126 void removeProtocolDescriptor( const ProtocolDescriptor& ); 128 void removeProtocolDescriptor( const ProtocolDescriptor& );
127 ProtocolDescriptor::ValueList protocolDescriptorList()const; 129 ProtocolDescriptor::ValueList protocolDescriptorList()const;
128 130
129 void insertProfileDescriptor( const ProfileDescriptor& ); 131 void insertProfileDescriptor( const ProfileDescriptor& );
130 void clearProfileDescriptorList(); 132 void clearProfileDescriptorList();
131 void removeProfileDescriptor(const ProfileDescriptor& ); 133 void removeProfileDescriptor(const ProfileDescriptor& );
132 ProfileDescriptor::ValueList profileDescriptor()const; 134 ProfileDescriptor::ValueList profileDescriptor()const;
133 135
134 private: 136 private:
137 QMap<int, QString> m_classIds;
135 QString m_name; 138 QString m_name;
136 int m_recHandle; 139 int m_recHandle;
137 QString m_classList;
138 int m_classId;
139 QValueList<ProfileDescriptor> m_profiles; 140 QValueList<ProfileDescriptor> m_profiles;
140 QValueList<ProtocolDescriptor> m_protocols; 141 QValueList<ProtocolDescriptor> m_protocols;
141 }; 142 };
142}; 143};
143#endif 144#endif