|
BL3 SDK
0.0.1
Borderlands 3 Class Documentation
|
#include <BL3_MovieScene_classes.hpp>
Public Member Functions | |
| void | Stop () |
| void | SetTimeRange (float StartTime, float Duration) |
| void | SetPlayRate (float PlayRate) |
| void | SetPlaybackRange (float NewStartTime, float NewEndTime) |
| void | SetPlaybackPosition (float NewPlaybackPosition) |
| void | SetFrameRate (const struct FFrameRate &FrameRate) |
| void | SetFrameRange (int StartFrame, int Duration) |
| void | SetEnableUpdateRateOptimizations (bool Enable) |
| void | SetDisableCameraCuts (bool bInDisableCameraCuts) |
| void | ScrubToSeconds (float TimeInSeconds) |
| void | ScrubToFrame (const struct FFrameTime &NewPosition) |
| void | Scrub () |
| void | PlayToSeconds (float TimeInSeconds) |
| void | PlayToFrame (const struct FFrameTime &NewPosition) |
| void | PlayReverse () |
| void | PlayLooping (int NumLoops) |
| void | Play () |
| void | Pause () |
| void | JumpToSeconds (float TimeInSeconds) |
| void | JumpToPosition (float NewPlaybackPosition) |
| void | JumpToFrame (const struct FFrameTime &NewPosition) |
| bool | IsReversed () |
| bool | IsPlaying () |
| bool | IsPaused () |
| void | GoToEndAndStop () |
| struct FQualifiedFrameTime | GetStartTime () |
| float | GetPlayRate () |
| float | GetPlaybackStart () |
| float | GetPlaybackPosition () |
| float | GetPlaybackEnd () |
| float | GetLength () |
| struct FFrameRate | GetFrameRate () |
| int | GetFrameDuration () |
| struct FQualifiedFrameTime | GetEndTime () |
| bool | GetEnableUpdateRateOptimizations () |
| struct FQualifiedFrameTime | GetDuration () |
| bool | GetDisableCameraCuts () |
| struct FQualifiedFrameTime | GetCurrentTime () |
| TArray< class UObject * > | GetBoundObjects (const struct FMovieSceneObjectBindingID &ObjectBinding) |
| void | ChangePlaybackDirection () |
| Public Member Functions inherited from UObject | |
| std::string | GetName () const |
| std::string | GetFullName () const |
| bool | IsA (UClass *cmp) const |
| void | ProcessEvent (class UFunction *function, void *parms) |
| void | ExecuteUbergraph (int EntryPoint) |
Static Public Member Functions | |
| static UClass * | StaticClass () |
| Static Public Member Functions inherited from UObject | |
| static FChunkedFixedUObjectArray & | GetGlobalObjects () |
| template<typename T > | |
| static T * | FindObject (const std::string &name) |
| static UClass * | FindClass (const std::string &name) |
| template<typename T > | |
| static T * | GetObjectCasted (std::size_t index) |
| static UClass * | StaticClass () |
Public Attributes | |
| unsigned char | UnknownData00 [0x350] |
| struct FScriptMulticastDelegate | OnPlay |
| struct FScriptMulticastDelegate | OnPlayReverse |
| struct FScriptMulticastDelegate | OnStop |
| struct FScriptMulticastDelegate | OnPause |
| struct FScriptMulticastDelegate | OnFinished |
| TEnumAsByte< EMovieScenePlayerStatus > | Status |
| unsigned char | UnknownData01 [0x3] |
| unsigned char | bReversePlayback: 1 |
| unsigned char | UnknownData02 [0xB] |
| class UMovieSceneSequence * | Sequence |
| struct FFrameNumber | StartTime |
| int | DurationFrames |
| int | CurrentNumLoops |
| unsigned char | UnknownData03 [0x14] |
| struct FMovieSceneSequencePlaybackSettings | PlaybackSettings |
| unsigned char | UnknownData04 [0x3A8] |
| Public Attributes inherited from UObject | |
| void * | VTableObject |
| int32_t | ObjectFlags |
| int32_t | InternalIndex |
| class UClass * | Class |
| FName | Name |
| class UObject * | Outer |
Additional Inherited Members | |
| Static Public Attributes inherited from UObject | |
| static FUObjectArray * | GObjects |
| void ChangePlaybackDirection | ( | ) |
| TArray<class UObject*> GetBoundObjects | ( | const struct FMovieSceneObjectBindingID & | ObjectBinding | ) |
| struct FQualifiedFrameTime GetCurrentTime | ( | ) |
| bool GetDisableCameraCuts | ( | ) |
| struct FQualifiedFrameTime GetDuration | ( | ) |
| bool GetEnableUpdateRateOptimizations | ( | ) |
| struct FQualifiedFrameTime GetEndTime | ( | ) |
| int GetFrameDuration | ( | ) |
| struct FFrameRate GetFrameRate | ( | ) |
| float GetLength | ( | ) |
| float GetPlaybackEnd | ( | ) |
| float GetPlaybackPosition | ( | ) |
| float GetPlaybackStart | ( | ) |
| float GetPlayRate | ( | ) |
| struct FQualifiedFrameTime GetStartTime | ( | ) |
| void GoToEndAndStop | ( | ) |
| bool IsPaused | ( | ) |
| bool IsPlaying | ( | ) |
| bool IsReversed | ( | ) |
| void JumpToFrame | ( | const struct FFrameTime & | NewPosition | ) |
| void JumpToPosition | ( | float | NewPlaybackPosition | ) |
| void JumpToSeconds | ( | float | TimeInSeconds | ) |
| void Pause | ( | ) |
| void Play | ( | ) |
| void PlayLooping | ( | int | NumLoops | ) |
| void PlayReverse | ( | ) |
| void PlayToFrame | ( | const struct FFrameTime & | NewPosition | ) |
| void PlayToSeconds | ( | float | TimeInSeconds | ) |
| void Scrub | ( | ) |
| void ScrubToFrame | ( | const struct FFrameTime & | NewPosition | ) |
| void ScrubToSeconds | ( | float | TimeInSeconds | ) |
| void SetDisableCameraCuts | ( | bool | bInDisableCameraCuts | ) |
| void SetEnableUpdateRateOptimizations | ( | bool | Enable | ) |
| void SetFrameRange | ( | int | StartFrame, |
| int | Duration | ||
| ) |
| void SetFrameRate | ( | const struct FFrameRate & | FrameRate | ) |
| void SetPlaybackPosition | ( | float | NewPlaybackPosition | ) |
| void SetPlaybackRange | ( | float | NewStartTime, |
| float | NewEndTime | ||
| ) |
| void SetPlayRate | ( | float | PlayRate | ) |
| void SetTimeRange | ( | float | StartTime, |
| float | Duration | ||
| ) |
|
inlinestatic |
| void Stop | ( | ) |
| unsigned char bReversePlayback |
| int CurrentNumLoops |
| int DurationFrames |
| struct FScriptMulticastDelegate OnFinished |
| struct FScriptMulticastDelegate OnPause |
| struct FScriptMulticastDelegate OnPlay |
| struct FScriptMulticastDelegate OnPlayReverse |
| struct FScriptMulticastDelegate OnStop |
| struct FMovieSceneSequencePlaybackSettings PlaybackSettings |
| class UMovieSceneSequence* Sequence |
| struct FFrameNumber StartTime |
| TEnumAsByte<EMovieScenePlayerStatus> Status |
| unsigned char UnknownData00[0x350] |
| unsigned char UnknownData01[0x3] |
| unsigned char UnknownData02[0xB] |
| unsigned char UnknownData03[0x14] |
| unsigned char UnknownData04[0x3A8] |


Stay in the loop about everything happening in your neighborhood. From contact information of different handyman to meeting announcements or even alerts.


India spinners star in 5-0 series sweep of West Indies
WI v Ind, 5th WT20I, report
Half-centuries for Veda Krishnamurthy and Jemimah Rodrigues, and quality spin bowling led by Anuja Patil's 2/3, handed West Indies Women a crushing 61-run defeat in the final T20I.
Rodrigues and Krishnamurthy combined for a third-wicket stand of 117, lifting India from 17/2 to post 134/3 at the Providence Stadium in Guyana on Wednesday, 20 November. With the spinners again proving a handful for the depleted West Indies side, the hosts could get no further than 73/7, conceding the series 5-0.
West Indies shuffled their batting order, pushing Hayley Matthews down the order. Natasha McLean took Mansi Joshi for a six on the second ball of the chase, but the innings unravelled quickly after the promising start.
Patil struck twice with the new ball in her second over, McLean caught in the deep and Chedean Nation trapped in front. The West Indies innings never got going after that, with all of Radha Yadav, Poonam Yadav and Harleen Deol taking a wicket, while pace bowler Pooja Vastrakar had the dangerous Matthews bowled.
Earlier, Smriti Mandhana, captaining in place of Harmanpreet Kaur, won the toss, but had less success with the bat, falling in the fourth over as India slipped to 17/2. After a delay when the floodlights were fixed, Rodrigues and Krishnamurthy rebuilt steadily on a tricky track for batting. Seeing out the Powerplay, the duo went on the attack against Chinelle Henry.
Krishnamurthy survived a couple of chances to get to her fifty in 43 balls. It was her second half-century in 68 matches, and a much-awaited one, coming three years after her last one. She finished on a career-high 57* in 48 balls.
Rodrigues reached her milestone soon after in 55 balls – her sixth half-century in the format – even as the duo posted India Women's highest third-wicket stand in T20Is. They gave the innings a strong finish without doing anything flashy, and the total proved to be well beyond the hosts' reach.


|
Skill Description Worked Examples Misconceptions Status |
||||
|---|---|---|---|---|
| <[$ctrl.getSerialNumberForSkill($index)]>. |
<[skill.description]>
Unassigned
<[skill.topicNames.join(', ')]>
|
<[skill.workedExamplesCount]> | <[skill.misconceptionCount]> | Assigned |


Get the best deal on products! All of the products on Hollymart are genuine. No strings attached!
Our products are 100% genuine. No strings attached!
Give us a call and we deliver at your doorstep.
All the trending items to keep you afresh.
Feel the difference. We just love our customers!


MGLMapView Class Reference
| Inherits from | UIView |
| Declared in | MGLMapView.h |
Overview
An MGLMapView object provides an embeddable map interface, similar to the one provided by Apple’s MapKit. You use this class to display map information and to manipulate the map contents from your application. You can center the map on a given coordinate, specify the size of the area you want to display, and style the features of the map to fit your application’s use case.
Use of MGLMapView requires a Mapbox API access token. Obtain an access token on the Mapbox account page. If you instantiate an MGLMapView from Interface Builder, rendering of the map won’t begin until the accessToken property has been set.
Warning: Please note that you are responsible for getting permission to use the map data, and for ensuring your use adheres to the relevant terms of use.
Tasks
Initializing a Map View
Accessing Map Properties
-
zoomEnabled
property -
scrollEnabled
property -
rotateEnabled
property -
compassView
property -
logoView
property -
attributionButton
property
Manipulating the Visible Portion of the Map
-
centerCoordinate
property -
– setCenterCoordinate:animated:
-
zoomLevel
property -
– setZoomLevel:animated:
-
– setCenterCoordinate:zoomLevel:animated:
-
visibleCoordinateBounds
property -
– setVisibleCoordinateBounds:animated:
-
– setVisibleCoordinateBounds:edgePadding:animated:
-
– setVisibleCoordinates:count:edgePadding:animated:
-
direction
property -
– setDirection:animated:
-
– resetNorth
Converting Map Coordinates
Styling the Map
-
styleID
property -
bundledStyleURLs
property -
styleURL
property -
styleClasses
property -
– hasStyleClass:
-
– addStyleClass:
-
– removeStyleClass:
Annotating the Map
-
annotations
property -
– addAnnotation:
-
– addAnnotations:
-
– removeAnnotation:
-
– removeAnnotations:
-
– dequeueReusableAnnotationImageWithIdentifier:
Managing Annotation Selections
Displaying the User's Location
-
showsUserLocation
property -
userLocationVisible
property -
userLocation
property -
userTrackingMode
property -
displayHeadingCalibration
property
Debugging
Properties
annotations
The complete list of annotations associated with the receiver. (read-only)
@property (nonatomic, readonly, nullable) NSArray<id<MGLAnnotation> > *annotations
Discussion
The complete list of annotations associated with the receiver. (read-only)
The objects in this array must adopt the MGLAnnotation protocol. If no annotations are associated with the map view, the value of this property is nil
.
Declared In
MGLMapView.h
attributionButton
The button shown in the lower-right of the map which when pressed displays the map attribution information.
@property (nonatomic, readonly) UIButton *attributionButton
Discussion
The button shown in the lower-right of the map which when pressed displays the map attribution information.
Declared In
MGLMapView.h
bundledStyleURLs
URLs of the styles bundled with the library.
@property (nonatomic, readonly) NSArray<NSURL*> *bundledStyleURLs
Discussion
URLs of the styles bundled with the library.
Declared In
MGLMapView.h
centerCoordinate
The map coordinate at the center of the map view.
@property (nonatomic) CLLocationCoordinate2D centerCoordinate
Discussion
The map coordinate at the center of the map view.
Changing the value in this property centers the map on the new coordinate without changing the current zoom level.
Changing the value of this property updates the map view immediately. If you want to animate the change, use the setCenterCoordinate:animated: method instead.
Declared In
MGLMapView.h
compassView
The compass image view shown in the upper-right when the map is rotated.
@property (nonatomic, readonly) UIImageView *compassView
Discussion
The compass image view shown in the upper-right when the map is rotated.
Declared In
MGLMapView.h
debugActive
A Boolean value that determines whether map debugging information is shown.
@property (nonatomic, getter=isDebugActive) BOOL debugActive
Discussion
A Boolean value that determines whether map debugging information is shown.
The default value of this property is NO
.
Declared In
MGLMapView.h
direction
The heading of the map (measured in degrees) relative to true north.
@property (nonatomic) CLLocationDirection direction
Discussion
The heading of the map (measured in degrees) relative to true north.
The value 0
means that the top edge of the map view corresponds to true north. The value 90
means the top of the map is pointing due east. The value 180
means the top of the map points due south, and so on.
Declared In
MGLMapView.h
displayHeadingCalibration
Whether the map view should display a heading calibration alert when necessary. The default value is YES
.
@property (nonatomic, assign) BOOL displayHeadingCalibration
Discussion
Whether the map view should display a heading calibration alert when necessary. The default value is YES
.
Declared In
MGLMapView.h
logoView
The Mapbox logo image view shown in the lower-left of the map.
@property (nonatomic, readonly) UIImageView *logoView
Discussion
The Mapbox logo image view shown in the lower-left of the map.
Declared In
MGLMapView.h
rotateEnabled
A Boolean value that determines whether the user may rotate the map.
@property (nonatomic, getter=isRotateEnabled) BOOL rotateEnabled
Discussion
A Boolean value that determines whether the user may rotate the map.
This property controls only user interactions with the map. If you set the value of this property to NO
, you may still rotate the map programmatically.
The default value of this property is YES
.
Declared In
MGLMapView.h
scrollEnabled
A Boolean value that determines whether the user may scroll around the map.
@property (nonatomic, getter=isScrollEnabled) BOOL scrollEnabled
Discussion
A Boolean value that determines whether the user may scroll around the map.
This property controls only user interactions with the map. If you set the value of this property to NO
, you may still change the map location programmatically.
The default value of this property is YES
.
Declared In
MGLMapView.h
selectedAnnotations
The annotations that are currently selected.
@property (nonatomic, copy) NSArray<id<MGLAnnotation> > *selectedAnnotations
Discussion
The annotations that are currently selected.
Assigning a new array to this property selects only the first annotation in the array.
Declared In
MGLMapView.h
showsUserLocation
A Boolean value indicating whether the map may display the user location.
@property (nonatomic, assign) BOOL showsUserLocation
Discussion
A Boolean value indicating whether the map may display the user location.
This property does not indicate whether the user’s position is actually visible on the map, only whether the map view is allowed to display it. To determine whether the user’s position is visible, use the userLocationVisible property. The default value of this property is NO
.
Setting this property to YES
causes the map view to use the Core Location framework to find the current location. As long as this property is YES
, the map view continues to track the user’s location and update it periodically.
On iOS 8 and above, your app must specify a value for NSLocationWhenInUseUsageDescription
or NSLocationAlwaysUsageDescription
in its Info.plist
to satisfy the requirements of the underlying Core Location framework when enabling this property.
Declared In
MGLMapView.h
styleClasses
Currently active style classes, represented as an array of string identifiers.
@property (nonatomic) NSArray<NSString*> *styleClasses
Discussion
Currently active style classes, represented as an array of string identifiers.
Declared In
MGLMapView.h
styleID
Mapbox ID of the style currently displayed in the receiver, or nil
if the style does not have an ID.
@property (nonatomic, nullable) NSString *styleID
Discussion
Mapbox ID of the style currently displayed in the receiver, or nil
if the style does not have an ID.
The style may lack an ID if it is located at an HTTP, HTTPS, or local file URL. Use styleURL
to get the URL in these cases.
To display the default style, set this property to nil
.
Declared In
MGLMapView.h
styleURL
URL of the style currently displayed in the receiver.
@property (nonatomic, null_resettable) NSURL *styleURL
Discussion
URL of the style currently displayed in the receiver.
The URL may be a full HTTP or HTTPS URL or a Mapbox URL indicating the style’s map ID (mapbox://<user.style>
).
To display the default style, set this property to nil
.
Declared In
MGLMapView.h
userLocation
Returns the annotation object indicating the user’s current location.
@property (nonatomic, readonly, nullable) MGLUserLocation *userLocation
Discussion
Returns the annotation object indicating the user’s current location.
Declared In
MGLMapView.h
userLocationVisible
A Boolean value indicating whether the device’s current location is visible in the map view. (read-only)
@property (nonatomic, assign, readonly, getter=isUserLocationVisible) BOOL userLocationVisible
Discussion
A Boolean value indicating whether the device’s current location is visible in the map view. (read-only)
Declared In
MGLMapView.h
userTrackingMode
The mode used to track the user location.
@property (nonatomic, assign) MGLUserTrackingMode userTrackingMode
Discussion
The mode used to track the user location.
Declared In
MGLMapView.h
visibleCoordinateBounds
The coordinate bounds visible in the receiver’s viewport.
@property (nonatomic) MGLCoordinateBounds visibleCoordinateBounds
Discussion
The coordinate bounds visible in the receiver’s viewport.
Changing the value of this property updates the receiver immediately. If you want to animate the change, call setVisibleCoordinateBounds:animated:
instead.
Declared In
MGLMapView.h
zoomEnabled
A Boolean value that determines whether the user may zoom the map.
@property (nonatomic, getter=isZoomEnabled) BOOL zoomEnabled
Discussion
A Boolean value that determines whether the user may zoom the map.
This property controls only user interactions with the map. If you set the value of this property to NO
, you may still change the map zoom programmatically.
The default value of this property is YES
.
Declared In
MGLMapView.h
zoomLevel
The zoom level of the map view.
@property (nonatomic) double zoomLevel
Discussion
The zoom level of the map view.
Changing the value in this property zooms the map in or out without changing the center coordinate. At zoom level 0, tiles cover the entire world map; at zoom level 1, tiles cover ¼ of the world; at zoom level 2, tiles cover 1/16 of the world, and so on.
Changing the value of this property updates the map view immediately. If you want to animate the change, use the setZoomLevel:animated: method instead.
Declared In
MGLMapView.h
Instance Methods
addAnnotation:
Adds the specified annotation to the map view.
- (void)addAnnotation:(id<MGLAnnotation>)annotation
Parameters
- annotation
The annotation object to add to the receiver. This object must conform to the MGLAnnotation protocol. The map view retains the specified object.
Discussion
Adds the specified annotation to the map view.
Declared In
MGLMapView.h
addAnnotations:
Adds an array of annotation objects to the map view.
- (void)addAnnotations:(NSArray<id<MGLAnnotation> > *)annotations
Parameters
- annotations
An array of annotation objects. Each object in the array must conform to the MGLAnnotation protocol. The map view retains the individual annotation objects.
Discussion
Adds an array of annotation objects to the map view.
Declared In
MGLMapView.h
addStyleClass:
Activates the style class with the given identifier.
- (void)addStyleClass:(NSString *)styleClass
Parameters
- styleClass
The style class to activate.
Discussion
Activates the style class with the given identifier.
Declared In
MGLMapView.h
convertCoordinate:toPointToView:
Converts a map coordinate to a point in the specified view.
- (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(nullable UIView *)view
Parameters
- coordinate
The map coordinate for which you want to find the corresponding point.
- view
The view in whose coordinate system you want to locate the specified map coordinate. If this parameter is
nil
, the returned point is specified in the window’s coordinate system. Ifview
is notnil
, it must belong to the same window as the map view.
Return Value
The point (in the appropriate view or window coordinate system) corresponding to the specified latitude and longitude value.
Discussion
Converts a map coordinate to a point in the specified view.
Declared In
MGLMapView.h
convertPoint:toCoordinateFromView:
Converts a point in the specified view’s coordinate system to a map coordinate.
- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(nullable UIView *)view
Parameters
- point
The point you want to convert.
- view
The view that serves as the reference coordinate system for the
point
parameter.
Return Value
The map coordinate at the specified point.
Discussion
Converts a point in the specified view’s coordinate system to a map coordinate.
Declared In
MGLMapView.h
dequeueReusableAnnotationImageWithIdentifier:
Returns a reusable annotation image object located by its identifier.
- (nullable MGLAnnotationImage *)dequeueReusableAnnotationImageWithIdentifier:(NSString *)identifier
Parameters
- identifier
A string identifying the annotation image to be reused. This string is the same one you specify when initially returning the annotation image object using the mapView:imageForAnnotation: method.
Return Value
An annotation image object with the specified identifier, or nil
if no such object exists in the reuse queue.
Discussion
Returns a reusable annotation image object located by its identifier.
For performance reasons, you should generally reuse MGLAnnotationImage objects for annotations in your map views. Dequeueing saves time and memory during performance-critical operations such as scrolling.
Declared In
MGLMapView.h
deselectAnnotation:animated:
Deselects the specified annotation and hides its callout view.
- (void)deselectAnnotation:(id<MGLAnnotation>)annotation animated:(BOOL)animated
Parameters
- annotation
The annotation object to deselect.
- animated
If
YES
, the callout view is animated offscreen.
Discussion
Deselects the specified annotation and hides its callout view.
Declared In
MGLMapView.h
emptyMemoryCache
Empties the in-memory tile cache.
- (void)emptyMemoryCache
Discussion
Empties the in-memory tile cache.
Declared In
MGLMapView.h
hasStyleClass:
Returns a Boolean value indicating whether the style class with the given identifier is currently active.
- (BOOL)hasStyleClass:(NSString *)styleClass
Parameters
- styleClass
The style class to query for.
Return Value
Whether the style class is currently active.
Discussion
Returns a Boolean value indicating whether the style class with the given identifier is currently active.
Declared In
MGLMapView.h
initWithFrame:
Initializes and returns a newly allocated map view with the specified frame and the default style.
- (instancetype)initWithFrame:(CGRect)frame
Parameters
- frame
The frame for the view, measured in points.
Return Value
An initialized map view.
Discussion
Initializes and returns a newly allocated map view with the specified frame and the default style.
Declared In
MGLMapView.h
initWithFrame:styleURL:
Initializes and returns a newly allocated map view with the specified frame and style URL.
- (instancetype)initWithFrame:(CGRect)frame styleURL:(nullable NSURL *)styleURL
Parameters
- frame
The frame for the view, measured in points.
- styleURL
The map style URL to use. Can be either an HTTP/HTTPS URL or a Mapbox map ID style URL (
mapbox://<user.style>
). Specifynil
for the default style.
Return Value
An initialized map view.
Discussion
Initializes and returns a newly allocated map view with the specified frame and style URL.
Declared In
MGLMapView.h
metersPerPixelAtLatitude:
Returns the distance spanned by one pixel at the specified latitude and current zoom level.
- (CLLocationDistance)metersPerPixelAtLatitude:(CLLocationDegrees)latitude
Parameters
- latitude
The latitude for which to return the value.
Return Value
The distance (in meters) spanned by a single pixel.
Discussion
Returns the distance spanned by one pixel at the specified latitude and current zoom level.
The distance between pixels decreases as the latitude approaches the poles. This relationship parallels the relationship between longitudinal coordinates at different latitudes.
Declared In
MGLMapView.h
removeAnnotation:
Removes the specified annotation object from the map view.
- (void)removeAnnotation:(id<MGLAnnotation>)annotation
Parameters
- annotation
The annotation object to remove. This object must conform to the MGLAnnotation protocol.
Discussion
Removes the specified annotation object from the map view.
Removing an annotation object disassociates it from the map view entirely, preventing it from being displayed on the map. Thus, you would typically call this method only when you want to hide or delete a given annotation.
Declared In
MGLMapView.h
removeAnnotations:
Removes an array of annotation objects from the map view.
- (void)removeAnnotations:(NSArray<id<MGLAnnotation> > *)annotations
Parameters
- annotations
The array of annotations to remove. Objects in the array must conform to the MGLAnnotation protocol.
Discussion
Removes an array of annotation objects from the map view.
Removing annotation objects disassociates them from the map view entirely, preventing them from being displayed on the map. Thus, you would typically call this method only when you want to hide or delete the specified annotations.
Declared In
MGLMapView.h
removeStyleClass:
Deactivates the style class with the given identifier.
- (void)removeStyleClass:(NSString *)styleClass
Parameters
- styleClass
The style class to deactivate.
Discussion
Deactivates the style class with the given identifier.
Declared In
MGLMapView.h
resetNorth
Resets the map rotation to a northern heading.
- (IBAction)resetNorth
Discussion
Resets the map rotation to a northern heading.
Declared In
MGLMapView.h
resetPosition
Resets the map to the minimum zoom level, a center coordinate of (0, 0), and a northern heading.
- (void)resetPosition
Discussion
Resets the map to the minimum zoom level, a center coordinate of (0, 0), and a northern heading.
Declared In
MGLMapView.h
selectAnnotation:animated:
Selects the specified annotation and displays a callout view for it.
- (void)selectAnnotation:(id<MGLAnnotation>)annotation animated:(BOOL)animated
Parameters
- annotation
The annotation object to select.
- animated
If
YES
, the callout view is animated into position.
Discussion
Selects the specified annotation and displays a callout view for it.
If the specified annotation is not onscreen, this method has no effect.
Declared In
MGLMapView.h
setCenterCoordinate:animated:
Changes the center coordinate of the map and optionally animates the change.
- (void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate animated:(BOOL)animated
Parameters
- coordinate
The new center coordinate for the map.
- animated
Specify
YES
if you want the map view to scroll to the new location orNO
if you want the map to display the new location immediately.Changing the center coordinate centers the map on the new coordinate without changing the current zoom level.
Discussion
Changes the center coordinate of the map and optionally animates the change.
Declared In
MGLMapView.h
setCenterCoordinate:zoomLevel:animated:
Changes the center coordinate and zoom level of the and optionally animates the change.
- (void)setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate zoomLevel:(double)zoomLevel animated:(BOOL)animated
Parameters
- centerCoordinate
The new center coordinate for the map.
- zoomLevel
The new zoom level for the map.
- animated
Specify
YES
if you want the map view to animate scrolling and zooming to the new location orNO
if you want the map to display the new location immediately.
Discussion
Changes the center coordinate and zoom level of the and optionally animates the change.
Declared In
MGLMapView.h
setDirection:animated:
Changes the heading of the map and optionally animates the changes.
- (void)setDirection:(CLLocationDirection)direction animated:(BOOL)animated
Parameters
- direction
The heading of the map (measured in degrees) relative to true north.
- animated
Specify
YES
if you want the map view to animate the change to the new heading orNO
if you want the map to display the new heading immediately.Changing the heading rotates the map without changing the current center coordinate or zoom level.
Discussion
Changes the heading of the map and optionally animates the changes.
Declared In
MGLMapView.h
setVisibleCoordinateBounds:animated:
Changes the receiver’s viewport to fit the given coordinate bounds, optionally animating the change.
- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds animated:(BOOL)animated
Parameters
- bounds
The bounds that the viewport will show in its entirety.
- animated
Specify
YES
to animate the change by smoothly scrolling and zooming orNO
to immediately display the given bounds.
Discussion
Changes the receiver’s viewport to fit the given coordinate bounds, optionally animating the change.
Declared In
MGLMapView.h
setVisibleCoordinateBounds:edgePadding:animated:
Changes the receiver’s viewport to fit the given coordinate bounds and optionally some additional padding on each side.
- (void)setVisibleCoordinateBounds:(MGLCoordinateBounds)bounds edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated
Parameters
- bounds
The bounds that the viewport will show in its entirety.
- insets
The minimum padding (in screen points) that will be visible around the given coordinate bounds.
- animated
Specify
YES
to animate the change by smoothly scrolling and zooming orNO
to immediately display the given bounds.
Discussion
Changes the receiver’s viewport to fit the given coordinate bounds and optionally some additional padding on each side.
Declared In
MGLMapView.h
setVisibleCoordinates:count:edgePadding:animated:
Changes the receiver’s viewport to fit all of the given coordinates and optionally some additional padding on each side.
- (void)setVisibleCoordinates:(CLLocationCoordinate2D *)coordinates count:(NSUInteger)count edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated
Parameters
- coordinates
The coordinates that the viewport will show.
- count
The number of coordinates. This number must not be greater than the number of elements in
coordinates
.
- insets
The minimum padding (in screen points) that will be visible around the given coordinate bounds.
- animated
Specify
YES
to animate the change by smoothly scrolling and zooming orNO
to immediately display the given bounds.
Discussion
Changes the receiver’s viewport to fit all of the given coordinates and optionally some additional padding on each side.
Declared In
MGLMapView.h
setZoomLevel:animated:
Changes the zoom level of the map and optionally animates the change.
- (void)setZoomLevel:(double)zoomLevel animated:(BOOL)animated
Parameters
- zoomLevel
The new zoom level for the map.
- animated
Specify
YES
if you want the map view to animate the change to the new zoom level orNO
if you want the map to display the new zoom level immediately.Changing the zoom level scales the map without changing the current center coordinate. At zoom level 0, tiles cover the entire world map; at zoom level 1, tiles cover ¼ of the world; at zoom level 2, tiles cover 1/16 of the world, and so on.
Discussion
Changes the zoom level of the map and optionally animates the change.
Declared In
MGLMapView.h
toggleDebug
Toggle the current value of debugActive.
- (void)toggleDebug
Discussion
Toggle the current value of debugActive.
Declared In
MGLMapView.h


../
Return to Admin
Nomisma: View Object
Status:
URI
Search
Actions:
Delete
Delete Record
Are you sure you want to delete this record from the Nomisma triplestore?
Yes
No


EFA enquiries
Contact form https://form.education...
For all enquiries for the Education Funding Agency
Guidance
This page relates to the 2015 to 2016 academic year. Please visit our 16 to 19 funding pages for the latest information.
Information for post-16 institutions about the transitional protection of specialist provision in 2015 to 2016
Transitional protection for specialist provision was introduced in response to a specific concern that, as a result of the high needs funding reforms, there might be a reduction in the number of students placed in specialist provision between 2013 to 2014 and 2014 to 2015 and that, in turn, might result in a loss of specialist capacity whilst the wider reforms introduced by the Children and Families Act 2014 are bedding in.
Having reviewed the current arrangements with Natspec and AoC, the Education Funding Agency (EFA) will provide an additional year of transitional protection for specialist provision, with up to £10 million available in 2015 to 2016. Although this is less than in previous years it will provide an additional year of protection for institutions whilst reducing their reliance upon it, better preparing them for when it ends in 2016 to 2017.
There are some key differences between the current published arrangements for 2014 to 2015 and how the scheme will work in 2015 to 2016. The result is a simpler set of arrangements and earlier confirmation of the amounts to be paid to each institution, enabling them to make earlier decisions about their EFA funding and provision ahead of the 2015 to 2016 academic year.
In 2015 to 2016, transitional protection funding will be paid to the special post-16 institutions (SPI) and FE institutions that received transitional protection in 2014 to 2015 and that had more than 5 local authority commissioned high needs students in that year. These institutions are listed below and are the only institutions that will receive transitional protection in 2015 to 2016.
As this is the third and final year of the scheme, institutions that did not receive the funding in 2014 to 2015 will not be eligible to receive it in 2015 to 2016. We do not want to bring institutions into scope for payment and extend reliance upon transitional protection in the final year of the scheme.
We will not require institutions to make a template return declaring the number of agreed local authority commissioned high needs places as we have done in previous years. Instead, each institution will receive 50% of the funding that it received in 2014 to 2015. The guidance on the 2014 to 2015 transitional protection scheme , and how we calculated payment amounts for that year, tells you more about this.
For special post-16 institutions, payment will be made in two equal instalments in September 2015 and January 2016. For FE institutions a single payment will be made in January 2016. This is in line with the timescales of the 2014 to 2015 arrangements. Contract documentation for 2015 to 2016 will be prepared accordingly.
We contacted all eligible institutions between Friday 13th March 2015 and Monday 16th March 2015 to confirm the payment amounts and timescales for their payments.
There will be no reconciliation at the end of the 2015 to 2016 academic year as there has been in 2013 to 2014 and will be in 2014 to 2015. This is because the payment amounts for 2015 to 2016 have been derived from the payments we have made in 2014 to 2015, as opposed to the volume of high needs students occupying places in an institution.
Institutions should consider how best to use transitional protection funding to secure the long term future of provision, supporting restructuring where that is needed to accommodate changes patterns of demand. We encourage institutions to work with Natspec and AoC to facilitate the sharing of best practice on the use of transitional protection in this third and final year.
However, there are some restrictions on the use of the fund in 2015 to 2016, as there have been in previous years namely that transitional protection cannot be used to fund the recruitment of high needs students whose placements are not supported by their home local authority. Any additional enquiries about use of funds should be directed to the appropriate EFA territorial mailbox listed below.
All EFA funding is subject to audit and may be looked at as part of a sample during routine audit activity.
| Eligible institutions for transitional protection in 2015 to 2016 |
|---|
| Abingdon and Witney College, Oxfordshire |
| Arden College (Speciality Care), Sefton |
| Bridge College, Manchester |
| Bridgwater College, Somerset |
| City College Plymouth, Plymouth |
| Condover College Limited, Shropshire |
| Derwen College, Shropshire |
| Dorton College, Kent |
| Education and Services for People with Autism Limited, Sunderland |
| Exeter Royal Academy for Deaf Education, Devon |
| Farleigh Further Education College - Frome, Somerset |
| Farleigh Further Education College - Swindon, Swindon |
| Foxes Academy Limited, Somerset |
| Freeman College, Sheffield |
| Henshaw’s College, North Yorkshire |
| Hereward College of Further Education, Coventry |
| Langdon College, Salford |
| Leicester College, Leicester |
| Linkage College, Lincolnshire |
| Lufton College of Further Education, Somerset |
| National Star College, Gloucestershire |
| Oakwood Court College, Devon |
| Pengwern College, Wales |
| Pennine Camphill Community Limited (The), Wakefield |
| Ruskin Mill College, Gloucestershire |
| Southend-on-Sea Borough Council, Southend-on-Sea |
| St John Rigby Roman Catholic Sixth Form College, Wigan |
| The David Lewis Centre, Cheshire |
| The Fortune Centre of Riding Therapy, Hampshire |
| The Mount Camphill Community Limited, East Sussex |
| The Royal National College for the Blind, Herefordshire |
| Treloar College, Hampshire |
| Walsall College, Walsall |
| Westgate College, Kent |
| Weston College, North Somerset |
| William Morris (Camphill) Community Limited, Gloucestershire |
For more information contact:
Contact form https://form.education...
For all enquiries for the Education Funding Agency


This Web client is used to serve album art extracted from local media files by the Mopidy-Local extension.
Images extracted from local media files will automatically appear here.


Target Audience
The Target Audience of the Cultural Council website are the Students of IITR, which are equal to about 8,000 under-graduate and post-graduate students. The Target audience could be divided in following groups :
- Under Graduates
- Post Graduates
- Research Scholars
- Institute Faculty
Also, we were specifically targeting the Freshers and the Sophomores in the Under graduates.
User Research
The brainstorming helped us figure out about the work we needed to do on the website but we needed data related to how much the students currently know about the cultural council and what problems do they face when they want to attend workshops or events conducted by the council.
We made a questionnaire consisting of such questions and interviewed students with different background around the campus.
Our Intention behind these interviews was to get the idea about how much do the students really knows about the cultural council and their problems related to the groups of the council so that we can solve those problems and provide the information that the student really needs and get a clear idea of the website we were making.
Questionnaire:
- Do you know about the different groups in the cultural council?
- Have you ever faced any difficulty when you are interested in attending any event conducted by the council?
- What did you do whenever two events clashed at the same time?
- Has it ever happened with you that you were unaware of an event that was held in the campus?
- Did you missed recrutments of any groups in which you wanted to get recruited?
- Are you aware of the classes held by the council for different activities?
- Can you easily contact the group’s secretaries to ask queries related to the groups?
- Are you aware of the achievements made by the cultural council?
What we need, App or Website?
IIT Roorkee being one of the best institutes of India boasts of having a rich cultural society. Having groups such as Choreography and Dance Section, Dramatic Section, Music Section etc. Competing and excelling in various cultural events, there was a need of a website to establish an online presence of the cultural council of IIT roorkee.
Plus, from user reseach we got to know about various problems people faced regarding cultural events. So to tackle this, we thought of proposing a mobile application. But later we realised we could merge both the concepts and come up with a website which could cater both the needs.
Feature Listing
After finding the solutions to the pain points and the sorting the issue of developing an app or a website, it was time where we generate ideas and solutions through repetitive sessions of brainstorming, sketching and discussions related to the development of the product.
After a few sessions, we made a feature document compiling all the features we ideated in the previous process and while solving the pain points.
Here is the compiled feature document :
Information Architecture
Information architecture (IA) is a science of organizing and structuring content of the websites, web and mobile applications, and social media software. Information architecture aims at organizing content so that users would easily adjust to the functionality of the product and could find everything they need without big effort.
We made the Information Architecture just after completing the feature doc. to get a more clear idea and so that it can help us to figure out any flaws in the website, since they are explicit.
Here is the Information Architecture of Cultural Council Website :
Wireframes
Wireframing is a way to design a website service at the structural level. A wireframe is commonly used to lay out content and functionality on a page which takes into account user needs and user journeys.
We made wireframes for both desktop view and the mobile responsive view of website. The wireframes helped us deciding the basic user interface of the website.
Here are some of the wireframes we iterated :


What is a Logarithm? A Logarithm is a quantity representing the power of which a fixed number (the base) must be raised to produce a given number.
An example of this would be, 2^5, this would equal 32. The log of this problem would be log2 16=5.
You can also solve this problem backwards by, log2 16=5 and this equals 2^5.
Back to Home


This middleware allows us to cache server responses in redis database.
The code with server side caching is implemented like this:
hunt.extendRoutes(function(core){ //code core.app.get('/time', core.cachingMiddleware(3000), function(request, response){ response.send('Current time is '+new Date()); }); //code });
Let us consider this code:
core.app.get('/getPopularPosts',function(req, res){ req.model.posts.getPopular(function(err, posts){ if(err) throw err; res.json({"posts":posts}); }); });
The `getPopular` method do not depend on current user and we can assume, that it requires a heavy database calculations. To speed up this request, we can cache this information. So when this page is rendered first time, the cache is empty, the user can experience some lags, but in future, the next requests to this endpoint will be served directly from cache, without accessing the database at all.
Also it can be wise to provide some sort of time to live for every cache record, so it will be invalidated automatically.
The key for retrevieng information from cache is URL. So, /time?a=b and /time are stored separately.
To demonstate this caching speedup, we have made this example. The frontend script will hit every 500 ms the /time endpoint.
This endpoint provides the value of current time with caching (for 3 seconds) middleware applied.


The following three attributes are cached with a window, when the
window is created.
MPI_WIN_BASEwindow base address.
MPI_WIN_SIZE window size, in bytes.
MPI_WIN_DISP_UNITdisplacement unit associated with the
window.
In C, calls to
MPI_Win_get_attr(win, MPI_WIN_BASE, &base, &flag),
MPI_Win_get_attr(win, MPI_WIN_SIZE, &size, &flag) and
MPI_Win_get_attr(win, MPI_WIN_DISP_UNIT, &disp_unit, &flag)
will return in base a pointer to the start of the window
win, and will return in size and disp_unit
pointers to the size and displacement unit of the window,
respectively. And similarly, in C++.
In Fortran, calls to MPI_WIN_GET_ATTR(win, MPI_WIN_BASE,
base, flag, ierror),
MPI_WIN_GET_ATTR(win, MPI_WIN_SIZE, size, flag, ierror) and
MPI_WIN_GET_ATTR(win, MPI_WIN_DISP_UNIT, disp_unit,
flag, ierror)
will return in base, size and disp_unit the
(integer representation of) the base address, the
size and the displacement unit of the window win, respectively.
(The window attribute access functions are defined in
Section Windows
, page Windows
.)
The other ``window attribute,'' namely the group of processes attached
to the window, can be retrieved using the call below.
| MPI_WIN_GET_GROUP(win, group) | |
| IN win | window object (handle) |
| OUT group | group of processes which share access to the window (handle) |
int MPI_Win_get_group(MPI_Win win, MPI_Group *group)
MPI_WIN_GET_GROUP(WIN, GROUP, IERROR)
INTEGER WIN, GROUP, IERROR
MPI::Group MPI::Win::Get_group() const
MPI_WIN_GET_GROUP returns a duplicate of the group of the communicator used to create the window. associated with win. The group is returned in group.


Taylor over 200 again in No. 15 Badgers’ 37-21 win over Neb
by ERIC OLSONLINCOLN, Neb. (AP) - Jonathan Taylor ran for 204 yards and two touchdowns, Aaron Cruickshank ran back a kickoff 89 yards for a score, and No. 15 Wisconsin beat Nebraska 37-21 on Saturday.
Taylor became the first Football Bowl Subdivision player since at least 2000 to run for 200 yards three times against the same team, according to Sportradar. He had 221 against the Cornhuskers last year and 249 in 2017.
The junior recorded his 11th 200-yard game, moving into a four-way tie for most in a career by an FBS player.
TOP STORIES
Justice Department clears Trump of wrongdoing on Ukraine call
Trump pardons two military service members accused of war crimes, restores rank of Navy SEAL
Attorney General Barr blasts progressives' anti-Trump 'resistance'
The Badgers (8-2, 5-2 Big Ten, No. 14 CFP) quickly erased a 14-10 deficit in the second quarter. Jack Coan threw over the middle to A.J. Taylor, who spun away from two defenders and ran the rest of the way untouched for a 55-yard touchdown. Wisconsin linebacker Jack Sanborn intercepted a tipped ball on the first play of Nebraska’s next series, and Taylor ran in from the 1 to finish a short drive that put the Badgers ahead 24-14.
The Huskers (4-6, 2-5) have lost four straight and five of their last six. They’ve dropped 10 in a row against Top 25 opponents.
Taylor averaged 8.2 yards on his 25 carries. He had his third 200-yard game of the season against a Nebraska defense that was missing starting linemen Darrion Daniels and Carlos Davis.
Early on it looked like Taylor might be outplayed by Nebraska’s Dedrick Mills. The junior college transfer who spent his freshman year at Georgia Tech ran for a career-high 188 yards and a touchdown.
Cruickshank had Wisconsin’s first kick return for a touchdown since 2015 against Maryland. It came in the first quarter, right after the Huskers had taken a 7-0 lead.
THE TAKEAWAY
Wisconsin: The Badgers beat Nebraska for the seventh straight time to retain the Freedom Trophy and kept pace with Minnesota in the West Division race. Wisconsin’s tried-and-true formula - pound the ground and mix in the occasional pass - worked the way it always does against the Huskers.
Nebraska: With Wan’Dale Robinson out because of injury, the Huskers got exactly what they needed from Mills. He had run for more than 45 yards just once in his previous six games. Martinez also let it loose as a runner after being tentative most of the season. He picked up 89 yards on 16 carries.
POLL IMPLICATIONS
Wisconsin’s workmanlike performance won’t hurt it, and the Badgers might move up depending on how teams ahead of them.
UP NEXT
Wisconsin hosts Purdue on Nov. 23.
Nebraska visits Maryland on Nov. 23.
More AP college football: https://apnews.com/Collegefootball and https://twitter.com/AP_Top25
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


Our in-depth guides focus on specific areas of the framework, such as Views, the Core framework, and Third-party Extensions.
In processing a request, the framework utilizes three key class types: Actions, Interceptors, and Results, which are configured using one or more XML documents (or Java 5 annotations).
- Tutorials - Read me first!
- Overview
- Configuration
- Localization
|
- Validation
- Type Conversion
- Interceptors
- Actions
- Results
- Portlets
- FAQs
|
The framework offers a flexible view layer that supports multiple view technologies, including JSP, FreeMaker, and Velocity.
Apache Struts 2 provides a simple
plugin architecture so that developers can extend the framework just by adding a JAR to the application's classpath. Since plugins are contained in a JAR, they are easy to share with others. Several plugins are bundled with the framework, and others are available from third-party sources.
Bundled Plugins
For a complete list of bundled and third-party plugins, visit the Plugin Registry..
Getting here from there.
Release Notes 2.1.x
Release Notes 2.0.x
Struts 1 to Struts 2
Tutorials
Roadmap
Webwork 2.2 to Struts 2
Source
Documentation
Core Guide TODOs
- Creating Resources
- Writing Validators
- Writing Type Converters
- Actions
- Writing Actions
- Writing Results
Tools
Licensing and Copyright


Hi all,
I am building a rfm12pi from the bare pcb, I have soldered everything but when I connect my usbasp programmer and try to comunicate with the board i get a target doesn't answer response, what could be the possible mistakes I am doing? I have to flash the bootloader before soldering the rfm12b module? could it be that the chip needs to be connected to a 16mhz external oscillator to be programmed the first time?
I bought this atmega
http://it.farnell.com/atmel/atmega328p-aur/mcu-8bit-atmega-20mhz-tqfp-32/dp/2425124
so I think it's an empty chip.
I have searched around but it seems that no one built the rfm12pi from the board and there are no guides about this process.
Re: Flashing optiboot bootloader to rfm12pi
You should be able to flash the bootloader with the rfm12b module in place, provided you have an external pull-up on the rfm12b's /CS signal. More on the reason for that here: http://openenergymonitor.org/emon/node/5345
Re: Flashing optiboot bootloader to rfm12pi
ok, so I have to connect a 10k or 100k resistor between the CS (stands for chip select right? ) and the vcc pins and then try to flash the bootloader?
I will try when I get back home.
Re: Flashing optiboot bootloader to rfm12pi
Yep, it's often written as /CS because it's active low. By pulling it high you're ensuring it's not active while you're trying to flash the bootloader. Once the system image is up and running you can rely on the internal s/w controlled pull-ups but until you've got some s/w down there to enable them, you're kinda' stuck.
Re: Flashing optiboot bootloader to rfm12pi
mmm tried again with the resistor but still nothing...
sudo avrdude -v -p atmega328p -c usbasp -P usb -B10
avrdude: Version 5.10, compiled on Jun 27 2010 at 00:21:42
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "/etc/avrdude.conf"
User configuration file is "/root/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : usb
Using Programmer : usbasp
Setting bit clk period : 10.0
AVR Part : ATMEGA328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 5 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768<PHONE_NUMBER> 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : usbasp
Description : USBasp, http://www.fischl.de/usbasp/
avrdude: set SCK frequency to 93750 Hz
avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
Re: Flashing optiboot bootloader to rfm12pi
How are you powering the rfm2pi during programming? Are you programming at 5v or 3.3v?
There is only one power rail on the rfm2pi which is normally 3.3v as the rfm is not 5v tolerant. that same rail is connectect to the ISCP header so you must'nt inject 5v if rfm fitted. I don't know the programmer you have can it operate at 3.3v?
Paul
Re: Flashing optiboot bootloader to rfm12pi
I think the programmer could operate only at 5v, but it has a jumper to disable the power from the programmer to the target, so I am programming the board mounted on the raspberry to power it. in the vcc pin on the rfm I read 3.3v so I think it's ok.
Re: Flashing optiboot bootloader to rfm12pi
At least the rfm is safe, I do not know the answers to these 2 questions offf-hand but I wonder
Is the rfm2pi avr @3.3v able to communicate with the programmer@5v and vice versa?
Is the reset line free to be controlled by the programmer or is it being influenced by the Pi's gpio settings?
Paul
Re: Flashing optiboot bootloader to rfm12pi
I don't know the response to the first question, I hope someone more expert could provide the answer
for the second question here http://wiki.openenergymonitor.org/index.php?title=RFM12Pi_V2#Flashing_the_Bootloader
is written:
To avoid accidental connection to 5V, the VCC pin on the ISP header is by default, disconnected. A jumper connection between the two adjacent pads must be made to connect the ISP VCC to the board VCC. On some ISP programmers, (such as the AVR MKII that I use) the VCC pin needs to be connected to initialise the programmer even though the programmer itself does not power the board. An easy way to power the board with 3.3V for programming, is to connect it onto the Pi's GPIO
so I think there should be no problems to program the bootloader with the gpio connected.
Of the reported part I don't understand the
On some ISP programmers, (such as the AVR MKII that I use) the VCC pin needs to be connected to initialise the programmer even though the programmer itself does not power the board.
I don't have an avr mkii but could it be the same problem?
Re: Flashing optiboot bootloader to rfm12pi
If you're powering the AVR at 3.3V it's important that your programmer drives the SPI pins at 3.3V. I would imagine the same is also true for the RFM module (which is also sitting on the SPI bus during all of this). Ditto for the /RESET line, both for the AVR and the Pi's GPIO signals. You really don't want 5V near any of it.
Hopefully your programmer is sensing the 3.3V on pin 2 of the 6-pin header and using that voltage to drive all the other pins. That's what Atmel's programmers do. Assuming that's the case (so you're not over-volting anything) then Paul's suggestion about a conflict on the /RESET line is a good one. You probably want to make that Pi GPIO signal an input during the programming process so that the programmer can control it unconflicted.
Re: Flashing optiboot bootloader to rfm12pi
I just noticed the link in the avrdude output to the programmer webpage and from there a link to the Readme.txt revealed this
Paul
EDIT - this will apply to that programmer, if using a derivative then it may not be relevant of course.
Re: Flashing optiboot bootloader to rfm12pi
ok, so I think that even if there are some usbasp with a voltage selector jumper mine is too much simple to do it, so it could be time to replace it for something better?
if yes, do you have a suggestion for a decent programmer without spending a lot of money? I don't use it so much to spend a lot on it.
Do you think that with the 5v programmer I have damaged the rf? the datasheet says it has maximum absolute vdd of 6V.
To avoid the possible issues with the gpio could I power the board directly with a 3.3 external power source?
Re: Flashing optiboot bootloader to rfm12pi
I've had lots of joy with Atmel's own AVRISP mkII. It's very safe when it comes to voltages. It never powers the target but rather requires you to, and then it senses what voltage you've powered your target at and uses that voltage for the programming.
It's not so much max absolute Vdd that's of concern here, but max absolute voltage on a pin... that's typically Vdd+0.5V, in other words 3.8V if you were powering the board with 3.3V. Even the AVR (which will run happily at 5V) can't cope with any pin higher than 3.8V when you're running it at 3.3V. The GPIO pin on your RPi that drives the /RESET signal was also potentially exposed.
Re: Flashing optiboot bootloader to rfm12pi
Or if you have some F-F breadboard link wires (6x) and you are willing to make some changes to avrdude, you could use the Pi as a ICSP programmer without any further expense, although not as easy as ordering a new programmer and plugging it into your existing setup but it's possible, that's what I've used in the past.
Paul
Re: Flashing optiboot bootloader to rfm12pi
ok, in the meantime I have assembled another rfm12pi without mounting the rfm module and I have successfully uploaded the bootloader.
How can I check that it's all ok before soldering the rfm module?
I have installed the low write version of emoncms on the raspberry but I had no time to open it yet.
Re: Flashing optiboot bootloader to rfm12pi
ok, I connected the new rfm12pi to the pi and it seems to be alive, but in the emonhub I have the following log:
MainThread Opening hub...
2015-10-17 14:34:14,774 INFO MainThread Logging level set to DEBUG
2015-10-17 14:34:14,776 INFO MainThread Creating EmonHubJeeInterfacer 'RFM2Pi'
2015-10-17 14:34:14,782 DEBUG MainThread Opening serial port: /dev/ttyAMA0 @ 9600 bits/s
2015-10-17 14:34:16,790 INFO MainThread RFM2Pi device firmware version: [RFM2Pi]
2015-10-17 14:34:16,793 INFO MainThread RFM2Pi device current settings:
2015-10-17 14:34:16,795 INFO MainThread Setting RFM2Pi frequency: 433 (4b)
2015-10-17 14:34:17,799 INFO MainThread Setting RFM2Pi group: 210 (210g)
2015-10-17 14:34:18,802 INFO MainThread Setting RFM2Pi quiet: 0 (0q)
2015-10-17 14:34:19,806 INFO MainThread Setting RFM2Pi baseid: 5 (5i)
2015-10-17 14:34:20,810 INFO MainThread Setting RFM2Pi calibration: 230V (1p)
2015-10-17 14:34:21,814 DEBUG MainThread Setting RFM2Pi subchannels: ['ToRFM12']
2015-10-17 14:34:21,817 DEBUG MainThread Interfacer: Subscribed to channel' : ToRFM12
2015-10-17 14:34:21,820 DEBUG MainThread Setting RFM2Pi pubchannels: ['ToEmonCMS']
2015-10-17 14:34:21,823 DEBUG MainThread Interfacer: Subscribed to channel' : ToRFM12
2015-10-17 14:34:21,827 INFO MainThread Creating EmonHubMqttInterfacer 'MQTT'
2015-10-17 14:34:21,831 INFO MainThread MQTT Init mqtt_host=<IP_ADDRESS> mqtt_port=1883
2015-10-17 14:34:21,844 DEBUG MainThread MQTT Subscribed to channel' : ToEmonCMS
2015-10-17 14:34:21,848 INFO MainThread Creating EmonHubEmoncmsHTTPInterfacer 'emoncmsorg'
2015-10-17 14:34:21,853 DEBUG MainThread emoncmsorg Subscribed to channel' : ToEmonCMS
2015-10-17 14:34:21,957 INFO MQTT Connecting to MQTT Server
2015-10-17 14:34:21,967 INFO MQTT connection status: Connection successful
2015-10-17 14:34:21,970 DEBUG MQTT CONACK => Return code: 0
2015-10-17 14:34:22,075 INFO MQTT on_subscribe
2015-10-17 14:34:23,092 DEBUG RFM2Pi acknowledged command: <nn> i - set node ID (standard node ids are 1..26)
2015-10-17 14:34:23,214 DEBUG RFM2Pi acknowledged command: <n> b - set MHz band (4 = 433, 8 = 868, 9 = 915)
2015-10-17 14:34:23,332 DEBUG RFM2Pi acknowledged command: <nnn> g - set network group (RFM12 only allows 212, 0 = any)
2015-10-17 14:34:23,455 DEBUG RFM2Pi acknowledged command: <n> c - set collect mode (advanced, normally 0)
2015-10-17 14:34:23,570 DEBUG RFM2Pi acknowledged command: ...,<nn> a - send data packet to node <nn>, with ack
2015-10-17 14:34:23,685 DEBUG RFM2Pi acknowledged command: ...,<nn> s - send data packet to node <nn>, no ack
2015-10-17 14:34:23,800 DEBUG RFM2Pi acknowledged command: <n> l - turn activity LED on DIG8 on or off
2015-10-17 14:34:24,017 DEBUG RFM2Pi device settings updated: 65 i1 g210 @ 868 MHz Lock: 1
it seems that the "Setting RFM2Pi frequency: 433 (4b)" is not working, as at the end it shows 868 MHz.
Even if I have not yet soldered the rf unit on the board it should work and set the right frequency I think.
Re: Flashing optiboot bootloader to rfm12pi
Without looking closly at the sketch and JeeLib I can't recall what would be the expected behaviour without the rfm device. The settings may not get persisted if some sort of response is required from the RFM to verify the settings.
The "acknowledged command" labelled logs are the help text being printed to serial by the RFM2Pi as it doesn't understand a command given, hopefully it is the "Setting RFM2Pi calibration: 230V (1p)" it is objecting to as this is not used outside of the emonPi and can therefore be deleted from the emonhub.conf. However as is see no responses to the first 4 settings it isn't clear if there is no response to the first 4 and then objecting to the 5th or if it is objecting to the 1st until you amend the emonhub.conf.
It maybe easier to use a serial console and give it non-rfm commands to test it like turning the led on/off etc
Having said that, I'm not sure how much more you can test, it is clearly communicating over serial so vcc, gnd, rx and tx lines seem fine, as must the reset line as you have flashed the firmware, the only stuff left can only really be tested by installing the rfm, maybe you could use some short link wires to temporarily "tack" the rfm in circuit if you are nervous.
Paul
Re: Flashing optiboot bootloader to rfm12pi
"maybe you could use some short link wires to temporarily "tack" the rfm in circuit if you are nervous."
Robin's energy diverter PCBs are laid out so that short wires are necessary to connect to the RFM module. It makes later removal very easy.
(Picture from http://www.mk2pvrouter.co.uk/)
Re: Flashing optiboot bootloader to rfm12pi
ok, so it seems that the best thing to do is to solder the rf module in a temporary way to see if with the rf it works.
I will remove th 230V (1p) line too from the emonhub config.
with the minicom serial console it seems that no commands are recognized, every key I press I receive back the help text.
reading the sketch for the rfm12pi here
https://github.com/mharizanov/RFM2Pi/blob/master/firmware/RF12_Demo_atme...
it seems that the handleInput (char c) prints the help if it receives a char that is not a number, a letter or a comma or if the letter is not a recognized command (default: showHelp();) so if I send only a number I should expect nothing back (the sketch sets the value and wait for another number or a command) but I get the help string.
Re: Flashing optiboot bootloader to rfm12pi
ok, after an upload of the new version pf the rfm12pi sketch and some soldering it seems that the second board is now working with the rf soldered in a temporary way.
Now I need to verify if it's receiving something, but my emontx v2 seems to have some problems too.
The emontx v2 build guide states that the atmega328 sold with the kit are shipped with the optiboot 4.4 bootloader, but I bought only the pcb from openenergymonitor shop as I had some atmega at home but they have the standard bootloader, I have to use the optiboot or I can keep the standard one?
Re: Flashing optiboot bootloader to rfm12pi
What do you mean by the "standard bootloader"? What is it, and how did you flash it? As far as I can tell, optiboot 4.4 is the standard bootloader if you're flashing it with the Arduino IDE.
Re: Flashing optiboot bootloader to rfm12pi
ok, I didn't know this, so I have the right bootloader!
So now I have to figure out why it's not working!
From where I can start to make some throubleshooting? yesterday I tried to put the atmega on an arduino, I flashed the blink sketch and put the atmega on the board but I just figured out that the arduino sketch have the led on the pin 13 and the emontx on the pin 9, so the led was not flashing because it was not connected to the right pin.
I will probably try to edit the sketch and try again in the evening to check at least if the chip is well powered and if it's executing the sketches on the board.
I verified the crystal too and it seems that it's working well.
Re: Flashing optiboot bootloader to rfm12pi
What are the symptoms again? I've lost track of which hardware is working and which isn't. I take it when the atmega was on the Arduino board it was flashing the LED ok?
Re: Flashing optiboot bootloader to rfm12pi
yes, the atmega on the arduino flashes the led, so it seems that the chip is working.
when I upload the emonTx_CT123_Voltage sketch, put the atmega on the emontx and power the board nothing happens, I expect it to at least power up the led as in the setup() there's digitalWrite(LEDpin, HIGH);
Re: Flashing optiboot bootloader to rfm12pi
I'm not particularly familiar with those sketches or the radio module, but it looks like it doesn't set the LED high until after it's returned from rf12_initialize(). I think your idea of running the blink LED sketch (after you've fixed the LED pin) on your emontx is a good one. Provided that works, you can focus on why emonTx_CT123_Voltage is hanging before it gets around to turning on the LED.
If your blink LED sketch doesn't work, then look at Vcc, the crystal and the /RESET signal. Sounds like you've already checked the first two, so maybe /RESET is being asserted (held low).
Re: Flashing optiboot bootloader to rfm12pi
When referring to a sketch it sometimes helps if you include a link (or location) as there are many similar named sketches, this allows the sketch to be confirmed as "the right one" and ensures all are commenting about the same sketch.
Not getting an initial flash from a RFM enabled board usually means the RF initialization has failed, this can be due to a faulty rfm or soldering etc, but the most common cause (with many sketches) is the "#define RF69_COMPAT" incorrectly set before compilation. Does the emonTx v2 have a rfm12 or rfm69 fitted?
Paul
Re: Flashing optiboot bootloader to rfm12pi
hi,
I have #define RF69_COMPAT 0 in the sketch and a rfm12 fitted
this is the sketch:
https://github.com/openenergymonitor/emonTxFirmware/blob/master/emonTxV2...
Can I try, after the simple blink sketch is working, to upload a modified version of the sketch with the two rf initialization lines commented out so I can see if the rf initialization is the problem?
I hope that the rf is not the problem, as removing it is a pain but I think that probably I will have to remove it
Re: Flashing optiboot bootloader to rfm12pi
I believe if you comment out Lines 92 & 93 and line 130 it should run, but I've not tested that theory :-)
Paul
Re: Flashing optiboot bootloader to rfm12pi
ok, so commenting out the three lines I should expect to see the led flashing at boot and the flash every a couple of seconds right?
Valerio
Re: Flashing optiboot bootloader to rfm12pi
The LED will come on after it has initialised the radio module (or skipped that if commented out) and then go out after the first sample has been or would have been sent. Then the LED should flash every 5.2 s approximately (= 5 s sleep time + the sample duration).
You will need an ac voltage input, otherwise calcVI( ) will not run properly as it will not have an ac wave to time itself with. Therefore, your voltage input pin must be correct.
It will not affect your problem, but with the latest emonLib, you no longer need "settled" and the wait for the filters to settle.
Re: Flashing optiboot bootloader to rfm12pi
ok, I will remember to connect the ac voltage input!
eventually there's a simple way to desolder the rf unit?
Re: Flashing optiboot bootloader to rfm12pi
I have done all the tests above and the board seems to hang on
rf12_initialize(nodeID, RF_freq, networkGroup);
Re: Flashing optiboot bootloader to rfm12pi
I would not advise de-soldering the RF Module without a hot air gun - it is tricky to get off without lifting a pad or two in the process.
There is more debugging of the module in situ that can be done if you have access to a scope.
Re: Flashing optiboot bootloader to rfm12pi
If you have a multi-meter you could check the vdd and grounds to the rfm and check for any shorts to neighboring pins etc (assuming nothing can be seen with a magnifying glass eg whiskers of solderetc)
Also is the rfm board orientated correctly? may seem daft but unfortunately it wouldn't be the first time one has been fitted 180° out!
Paul
Re: Flashing optiboot bootloader to rfm12pi
I checked the shorts on the neighbor pins immediately after soldering the rfm and are ok, I checked ground and vdd pins (the two near the antenna pin) when I made the power check as written on the building guide and the rfm is correctly receiving 3.3v. I checked the module orientation too following the datasheet and the building guide so I think those issues could be excluded, anyway I will make all the checks again just to be sure.
http://openenergymonitor.org/emon/emontx/make/assemble/buildguide22
I have a scope but I am not so familiar with this instrument, so I will try the debugging in emjay's post and use this as a learning experience on how to use the scope.
I attached a photo of the mounted module so you can check the orientation too
Re: Flashing optiboot bootloader to rfm12pi
And just for fun and documentation here is a picture of the temporary soldered rfm on the rfm12pi to test everything some days ago.
Re: Flashing optiboot bootloader to rfm12pi
the only thing I don't understand well in this post
http://jeelabs.net/boards/6/topics/1672?r=1735#message-1735
is where I have to put the "magic button". Now I am powering the board from the batt pins with a 3.3v regulated source so as far as I know I am not using the internal voltage regulator (is that what in the post is called LDO right?) so I can avoid using the button and simply plug and unplug the power to the board?
Re: Flashing optiboot bootloader to rfm12pi
Sorry, that part of the debug instructions is aimed at a JeeNode (a similar design and layout). This has an 3.3V LDO in the supply for both MPU and RFM that has current foldover protection. The "magic button" is a way to get glitchless control of this supply rail.
You really need a similar "clean" way to apply power to get the Power-on-Reset function of both chips to run successfully - there are restrictions on minimum rate of change of the voltage ramp. Simple plug/unplug is generally too "noisy" a method.
Perhaps some more detail on what is happening. If the RFM gets through its internal Power-on-Reset function, it generates a clock output (CLK pin) preset to 1 MHz, derived from the onboard crystal, . This does not require any external set up through the SPI. Getting this clock is a good sign of RFM health, it's absence suggests either very basic wiring errors (which you have eliminated) or a fried RFM.
Once the rf12 driver initialisation code is allowed to run, as part of the general register set configuration,
the CLK frequency is changed to 1.67 MHz. This requires SPI transactions to succeed - which is where you look stuck at.Later, to save power since CLK is not used, the CLK pin output is disabled.
Edited: the frequency change is now done after the CLK pin is disabled, so no longer visible on the scope. The controlled disappearance of the CLK signal is still a good indicator that SPI transactions to the module are succeeding.
Re: Flashing optiboot bootloader to rfm12pi
so given that I have a variable power source, could I start from minimum power (probably not enough to power the board) and progressively increase the voltage up to 3.3V so the rf module will power up when it will have enough power?
or could I wire the "magic button" between the gnd and v+ of the supply?
I have one of these cheap power supplies: https://www.youtube.com/watch?v=4H6iwiPIaJI (not specifically the same but something similar)
Re: Flashing optiboot bootloader to rfm12pi
I uploaded a modified version of the sketch with a delay(10000) before the rf12_initialize(nodeID, RF_freq, networkGroup); to have some time to read the CLK before the initialization.
when I power up the board (raising the current limitation on the power source) I get the 1Mhz square on the CLK pin (the attached pic) but then when I get to the rf_initialize the CLK returns to 0 and remains there... what I have to check now? in the post linked it says:
No CLK change to 1.66MHz implies the RFM12B has failed software set up.
Suspect the SPI bus (connections and loading from other attached devices), any code that manipulates directly or indirectly the SPI bus.
but I don't know what to do... :(
Re: Flashing optiboot bootloader to rfm12pi
Well the good news is your RF module is responding to SPI commands. I've scanned the current driver code and the CLK disable is now done before the change to 1.67MHz (which of course will no longer be visible). But at least the CLK disable was done, so nothing much wrong with SPI transactions.
I'm afraid at this stage it will take stepping through the driver code to see where the hang occurs. Since the driver is a mix of base level and interrupt level code, it is not advisable to use the standard printf() tracing. You can do direct writes to spare I/O pins though for tell-tale LED's.
Anything odd about the IRQ/INT line? The driver can't get very far without the RF Module free to pull this down.
Re: Flashing optiboot bootloader to rfm12pi
Yes, at least it's not completely dead!
I checked all the connections from the rf and the atmega, and all the rf used pins (SEL, SCK, SDI, SDO, IRQ) are connected to the right atmega's pins and there are no adjacent rf lines shorted together, so IRQ line seems ok.
I can check the IRQ line behaviour with the scope next time, what I should expect it to do?
If the IRQ line is not the problem how could I proceed? I know that it's a 5€ component and that could be cheaper to replace it with a new one but I'm here to learn, so if someone could help me I'm happy to proceed with some more debugging.
Re: Flashing optiboot bootloader to rfm12pi
Ok, time to take the covers off the driver code. Pull down the most recent version of the source and look for the rf12_initialize() entry.
As I mentioned above, direct writes to spare I/O pins with tell-tale LED's are best to mark your progress through the code. Some hints here.
Re: Flashing optiboot bootloader to rfm12pi
could I use the emontx internal led?
I can put in RF12.cpp a code block like
digitalWrite(9, 1);
delay(200);
digitalWrite(9, 0);
delay(200);
every a couple instructions on rf12_initialize and count the flashes before it gets stuck, then I can isolate a narrower set of instructions (from the first after the last blink to the one before the next blink) and move the blinks between these instructions to drill down to the one that is blocking the driver?
Or the delay instructions could affect in some way the execution?
to modify the code I have only to modify the RF12.cpp file in the lib and it will be automatically uploaded when I upload the sketch to the atmega?
Re: Flashing optiboot bootloader to rfm12pi
"to modify the code I have only to modify the RF12.cpp file in the lib and it will be automatically uploaded when I upload the sketch to the atmega?"
No, that is not enough. The IDE loads and keeps the library in memory. You must close ALL instances and windows of the IDE, and then restart it.
Re: Flashing optiboot bootloader to rfm12pi
ok, I will try and report here what I discovered! thanks for the hints
Re: Flashing optiboot bootloader to rfm12pi
Unless you put them to sleep (which is fairly hard to do accidentally) these AVR processors never really hang... they'll always be executing something. The SPI bus has no concept of acknowledgement so even if a SPI device is totally unresponsive, the CPU won't hang... it'll just get back garbage (usually the pull-ups) from any SPI reads and SPI writes will be silently ignored.
So when looking for hangs, you're almost always looking for software loops that don't terminate (or maybe IRQs that won't clear). A very quick perusal of rf12_initialize() here: https://github.com/jcw/jeelib/blob/master/RF12.cpp#L622 makes me think there's only one opportunity for that routine to never return and that's this loop:
So putting your scope on the RFM_IRQ pin would probably be a good starting point. If it remains permanently low, then that loop will run forever.
Re: Flashing optiboot bootloader to rfm12pi
ok, I made some experiments and now more or less magically the initialization works, but now I have problems later on the
rf12_sendWait(2)
I modified the codein this way:
void rf12_sendWait (uint8_t mode) {
// wait for packet to actually finish sending
// go into low power mode, as interrupts are going to come in very soon
digitalWrite(9, 1); delay(1000); digitalWrite(9, 0);delay(100);
while (rxstate != TXIDLE)
digitalWrite(9, 1); delay(1000); digitalWrite(9, 0);delay(200);
if (mode) {
// power down mode is only possible if the fuses are set to start
// up in 258 clock cycles, i.e. approx 4 us - else must use standby!
// modes 2 and higher may lose a few clock timer ticks
set_sleep_mode(mode == 3 ? SLEEP_MODE_PWR_DOWN :
#ifdef SLEEP_MODE_STANDBY
mode == 2 ? SLEEP_MODE_STANDBY :
#endif
SLEEP_MODE_IDLE);
digitalWrite(9, HIGH);
sleep_mode();
}
digitalWrite(9, LOW);
delay(200);
}
and I have another led blink on emontx_lib just after rf12_sendWait(2);
I can see that while executing the sleep_mode(); line the led is on for about 5-6 seconds, the the led goes off and the program stops responding (the led doesn't blink as written in the emontx_lib and to upload a new sketch I have to disconnect the power).
At this point I really don't know where the execution goes, it doesn't continue to cycle as it doesn't execute the 1000ms blink at the start of the cycle, and it doesn't exits from the sendWait function as the next blink after the call to this function is not esecuted. The only point where it could be it's the rxstate != TXIDLE check, am I right? it makes the check the first time, enters in the loop, completes it in about 5 seconds, then it tests the while condition rxstate != TXIDLE for the second time and gets blocked there?
Re: Flashing optiboot bootloader to rfm12pi
I think you're going to need some more curly brackets. The code used to do something like:
but you've changed it to:
But even after you've fixed that error, judging by the comments in the original code, I'd guess your delays are going to significantly change the behaviour of the code.
Re: Flashing optiboot bootloader to rfm12pi
yes, you're right, I missed the brackets, probably because I program for work and me and my team as a best practice always include the brackets even if, like in this case, them are not so needed.
I agree that the delays could change the behaviour of the code, so I will try to avoid them in some way, I don't yet know how, but I will think to something to avoid delays at least in the while loop.
Re: Flashing optiboot bootloader to rfm12pi
ok, everything now seems ok, I removed the delays and all the led flashing I added to the code, so now I have the led flashing every 5 seconds, the problems now is that the rfm12pi doesn't seem to receive any data... i should get the data in the emonhub logs right?
how could I try to know if the rf are working properly?
Re: Flashing optiboot bootloader to rfm12pi
I updated the rfm12pi firmware to the last with git pull and the command update-RFM12 in the RFM2PI directory of my pi but it didn't resolved. is that the right firmware for my setup?
at startup in my emonhub.log I have a lot of these:
2015-10-26 20:24:02,893 DEBUG RFM2Pi 1 NEW FRAME : OK 0
2015-10-26 20:24:02,894 WARNING RFM2Pi 1 Discarded RX frame 'string too short' : []
2015-10-26 20:24:02,905 INFO MQTT on_subscribe
2015-10-26 20:24:02,995 DEBUG RFM2Pi 2 NEW FRAME : OK 0
2015-10-26 20:24:02,996 WARNING RFM2Pi 2 Discarded RX frame 'string too short' : []
2015-10-26 20:24:03,097 DEBUG RFM2Pi 3 NEW FRAME : OK 0
2015-10-26 20:24:03,098 WARNING RFM2Pi 3 Discarded RX frame 'string too short' : []
2015-10-26 20:24:03,199 DEBUG RFM2Pi 4 NEW FRAME : OK 0
2015-10-26 20:24:03,200 WARNING RFM2Pi 4 Discarded RX frame 'string too short' : []
and then nothing else from the RFM2PI
Re: Flashing optiboot bootloader to rfm12pi
Does the led on the rfm2pi flash when the emonTx led flashes to indicate receipt?
Is the emonTx and rfm2pi in the same group (usually 210 by default) ?
Is the emonhub loglevel set to debug? can you post the log entries for the rfm2pi interfacer setting up? it may be easier to resatrt emonhub using sudo service emonhub restart rather than scanning the file,
Paul
Re: Flashing optiboot bootloader to rfm12pi
no, the rfm2pi led is off, it flashes only a couple of times during the emonhub initialization
emontx and rfm2pi are on the same group (210 as default)
the log level is set to debug as you can see in the startup log.
here is the startup from the log file:
2015-10-27 06:39:38,682 INFO MainThread EmonHub Pre-Release Development Version (rc2.0?)
2015-10-27 06:39:38,683 INFO MainThread Opening hub...
2015-10-27 06:39:38,684 INFO MainThread Logging level set to DEBUG
2015-10-27 06:39:38,685 INFO MainThread Creating EmonHubJeeInterfacer 'RFM2Pi'
2015-10-27 06:39:38,688 DEBUG MainThread Opening serial port: /dev/ttyAMA0 @ 38400 bits/s
2015-10-27 06:39:40,694 INFO MainThread RFM2Pi device firmware version: [RF12demo.12]
2015-10-27 06:39:40,695 INFO MainThread RFM2Pi device current settings: E i5 g210 @ 433 MHz
2015-10-27 06:39:40,696 INFO MainThread Setting RFM2Pi quiet: 0 (0q)
2015-10-27 06:39:41,699 INFO MainThread Setting RFM2Pi calibration: 230V (1p)
2015-10-27 06:39:42,701 DEBUG MainThread Setting RFM2Pi subchannels: ['ToRFM12']
2015-10-27 06:39:42,703 DEBUG MainThread Interfacer: Subscribed to channel' : ToRFM12
2015-10-27 06:39:42,705 DEBUG MainThread Setting RFM2Pi pubchannels: ['ToEmonCMS']
2015-10-27 06:39:42,707 DEBUG MainThread Interfacer: Subscribed to channel' : ToRFM12
2015-10-27 06:39:42,712 INFO MainThread Creating EmonHubMqttInterfacer 'MQTT'
2015-10-27 06:39:42,714 DEBUG RFM2Pi acknowledged command: > 0q
2015-10-27 06:39:42,717 INFO MainThread MQTT Init mqtt_host=<IP_ADDRESS> mqtt_port=1883
2015-10-27 06:39:42,724 DEBUG MainThread MQTT Subscribed to channel' : ToEmonCMS
2015-10-27 06:39:42,726 INFO MainThread Creating EmonHubEmoncmsHTTPInterfacer 'emoncmsorg'
2015-10-27 06:39:42,729 DEBUG MainThread emoncmsorg Subscribed to channel' : ToEmonCMS
2015-10-27 06:39:42,821 DEBUG RFM2Pi device settings updated: E i5 g210 @ 433 MHz
2015-10-27 06:39:42,827 INFO MQTT Connecting to MQTT Server
2015-10-27 06:39:42,832 INFO MQTT connection status: Connection successful
2015-10-27 06:39:42,834 DEBUG MQTT CONACK => Return code: 0
2015-10-27 06:39:42,923 DEBUG RFM2Pi 1 NEW FRAME : OK 0
2015-10-27 06:39:42,924 WARNING RFM2Pi 1 Discarded RX frame 'string too short' : []
2015-10-27 06:39:42,936 INFO MQTT on_subscribe
2015-10-27 06:39:43,025 DEBUG RFM2Pi 2 NEW FRAME : OK 0
2015-10-27 06:39:43,026 WARNING RFM2Pi 2 Discarded RX frame 'string too short' : []
2015-10-27 06:39:43,128 DEBUG RFM2Pi 3 NEW FRAME : OK 0
2015-10-27 06:39:43,129 WARNING RFM2Pi 3 Discarded RX frame 'string too short' : []
2015-10-27 06:39:43,231 DEBUG RFM2Pi 4 NEW FRAME : OK 0
2015-10-27 06:39:43,232 WARNING RFM2Pi 4 Discarded RX frame 'string too short' : []
2015-10-27 06:39:43,333 DEBUG RFM2Pi 5 NEW FRAME : OK 0
2015-10-27 06:39:43,334 WARNING RFM2Pi 5 Discarded RX frame 'string too short' : []
2015-10-27 06:39:43,436 DEBUG RFM2Pi 6 NEW FRAME : OK 0
2015-10-27 06:39:43,437 WARNING RFM2Pi 6 Discarded RX frame 'string too short' : []
2015-10-27 06:39:43,539 DEBUG RFM2Pi 7 NEW FRAME : OK 0
2015-10-27 06:39:43,540 WARNING RFM2Pi 7 Discarded RX frame 'string too short' : []
2015-10-27 06:39:43,663 DEBUG RFM2Pi 8 NEW FRAME : OK 0
2015-10-27 06:39:43,664 WARNING RFM2Pi 8 Discarded RX frame 'string too short' : []
2015-10-27 06:39:43,765 DEBUG RFM2Pi acknowledged command: > 1p
2015-10-27 06:39:44,118 DEBUG RFM2Pi acknowledged command: <nn> i - set node ID (standard node ids are 1..30)
2015-10-27 06:39:44,224 DEBUG RFM2Pi acknowledged command: <n> b - set MHz band (4 = 433, 8 = 868, 9 = 915)
2015-10-27 06:39:44,344 DEBUG RFM2Pi acknowledged command: <nnnn> o - change frequency offset within the band (default 1600)
2015-10-27 06:39:44,571 DEBUG RFM2Pi acknowledged command: <nnn> g - set network group (RFM12 only allows 212, 0 = any)
2015-10-27 06:39:44,676 DEBUG RFM2Pi acknowledged command: <n> c - set collect mode (advanced, normally 0)
2015-10-27 06:39:44,901 DEBUG RFM2Pi acknowledged command: ...,<nn> a - send data packet to node <nn>, request ack
2015-10-27 06:39:45,022 DEBUG RFM2Pi acknowledged command: ...,<nn> s - send data packet to node <nn>, no ack
2015-10-27 06:39:45,128 DEBUG RFM2Pi acknowledged command: <n> q - set quiet mode (1 = don't report bad packets)
2015-10-27 06:39:45,249 DEBUG RFM2Pi acknowledged command: <n> x - set reporting format (0: decimal, 1: hex, 2: hex+ascii)
2015-10-27 06:39:45,577 DEBUG RFM2Pi acknowledged command: <hchi>,<hclo>,<addr>,<cmd> f - FS20 command (868 MHz)
2015-10-27 06:39:45,700 DEBUG RFM2Pi acknowledged command: <addr>,<dev>,<on> k - KAKU command (433 MHz)
2015-10-27 06:39:45,924 DEBUG RFM2Pi device settings updated: E i5 g210 @ 433 MHz
2015-10-27 06:39:46,026 DEBUG RFM2Pi 15 NEW FRAME : OK 0
2015-10-27 06:39:46,026 WARNING RFM2Pi 15 Discarded RX frame 'string too short' : []
2015-10-27 06:39:46,148 DEBUG RFM2Pi 16 NEW FRAME : OK 0
2015-10-27 06:39:46,149 WARNING RFM2Pi 16 Discarded RX frame 'string too short' : []
2015-10-27 06:39:46,251 DEBUG RFM2Pi 17 NEW FRAME : OK 0
2015-10-27 06:39:46,252 WARNING RFM2Pi 17 Discarded RX frame 'string too short' : []
2015-10-27 06:39:46,375 DEBUG RFM2Pi 18 NEW FRAME : OK 0
2015-10-27 06:39:46,376 WARNING RFM2Pi 18 Discarded RX frame 'string too short' : []
2015-10-27 06:39:46,478 DEBUG RFM2Pi 19 NEW FRAME : OK 0
2015-10-27 06:39:46,479 WARNING RFM2Pi 19 Discarded RX frame 'string too short' : []
2015-10-27 06:39:46,601 DEBUG RFM2Pi 20 NEW FRAME : OK 0
2015-10-27 06:39:46,603 WARNING RFM2Pi 20 Discarded RX frame 'string too short' : []
2015-10-27 06:39:46,704 DEBUG RFM2Pi 21 NEW FRAME : OK 0
2015-10-27 06:39:46,705 WARNING RFM2Pi 21 Discarded RX frame 'string too short' : []
2015-10-27 06:39:46,828 DEBUG RFM2Pi 22 NEW FRAME : OK 0
2015-10-27 06:39:46,829 WARNING RFM2Pi 22 Discarded RX frame 'string too short' : []
2015-10-27 06:39:46,931 DEBUG RFM2Pi 23 NEW FRAME : OK 0
2015-10-27 06:39:46,932 WARNING RFM2Pi 23 Discarded RX frame 'string too short' : []
2015-10-27 06:39:47,055 DEBUG RFM2Pi 24 NEW FRAME : OK 0
2015-10-27 06:39:47,056 WARNING RFM2Pi 24 Discarded RX frame 'string too short' : []
2015-10-27 06:40:12,788 INFO emoncmsorg sending: http://emoncms.org/input/bulk.json?apikey=E-M-O-N-C-M-S-A-P-I-K-E-Y&data=[]&sentat=1445928012
2015-10-27 06:40:12,924 DEBUG emoncmsorg acknowledged receipt with 'ok' from http://emoncms.org
2015-10-27 06:40:42,729 INFO emoncmsorg sending: http://emoncms.org/myip/set.json?apikey=E-M-O-N-C-M-S-A-P-I-K-E-Y
2015-10-27 06:40:42,944 INFO emoncmsorg sending: http://emoncms.org/input/bulk.json?apikey=E-M-O-N-C-M-S-A-P-I-K-E-Y&data=[]&sentat=1445928042
2015-10-27 06:40:43,098 DEBUG emoncmsorg acknowledged receipt with 'ok' from http://emoncms.org
and then it follows sending empty data to emoncms.org every 30 seconds
Re: Flashing optiboot bootloader to rfm12pi
another consideration:
I made the antennas from an old ethernet cable with solid cores, and the antenna length is 165mm as I am using 433mhz modules, is this correct?
I'm also looking for a better avr programmer (for this and for future projects) but I found out that the avrisp mkII suggested by dbc some days ago seems to be no longer produced by atmel, could it be one of these clones a valid alternative? are them real clones of the original one with the same circuits and the same behaviour?
http://www.ebay.it/itm/Atmel-AT-AVRISP-AVR-ISP-mkII-In-System-Programmer...
It seems that atmel is now producing the atmel ice as a replacement of the avrisp mkII:
http://www.ebay.it/itm/ATATMEL-ICE-PCBA-debuger-Atmel-Ice-/111807273158?
I should go for the rock solid avrisp mkII (even if a chinese clone if the design is the same it seems a good programmer) or the new genuine atmel ice? the price for the two listings seems almost the same( some € more the ice)
Re: Flashing optiboot bootloader to rfm12pi
I don't think the antenna should be a problem, a single solid core ~165mm sounds ok and I would presume during this debugging stage you would be testing the devices side by side, so it would need to be very "wrong" for a packet not to make it.
Can you use a serial console to check the actual serial traffic, there appears to be good comms between emonhub and the rfm2pi firmware since emonhub has displayed the firmware version and settings, unfortunatly almost all the firmwares have the same version so it doesn't confirm which firmware you are using.
It's unusual for empty packets to be processed,at all, without a received packet the rfm2pi shouldn't send anything, so I'm inclined to think it may be emonhub mis-parsing the data but I'm not familiar enough with the emon-pi version to be sure either way and the lack of an led flash on the rfm2pi contradicts that,
Paul
Re: Flashing optiboot bootloader to rfm12pi
yes the pi and frm2pi are talking, as with minicom I can talk with the module, but it's not showing incoming packets when the emontx transmits, I tried to modify the group to 0 but nothing.
the Discarded RX frame 'string too short' : [] logs are displayed only at emonhub startup, then nothing except the emoncmsorg sending: http://emoncms.org... logs every 30 seconds.
The firmware I am using is the one that gets selected with the update-RFM12 script in the RFM2PI directory of the sdCard image so it should be the following (I Haven't the raspberry here to check that the repository is the right one)
https://github.com/openenergymonitor/RFM2Pi/tree/master/firmware/RFM69CW...
and the hex loaded by the script is the RFM12_Demo_ATmega328.cpp.hex
the station and base are on the same room at about 1 meter, I tried to put the rasp on the near room but it's the same.


Online Sports Communities
A concept for supporting the user’s participation in team sports
Kephas Nguyen
menu
close
Introduction
Theory
Research
Conception
Prototyping
Evaluation
Conclusion
Appendix


See: Description
| Interface | Description |
|---|---|
| IRouterConnectionHandler | |
| IRouterConnectionService | |
| IRouterGroupHandler | |
| IRouterGroupService | |
| RouterConnectionClient.ConnectionHandler |
ConnectionHandler exposes client side async messaging one-way AIDL api to allow ConnectionService call back to
notify events such as network attachment and detachment, device connection and disconnection.
|
| RouterGroupClient.GroupHandler |
GroupHandler exposes client side async messaging one-way AIDL api to allow GroupService notify
events such as peer devices joining group, peer devices leaving a group or receiving a message.
|
| Class | Description |
|---|---|
| BuildConfig | |
| DeviceInfo |
Info of a device in peer-peer network:
its name, address and port number.
|
| IRouterConnectionHandler.Stub |
Local-side IPC implementation stub class.
|
| IRouterConnectionService.Stub |
Local-side IPC implementation stub class.
|
| IRouterGroupHandler.Stub |
Local-side IPC implementation stub class.
|
| IRouterGroupService.Stub |
Local-side IPC implementation stub class.
|
| NetInfo |
Info of the network connecting peer devices: its type (wifi, hotspot, ...),
name (SSID,...), encrypt password, interface name, support multicast or not, etc.
|
| Router |
Messaging api for clients to communicate with Router services using intents
and messenger.
|
| Router.ConnFailureCode |
Reasons why peer device connections failed.
|
| Router.Intent |
Intenting api allows clients communicate with Router services using intents;
clients will send intents/messages to Router services by calling startService() and
received intents/messages from Router services by registering BroadcastReceivers.
|
| Router.MsgId |
Messenger api allows clients communicate with Router services using
"Messenger" design pattern with messages identified by message ids;
clients will use a messenger to send messages to Router services and
register another messenger to receive messages from Router services;
there is 1-1 correspondence between intent names and message ids.
|
| Router.MsgKey |
key names for indexing data items in message bundle.
|
| RouterConnectionClient |
RouterConnectionClient wrapper class is the preferred way to access the asynchronous one-way AIDL api of Router Connection Service.
|
| RouterGroupClient |
RouterGroupClient wrapper class is the preferred way to access the asynchronous one-way AIDL api of Router Group Service.
|
PeerDeviceNet APIs provides asynchronous messaging interfaces between clients and Router services (Connection Service and Group Service). Router services will expose their APIs as asynchronous messages (or one-way AIDL methods). Similarly clients will provide async messaging (or one-way AIDL methods) APIs to allow Router services to call back or notify clients for events such as network attachment and detachment, peer device connection and disconnection.
Both runtime/Router and api have been published as two jar/aar files at Maven Central. You can download the latest jars from MavenCentral Site, or grab via Maven or gradle as following:
These asynchronous messaging apis between clients and Router services can be accessed in three ways:
Router.Intent
class and "extra" data keys at
Router.MsgKey
class which you get when you add the client jar file
to your project.
RouterConnectionClient
and RouterGroupClient
. These wrapper classes also handle
some common book-keeping for you. There is also DeviceInfo
class and
NetInfo
class used at aidl apis which defines information about devices and
networks.
Router.MsgId
class and message data keys at
Router.MsgKey
class.


dygraphs is purely client-side JavaScript. It does not send your data to any servers – the data is processed entirely in the client's browser.
dygraphs is available under the MIT license, included in LICENSE.txt.


Topological Data Analysis using Mapper (discrete Morse theory). Generate a 1-dimensional simplicial complex from a filter function defined on the data: 1. Define a filter function (lens) on the data. 2. Perform clustering within within each level set and generate one node (vertex) for each cluster. 3. For each pair of clusters in adjacent level sets with a nonempty intersection, generate one edge between vertices. The function mapper1D uses a filter function with codomain R, while the the function mapper2D uses a filter function with codomain R^2.
| Version: | 1.0 |
| Depends: | R (≥ 3.1.2) |
| Suggests: | fastcluster, igraph |
| Published: | 2015-05-31 |
| Author: | Paul Pearson [aut, cre, trl], Daniel Muellner [aut, ctb], Gurjeet Singh [aut, ctb] |
| Maintainer: | Paul Pearson <pearsonp at hope.edu> |
| BugReports: | https://github.com/paultpearson/TDAmapper/issues |
| License: | GPL-3 |
| URL: | https://github.com/paultpearson/TDAmapper/ |
| NeedsCompilation: | no |
| Materials: | README |
| CRAN checks: | TDAmapper results |
| Reference manual: | TDAmapper.pdf |
| Package source: | TDAmapper_1.0.tar.gz |
| Windows binaries: | r-devel: TDAmapper_1.0.zip, r-release: TDAmapper_1.0.zip, r-oldrel: TDAmapper_1.0.zip |
| OS X binaries: | r-release: TDAmapper_1.0.tgz, r-oldrel: TDAmapper_1.0.tgz |
Please use the canonical form https://CRAN.R-project.org/package=TDAmapper to link to this page.


ModelerToolbox.jl docs¶ Welcome to the docs, I'll try to keep this simple. ModelerToolbox.jl docs JLD tools


An experiment on viewing Capella architecture diagram in WebVR with A-Frame, especially to display allocation mapping.


--- layout: post title: Toujours là description: animatic storyboard for QUICK date: '2019-07-27 10:10:12 +0100' categories: - Storyboards - Animation ---
QUICK, Toujours là storyboard, directed by Fred De Loof, produced by BIG PRODUCTION SAS.


There is Something profoundly satisying about sharing a meal.Eating together, breaking bread together, is one of the oldest and most fundamentally unifying of human experiences.
There is Something profoundly satisying about sharing a meal. Eating together, breaking bread together, is one of the oldest and most fundamentally unifying of human experiences.
There is Something profoundly satisying about sharing a meal. Eating together, breaking bread together, is one of the oldest and most fundamentally unifying of human experiences.