// ///////////////////////////////////////////////////////////////////////////////
// Copyright
(C
) 2010, Frank Blumenberg
//
// See License.
txt for complete licensing and attribution information.
// Permission
is hereby granted, free of charge, to
any person obtaining a copy
// of this software and associated documentation files
(the "Software"
), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software
is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
all
// copies or substantial portions of the Software.
//
// THE SOFTWARE
IS PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
// ///////////////////////////////////////////////////////////////////////////////
#import "ChannelsViewController.
h"
#import "ChannelsViewCell.
h"
#import "MKConnectionController.
h"
#import "NSData+MKCommandEncode.
h"
#import "MKDatatypes.
h"
#import "MKDataConstants.
h"
#define kAnalogLabelFile @"AnalogLables.
plist"
@interface ChannelsViewController
(Private
)
-
(void
) channelsValueNotification:
(NSNotification *
)aNotification;
-
(void
) requestChannelData;
@
end
// ///////////////////////////////////////////////////////////////////////////////
@implementation ChannelsViewController
@synthesize updateTimer = _updateTimer;
#pragma mark -
#pragma mark
View lifecycle
-
(void
) viewDidLoad
{
[super viewDidLoad
];
}
-
(void
) viewWillAppear:
(BOOL
)animated
{
NSNotificationCenter * nc =
[NSNotificationCenter defaultCenter
];
[nc addObserver:self
selector:@selector
(channelsValueNotification:
)
name:MKChannelValuesNotification
object:nil
];
[super viewWillAppear:animated
];
self.
updateTimer =
[NSTimer scheduledTimerWithTimeInterval:
0.5
target:self
selector:@selector
(requestChannelData
)
userInfo:nil
repeats:YES
];
[self requestChannelData
];
}
-
(void
) viewDidDisappear:
(BOOL
)animated
{
[self.
updateTimer invalidate
];
self.
updateTimer=nil;
[_updateTimer release
];
NSNotificationCenter * nc =
[NSNotificationCenter defaultCenter
];
[nc removeObserver:self
];
[super viewDidDisappear:animated
];
}
#pragma mark -
#pragma mark Memory management
-
(void
) didReceiveMemoryWarning
{
[super didReceiveMemoryWarning
];
}
-
(void
) viewDidUnload
{
}
-
(void
) dealloc
{
[super dealloc
];
}
// ////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
-
(void
) requestChannelData
{
MKConnectionController * cCtrl =
[MKConnectionController sharedMKConnectionController
];
NSData * data =
[NSData dataWithCommand:MKCommandChannelsValueRequest
forAddress:MKAddressFC
payloadWithBytes:
NULL
length:
0];
[cCtrl sendRequest:data
];
}
-
(void
) channelsValueNotification:
(NSNotification *
)aNotification
{
NSData* data =
[[aNotification userInfo
] objectForKey:kMKDataKeyChannels
];
if([data
length]>=sizeof
(channelValues
))
memcpy
(channelValues,
[data bytes
], sizeof
(channelValues
));
[self.
tableView reloadData
];
}
#pragma mark -
#pragma mark Table
view data source
-
(NSInteger
) numberOfSectionsInTableView:
(UITableView *
)tableView
{
//
Return the number of sections.
return 1;
}
-
(NSInteger
) tableView:
(UITableView *
)tableView numberOfRowsInSection:
(NSInteger
)section
{
return sizeof
(channelValues
);
}
-
(UITableViewCell *
) tableView:
(UITableView *
)tableView cellForRowAtIndexPath:
(NSIndexPath *
)indexPath
{
static NSString * CellIdentifier = @"ChannelsTableCell";
UITableViewCell *
cell =
[tableView dequeueReusableCellWithIdentifier:CellIdentifier
];
if (cell == nil
) {
cell =
[[[ChannelsViewCell alloc
] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier
] autorelease
];
}
cell.
textLabel.
text =
[NSString stringWithFormat:@"Channel
%d",indexPath.row];
[(ChannelsViewCell*
)cell setChannelValue:channelValues
[indexPath.
row]];
cell.
detailTextLabel.
hidden = YES;//.
text =
[NSString stringWithFormat:@"
%d",channelValues[indexPath.row]];
return cell;
}
#pragma mark -
#pragma mark Table
view delegate
-
(NSIndexPath *
) tableView:
(UITableView *
)tableView willSelectRowAtIndexPath:
(NSIndexPath *
)indexPath
{
return nil;
}
@
end